Files
simple-sync/background.js
2025-09-24 22:46:18 +02:00

59 lines
1.8 KiB
JavaScript

import { createBookmarks, removeBookmarks } from "./bookmark.js";
import { saveRevision, getRevision } from "./revision.js";
const syncBookmarks = async (id, bookmark) => {
console.log('Syncing bookmarks! id: ' + id + ' bookmark: ' + JSON.stringify(bookmark));
await saveRevision();
}
const loadBookmarks = async () => {
const data = await getRevision();
if (!data)
return;
const savedRev = await chrome.storage.sync.get('revId');
if (data.revId === savedRev.revId) {
console.log('Same revision ID, no update required');
return;
}
console.log('Different revision IDs found! Old: ' + data.revId + ' New:' + savedRev.revId);
removeListeners();
await chrome.storage.sync.set({ revId: data.revId });
// TODO GD: "Raw" replacement, make this more efficient to avoid flickering
for (var child of data.bookmarks[0].children) {
await removeBookmarks(child.id);
await createBookmarks(child.children, child.id);
}
addListeners();
}
function removeListeners() {
chrome.bookmarks.onCreated.removeListener(syncBookmarks);
chrome.bookmarks.onRemoved.removeListener(syncBookmarks);
chrome.bookmarks.onChanged.removeListener(syncBookmarks);
chrome.bookmarks.onMoved.removeListener(syncBookmarks);
chrome.bookmarks.onChildrenReordered.removeListener(syncBookmarks);
//chrome.bookmarks.onImportEnded.removeListener(syncBookmarks);
}
function addListeners() {
chrome.bookmarks.onCreated.addListener(syncBookmarks);
chrome.bookmarks.onRemoved.addListener(syncBookmarks);
chrome.bookmarks.onChanged.addListener(syncBookmarks);
chrome.bookmarks.onMoved.addListener(syncBookmarks);
chrome.bookmarks.onChildrenReordered.addListener(syncBookmarks);
//chrome.bookmarks.onImportEnded.addListener(syncBookmarks);
}
addListeners();
loadBookmarks();
// TODO GD: Make this websocket based
setInterval(loadBookmarks, 10000);