@@ -550,19 +550,57 @@ class TouchChatProcessor extends BaseProcessor {
550550 // console.log('No navigation actions found:', e);
551551 }
552552
553- // Try to load root ID from metadata, fallback to first page
553+ // Try to load root ID from multiple sources in order of priority
554554 try {
555- const metadataQuery = "SELECT value FROM tree_metadata WHERE key = 'rootId'" ;
556- const rootIdRow = db . prepare ( metadataQuery ) . get ( ) as { value : string } | undefined ;
557- if ( rootIdRow && tree . getPage ( rootIdRow . value ) ) {
558- tree . rootId = rootIdRow . value ;
559- } else if ( rootPageId ) {
555+ // First, try to get HOME page from special_pages table (TouchChat specific)
556+ const specialPagesQuery = "SELECT page_id FROM special_pages WHERE name = 'HOME'" ;
557+ const homePageRow = db . prepare ( specialPagesQuery ) . get ( ) as { page_id : number } | undefined ;
558+
559+ if ( homePageRow ) {
560+ // The page_id is the page's id (not resource_id), need to get the RID
561+ const homePageIdQuery = `
562+ SELECT p.id, r.rid
563+ FROM pages p
564+ JOIN resources r ON r.id = p.resource_id
565+ WHERE p.id = ?
566+ LIMIT 1
567+ ` ;
568+ const homePage = db . prepare ( homePageIdQuery ) . get ( homePageRow . page_id ) as
569+ | {
570+ id : number ;
571+ rid ?: string ;
572+ }
573+ | undefined ;
574+
575+ if ( homePage ) {
576+ const homePageUUID = homePage . rid || String ( homePage . id ) ;
577+ if ( tree . getPage ( homePageUUID ) ) {
578+ tree . rootId = homePageUUID ;
579+ tree . metadata . defaultHomePageId = homePageUUID ;
580+ }
581+ }
582+ }
583+
584+ // If no HOME page found, try tree_metadata table (general fallback)
585+ if ( ! tree . rootId ) {
586+ const metadataQuery = "SELECT value FROM tree_metadata WHERE key = 'rootId'" ;
587+ const rootIdRow = db . prepare ( metadataQuery ) . get ( ) as { value : string } | undefined ;
588+ if ( rootIdRow && tree . getPage ( rootIdRow . value ) ) {
589+ tree . rootId = rootIdRow . value ;
590+ tree . metadata . defaultHomePageId = rootIdRow . value ;
591+ }
592+ }
593+
594+ // Final fallback: first page
595+ if ( ! tree . rootId && rootPageId ) {
560596 tree . rootId = rootPageId ;
597+ tree . metadata . defaultHomePageId = rootPageId ;
561598 }
562599 } catch ( e ) {
563- // No metadata table, use first page as root
600+ // No metadata table or other error , use first page as root
564601 if ( rootPageId ) {
565602 tree . rootId = rootPageId ;
603+ tree . metadata . defaultHomePageId = rootPageId ;
566604 }
567605 }
568606
0 commit comments