Better handling of chrome lib async calls
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
import { createBookmarks, removeBookmarks } from "./bookmark.js";
|
import { createBookmarks, removeBookmarks } from "./bookmark.js";
|
||||||
import { saveRevision, getRevision } from "./revision.js";
|
import { saveRevision, getRevision } from "./revision.js";
|
||||||
|
|
||||||
const syncBookmarks = async (id, bookmark) => {
|
|
||||||
console.log('Syncing bookmarks! id: ' + id + ' bookmark: ' + JSON.stringify(bookmark));
|
const saveBookmarks = async (id, bookmark) => {
|
||||||
|
console.log('Saving bookmarks! id: ' + id + ' bookmark: ' + JSON.stringify(bookmark));
|
||||||
await saveRevision();
|
await saveRevision();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,7 +20,6 @@ const loadBookmarks = async () => {
|
|||||||
|
|
||||||
console.log('Different revision IDs found! Old: ' + data.revId + ' New:' + savedRev.revId);
|
console.log('Different revision IDs found! Old: ' + data.revId + ' New:' + savedRev.revId);
|
||||||
|
|
||||||
|
|
||||||
removeListeners();
|
removeListeners();
|
||||||
|
|
||||||
await chrome.storage.sync.set({ revId: data.revId });
|
await chrome.storage.sync.set({ revId: data.revId });
|
||||||
@@ -34,21 +34,21 @@ const loadBookmarks = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function removeListeners() {
|
function removeListeners() {
|
||||||
chrome.bookmarks.onCreated.removeListener(syncBookmarks);
|
console.log('Removing listeners!');
|
||||||
chrome.bookmarks.onRemoved.removeListener(syncBookmarks);
|
chrome.bookmarks.onCreated.removeListener(saveBookmarks);
|
||||||
chrome.bookmarks.onChanged.removeListener(syncBookmarks);
|
chrome.bookmarks.onRemoved.removeListener(saveBookmarks);
|
||||||
chrome.bookmarks.onMoved.removeListener(syncBookmarks);
|
chrome.bookmarks.onChanged.removeListener(saveBookmarks);
|
||||||
chrome.bookmarks.onChildrenReordered.removeListener(syncBookmarks);
|
chrome.bookmarks.onMoved.removeListener(saveBookmarks);
|
||||||
//chrome.bookmarks.onImportEnded.removeListener(syncBookmarks);
|
chrome.bookmarks.onChildrenReordered.removeListener(saveBookmarks);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addListeners() {
|
function addListeners() {
|
||||||
chrome.bookmarks.onCreated.addListener(syncBookmarks);
|
console.log('Adding listeners!');
|
||||||
chrome.bookmarks.onRemoved.addListener(syncBookmarks);
|
chrome.bookmarks.onCreated.addListener(saveBookmarks);
|
||||||
chrome.bookmarks.onChanged.addListener(syncBookmarks);
|
chrome.bookmarks.onRemoved.addListener(saveBookmarks);
|
||||||
chrome.bookmarks.onMoved.addListener(syncBookmarks);
|
chrome.bookmarks.onChanged.addListener(saveBookmarks);
|
||||||
chrome.bookmarks.onChildrenReordered.addListener(syncBookmarks);
|
chrome.bookmarks.onMoved.addListener(saveBookmarks);
|
||||||
//chrome.bookmarks.onImportEnded.addListener(syncBookmarks);
|
chrome.bookmarks.onChildrenReordered.addListener(saveBookmarks);
|
||||||
}
|
}
|
||||||
|
|
||||||
addListeners();
|
addListeners();
|
||||||
|
|||||||
32
bookmark.js
32
bookmark.js
@@ -2,33 +2,29 @@
|
|||||||
export async function createBookmarks(nodes, parentId) {
|
export async function createBookmarks(nodes, parentId) {
|
||||||
for (const node of nodes) {
|
for (const node of nodes) {
|
||||||
if (node.url) {
|
if (node.url) {
|
||||||
chrome.bookmarks.create({ parentId, title: node.title, url: node.url });
|
await chrome.bookmarks.create({ parentId, title: node.title, url: node.url });
|
||||||
} else {
|
} else {
|
||||||
chrome.bookmarks.create({ parentId, title: node.title }, (newFolder) => {
|
const newFolder = await chrome.bookmarks.create({ parentId, title: node.title });
|
||||||
if (node.children && node.children.length > 0) {
|
if (node.children && node.children.length > 0) {
|
||||||
createBookmarks(node.children, newFolder.id);
|
await createBookmarks(node.children, newFolder.id);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recursively delete all children
|
// Recursively delete all children
|
||||||
export async function removeBookmarks(parentId, done) {
|
export async function removeBookmarks(parentId) {
|
||||||
const children = await chrome.bookmarks.getChildren(parentId);
|
const children = await chrome.bookmarks.getChildren(parentId);
|
||||||
if (!children || children.length === 0) return done?.();
|
if (!children || children.length === 0) return;
|
||||||
let count = children.length;
|
|
||||||
children.forEach((child) => {
|
for (let i = 0; i < children.length; i++) {
|
||||||
|
const child = children[i];
|
||||||
if (child.url) {
|
if (child.url) {
|
||||||
chrome.bookmarks.remove(child.id, () => {
|
await chrome.bookmarks.remove(child.id);
|
||||||
if (--count === 0) done?.();
|
}
|
||||||
});
|
else {
|
||||||
} else {
|
await removeBookmarks(child.id);
|
||||||
removeBookmarks(child.id, () => {
|
await chrome.bookmarks.remove(child.id);
|
||||||
chrome.bookmarks.remove(child.id, () => {
|
};
|
||||||
if (--count === 0) done?.();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user