From 0830a5309ba146a1a1bda7a6e30ed7b8fa239ade Mon Sep 17 00:00:00 2001 From: Mike DiDomizio Date: Sat, 8 Feb 2025 14:30:07 -0500 Subject: [PATCH 1/3] Fix where Chrome Other bookmarks is not id 2 --- bookmark/BuiltinBookmark.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/bookmark/BuiltinBookmark.js b/bookmark/BuiltinBookmark.js index f2db663..5b441b6 100644 --- a/bookmark/BuiltinBookmark.js +++ b/bookmark/BuiltinBookmark.js @@ -17,8 +17,11 @@ export class BuiltinBookmark this.#createMappingFor( await this.#getBookmarkNameFrom(this.#getNodeIdForBookmarksBar()), "${BOOKMARKS_BAR}"); + + const nodeId = await this.#getNodeIdForBookmarksMenu() + this.#createMappingFor( - await this.#getBookmarkNameFrom(this.#getNodeIdForBookmarksMenu()), + await this.#getBookmarkNameFrom(nodeId), "${BOOKMARKS_MENU}"); } @@ -68,7 +71,7 @@ export class BuiltinBookmark } } - #getNodeIdForBookmarksMenu() + async #getNodeIdForBookmarksMenu() { if (BROWSER_VENDOR == BROWSER_FIREFOX) { @@ -76,11 +79,23 @@ export class BuiltinBookmark } else if (BROWSER_VENDOR == BROWSER_CHROME) { - return "2"; + return this.#getChromeOtherBookmarksNodeId() } else { throw `Unsupported browser vendor: ${BROWSER_VENDOR}`; } } + + async #getChromeOtherBookmarksNodeId() + { + const tree = await browser.bookmarks.getTree(); + const otherBookmarks = tree[0].children.find(i => i.title === 'Other bookmarks') + + if (otherBookmarks) { + return otherBookmarks.id + } else { + throw new Error('Could not find "Other bookmarks" id') + } + } } \ No newline at end of file From fe7c9ce5daef5780055a7bb257488c6cd2b98928 Mon Sep 17 00:00:00 2001 From: Mike DiDomizio Date: Sun, 7 Sep 2025 18:10:58 -0400 Subject: [PATCH 2/3] Use folderType to get Other Bookmarks type --- bookmark/BuiltinBookmark.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/bookmark/BuiltinBookmark.js b/bookmark/BuiltinBookmark.js index 5b441b6..d99c9d2 100644 --- a/bookmark/BuiltinBookmark.js +++ b/bookmark/BuiltinBookmark.js @@ -89,13 +89,9 @@ export class BuiltinBookmark async #getChromeOtherBookmarksNodeId() { - const tree = await browser.bookmarks.getTree(); - const otherBookmarks = tree[0].children.find(i => i.title === 'Other bookmarks') + const bookmarks = await browser.bookmarks.getTree(); + const otherBookmarks = bookmarks[0].children.find(i => i.folderType === 'other') - if (otherBookmarks) { - return otherBookmarks.id - } else { - throw new Error('Could not find "Other bookmarks" id') - } + return otherBookmarks.id } } \ No newline at end of file From ac475f6636750f5e596e3c32e27a8d986f251a30 Mon Sep 17 00:00:00 2001 From: Mike DiDomizio Date: Sun, 7 Sep 2025 18:36:08 -0400 Subject: [PATCH 3/3] Use folderType to get Bookmarks bar type --- bookmark/BuiltinBookmark.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/bookmark/BuiltinBookmark.js b/bookmark/BuiltinBookmark.js index d99c9d2..be41426 100644 --- a/bookmark/BuiltinBookmark.js +++ b/bookmark/BuiltinBookmark.js @@ -14,15 +14,17 @@ export class BuiltinBookmark async init() { + const bookmarksBarNodeId = await this.#getNodeIdForBookmarksBar() + this.#createMappingFor( - await this.#getBookmarkNameFrom(this.#getNodeIdForBookmarksBar()), - "${BOOKMARKS_BAR}"); + await this.#getBookmarkNameFrom(bookmarksBarNodeId), + "${BOOKMARKS_BAR}"); - const nodeId = await this.#getNodeIdForBookmarksMenu() + const bookmarksMenuNodeId = await this.#getNodeIdForBookmarksMenu() this.#createMappingFor( - await this.#getBookmarkNameFrom(nodeId), - "${BOOKMARKS_MENU}"); + await this.#getBookmarkNameFrom(bookmarksMenuNodeId), + "${BOOKMARKS_MENU}"); } substitute(name) @@ -55,7 +57,7 @@ export class BuiltinBookmark } } - #getNodeIdForBookmarksBar() + async #getNodeIdForBookmarksBar() { if (BROWSER_VENDOR == BROWSER_FIREFOX) { @@ -63,7 +65,7 @@ export class BuiltinBookmark } else if (BROWSER_VENDOR == BROWSER_CHROME) { - return "1"; + return this.#getChromeSpecialFolderId('bookmarks-bar') } else { @@ -79,7 +81,7 @@ export class BuiltinBookmark } else if (BROWSER_VENDOR == BROWSER_CHROME) { - return this.#getChromeOtherBookmarksNodeId() + return this.#getChromeSpecialFolderId('other') } else { @@ -87,10 +89,15 @@ export class BuiltinBookmark } } - async #getChromeOtherBookmarksNodeId() + /** + * Returns node id for special folders in Chrome. + * @param {('bookmarks-bar'|'managed'|'mobile'|'other')} folderType + * @returns {Promise<*>} + */ + async #getChromeSpecialFolderId(folderType) { const bookmarks = await browser.bookmarks.getTree(); - const otherBookmarks = bookmarks[0].children.find(i => i.folderType === 'other') + const otherBookmarks = bookmarks[0].children.find(i => i.folderType === folderType) return otherBookmarks.id }