Skip to content

Commit 5be97e1

Browse files
committed
update finding home page for TouchChat
1 parent 7f5b0cb commit 5be97e1

1 file changed

Lines changed: 45 additions & 7 deletions

File tree

src/processors/touchchatProcessor.ts

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)