- commit
- 5b20a8dab3bbc61cd87451fa6eceebfed5c73d96
- parent
- 447cb74bd29c72677f0f7c63c03d8f0fe9e784b1
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2017-04-20 09:30
more robust root folder
Diffstat
| M | shared.js | 44 | ++++++++++++++++++++++++++++++++------------ |
1 files changed, 32 insertions, 12 deletions
diff --git a/shared.js b/shared.js
@@ -1,24 +1,44 @@ 1 1 'use struct'; 2 23 -1 const FOLDER_ID = '2';4 3 const FOLDER_TITLE = 'stack'; 5 46 -1 var ensureFolder = function(parentId, callback) {7 -1 chrome.bookmarks.getChildren(parentId, function(children) {8 -1 var folder = children.find(child => child.title === FOLDER_TITLE);9 -1 if (!folder) {10 -1 chrome.bookmarks.create({11 -1 parentId: parentId,12 -1 title: FOLDER_TITLE,13 -1 }, callback);-1 5 var getRootFolder = function(callback) { -1 6 // try firefox -1 7 chrome.bookmarks.get('unfiled_____', function(folder) { -1 8 if (!chrome.runtime.lastError) { -1 9 callback(folder[0]); 14 10 } else {15 -1 callback(folder);-1 11 // In chrome, it the folders are indexed depth-first. -1 12 // So root is 0, "bookmark bar" is 1, "other bookmarks" is 2. -1 13 // However, if you already had bookmarks when ids were introduced, -1 14 // "other bookmarks" may have a higher id. -1 15 // -1 16 // See https://bugs.chromium.org/p/chromium/issues/detail?id=21330 -1 17 chrome.bookmarks.getChildren('0', function(children) { -1 18 callback(children[1]); -1 19 }); 16 20 } 17 21 }); 18 22 }; 19 23 -1 24 var ensureFolder = function(callback) { -1 25 getRootFolder(function(root) { -1 26 chrome.bookmarks.getChildren(root.id, function(children) { -1 27 var folder = children.find(child => child.title === FOLDER_TITLE); -1 28 if (!folder) { -1 29 chrome.bookmarks.create({ -1 30 parentId: parentId, -1 31 title: FOLDER_TITLE, -1 32 }, callback); -1 33 } else { -1 34 callback(folder); -1 35 } -1 36 }); -1 37 }); -1 38 }; -1 39 20 40 var getBookmarks = function(callback) {21 -1 ensureFolder(FOLDER_ID, function(folder) {-1 41 ensureFolder(function(folder) { 22 42 chrome.bookmarks.getChildren(folder.id, callback); 23 43 }); 24 44 }; @@ -41,7 +61,7 @@ var popBookmark = function(id, callback) { 41 61 }; 42 62 43 63 var pushBookmark = function(tab, callback) {44 -1 ensureFolder(FOLDER_ID, function(folder) {-1 64 ensureFolder(function(folder) { 45 65 chrome.bookmarks.create({ 46 66 parentId: folder.id, 47 67 title: tab.title,