bookmark-stack

web extension to save pages in a stack for reading them later  https://addons.mozilla.org/firefox/addon/bookmark-stack/
git clone https://git.ce9e.org/bookmark-stack.git

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     2 
    3    -1 const FOLDER_ID = '2';
    4     3 const FOLDER_TITLE = 'stack';
    5     4 
    6    -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,