From 65a3cb19e8ecfd7adbb0eeb1eaa19d9334d5d5a1 Mon Sep 17 00:00:00 2001 From: alexandre-blanc <36731532+alexandre-blanc@users.noreply.github.com> Date: Wed, 12 Mar 2025 10:47:08 +0100 Subject: [PATCH 1/6] WIP --- src/CollectionsViewer.jsx | 4 +++- src/EngineActions.jsx | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/CollectionsViewer.jsx b/src/CollectionsViewer.jsx index 0748431..49aea2b 100644 --- a/src/CollectionsViewer.jsx +++ b/src/CollectionsViewer.jsx @@ -284,7 +284,9 @@ class CollectionViewer extends React.Component { {this.props.provider.isLocal && engine && ( + engine={engine} + records={this.state.originalRecords} + /> )} diff --git a/src/EngineActions.jsx b/src/EngineActions.jsx index 6e59e01..fc69ac5 100644 --- a/src/EngineActions.jsx +++ b/src/EngineActions.jsx @@ -8,6 +8,7 @@ class EngineActions extends React.Component { static get propTypes() { return { engine: PropTypes.object.isRequired, + records: PropTypes.array, }; } @@ -26,6 +27,9 @@ class EngineActions extends React.Component { }); } + bookmark(event) { + console.log('bookmark') + } wipe(event) { let e = this.props.engine; e._log.info("about:sync wiping engine due to user request"); @@ -37,6 +41,25 @@ class EngineActions extends React.Component { } render() { + let bookmark; + if (this.props.engine.name == 'tabs'){ + console.log(this.props.records) + const devices = [] + for (const device of this.props.records){ + devices.push( + + ) + } + bookmark = +
+ Bookmark tabs from + + +
+ } + let reset; if (this.props.engine.resetClient) { reset = @@ -62,6 +85,7 @@ class EngineActions extends React.Component { }; return ( <> + { bookmark } { reset } { wipe } From 20e2ac72653a621a22b0b3f1804ff36e62fb2220 Mon Sep 17 00:00:00 2001 From: alexandre-blanc <36731532+alexandre-blanc@users.noreply.github.com> Date: Thu, 13 Mar 2025 20:41:55 +0100 Subject: [PATCH 2/6] wip --- manifest.json | 3 ++- src/CollectionsViewer.jsx | 18 ++++++++-------- src/EngineActions.jsx | 44 +++++++++++++++++++++++++++++++++------ webext/background.js | 7 +++++++ 4 files changed, 56 insertions(+), 16 deletions(-) diff --git a/manifest.json b/manifest.json index b5f3b62..cf908fb 100644 --- a/manifest.json +++ b/manifest.json @@ -5,7 +5,8 @@ "version": "0.0", "homepage_url": "https://github.com/mozilla-extensions/aboutsync", "permissions": [ - "mozillaAddons" + "mozillaAddons", + "bookmarks" ], "applications": { diff --git a/src/CollectionsViewer.jsx b/src/CollectionsViewer.jsx index 49aea2b..d5392ae 100644 --- a/src/CollectionsViewer.jsx +++ b/src/CollectionsViewer.jsx @@ -259,6 +259,14 @@ class CollectionViewer extends React.Component { let recordsExpandLevel = this.state.records.length < 20 ? 2 : 1; return ( + {this.props.provider.isLocal && engine && ( + + + + )} {this.renderSummary()} @@ -281,14 +289,6 @@ class CollectionViewer extends React.Component { )} {this.renderAdditionalTabs()} - {this.props.provider.isLocal && engine && ( - - - - )} ); } @@ -351,7 +351,7 @@ class CollectionsViewer extends React.Component { return (

Status: {info.status}

- {info.collections.map(collection => + {info.collections.filter(collection => collection.name == "tabs").map(collection => )}
); diff --git a/src/EngineActions.jsx b/src/EngineActions.jsx index fc69ac5..3abcbd7 100644 --- a/src/EngineActions.jsx +++ b/src/EngineActions.jsx @@ -28,7 +28,36 @@ class EngineActions extends React.Component { } bookmark(event) { - console.log('bookmark') + event.preventDefault(); + const data = new FormData(event.target); + const device_id = Object.fromEntries(data.entries()).device; + const record = this.props.records.filter(r => r.id == device_id)[0]; + const tabs = record.tabs + const device = record.clientName + console.log(device) + console.log(tabs) + console.log("hey") + console.log(browser.runtime.sendMessage).catch(e => console.log(e)) + browser.runtime.sendMessage({ + device:device, + tabs:tabs + }).catch(e => console.log(e)) + // console.log(browser.bookmarks.create({})) + // let createBookmark = browser.bookmarks.create({ + // title: "bookmarks.create() on MDN", + // url: "https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create", + // }).catch((error) => console.error(error)); + console.log("ho") + // .then(treeNode => { + // for (const [i, tab] of tabs.entries()){ + // browser.bookmarks.create({ + // "index":i, + // "parentId":treeNode, + // "title":tab.title, + // "url":tab.urlHistory[0] + // }); + // } + // }); } wipe(event) { let e = this.props.engine; @@ -52,11 +81,14 @@ class EngineActions extends React.Component { } bookmark =
- Bookmark tabs from - - +
+ + +
} diff --git a/webext/background.js b/webext/background.js index 059e64b..4872187 100644 --- a/webext/background.js +++ b/webext/background.js @@ -17,3 +17,10 @@ browser.runtime.onInstalled.addListener(() => { browser.runtime.onStartup.addListener(() => { browser.aboutsync.startup(); }); + +function bookmarkTabs(msg, sender, sendRes){ + console.log(msg.device) + browser.bookmark.create({title:'test'}) +} + +browser.runtime.onMessage.addListener(bookmarkTabs); From a0517f920dcbd2bb8bd4e3f6dd2da0bfdb51130a Mon Sep 17 00:00:00 2001 From: alexandre-blanc <36731532+alexandre-blanc@users.noreply.github.com> Date: Fri, 14 Mar 2025 06:38:33 +0100 Subject: [PATCH 3/6] Working tab bookmarking --- src/EngineActions.jsx | 41 ++++++++++++++++++++--------------------- webext/background.js | 9 +-------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/src/EngineActions.jsx b/src/EngineActions.jsx index 3abcbd7..9bdd253 100644 --- a/src/EngineActions.jsx +++ b/src/EngineActions.jsx @@ -2,6 +2,7 @@ const React = require("react"); const { toast, toast_error } = require('./common'); const PropTypes = require("prop-types"); +const { Bookmarks } = ChromeUtils.importESModule("resource://gre/modules/Bookmarks.sys.mjs") class EngineActions extends React.Component { @@ -37,27 +38,25 @@ class EngineActions extends React.Component { console.log(device) console.log(tabs) console.log("hey") - console.log(browser.runtime.sendMessage).catch(e => console.log(e)) - browser.runtime.sendMessage({ - device:device, - tabs:tabs - }).catch(e => console.log(e)) - // console.log(browser.bookmarks.create({})) - // let createBookmark = browser.bookmarks.create({ - // title: "bookmarks.create() on MDN", - // url: "https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create", - // }).catch((error) => console.error(error)); - console.log("ho") - // .then(treeNode => { - // for (const [i, tab] of tabs.entries()){ - // browser.bookmarks.create({ - // "index":i, - // "parentId":treeNode, - // "title":tab.title, - // "url":tab.urlHistory[0] - // }); - // } - // }); + console.log(Bookmarks) + const now = new Date() + const datetime = now.toLocaleString(); + createFolder = Bookmarks.insert({ + type:Bookmarks.TYPE_FOLDER, + parentGuid:Bookmarks.unfiledGuid, + title:`${device}, ${datetime}` + }).then(treeNode => { + for (const tab of tabs){ + const args = { + parentGuid:treeNode.guid, + title:tab.title, + type:Bookmarks.TYPE_BOOKMARK, + url:tab.urlHistory[0] + }; + console.log(args) + Bookmarks.insert(args).catch(e => console.error(e)); + }}); + console.log('ho') } wipe(event) { let e = this.props.engine; diff --git a/webext/background.js b/webext/background.js index 4872187..b473dd1 100644 --- a/webext/background.js +++ b/webext/background.js @@ -16,11 +16,4 @@ browser.runtime.onInstalled.addListener(() => { // onStartup is called at browser startup if the addon is already installed. browser.runtime.onStartup.addListener(() => { browser.aboutsync.startup(); -}); - -function bookmarkTabs(msg, sender, sendRes){ - console.log(msg.device) - browser.bookmark.create({title:'test'}) -} - -browser.runtime.onMessage.addListener(bookmarkTabs); +}); \ No newline at end of file From d37d3dd8bae665a57bc823ac62ee5d3a0435fdd9 Mon Sep 17 00:00:00 2001 From: alexandre-blanc <36731532+alexandre-blanc@users.noreply.github.com> Date: Fri, 14 Mar 2025 06:46:11 +0100 Subject: [PATCH 4/6] Revert changes to CollectionsViewer.jsx --- src/CollectionsViewer.jsx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/CollectionsViewer.jsx b/src/CollectionsViewer.jsx index d5392ae..05c31ea 100644 --- a/src/CollectionsViewer.jsx +++ b/src/CollectionsViewer.jsx @@ -259,14 +259,6 @@ class CollectionViewer extends React.Component { let recordsExpandLevel = this.state.records.length < 20 ? 2 : 1; return ( - {this.props.provider.isLocal && engine && ( - - - - )} {this.renderSummary()} @@ -288,11 +280,19 @@ class CollectionViewer extends React.Component { records={this.state.originalRecords}/> )} + {this.props.provider.isLocal && engine && ( + + + + )} {this.renderAdditionalTabs()} ); } - + render() { let body = this.state.records ? this.renderTabs() @@ -351,7 +351,7 @@ class CollectionsViewer extends React.Component { return (

Status: {info.status}

- {info.collections.filter(collection => collection.name == "tabs").map(collection => + {info.collections.map(collection => )}
); From cfe42e879023fac8698481f2e58d3b4c7316c960 Mon Sep 17 00:00:00 2001 From: alexandre-blanc <36731532+alexandre-blanc@users.noreply.github.com> Date: Fri, 14 Mar 2025 06:53:30 +0100 Subject: [PATCH 5/6] Some cleanup --- manifest.json | 1 - src/CollectionsViewer.jsx | 2 +- src/EngineActions.jsx | 10 ++-------- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/manifest.json b/manifest.json index cf908fb..73bacce 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,6 @@ "homepage_url": "https://github.com/mozilla-extensions/aboutsync", "permissions": [ "mozillaAddons", - "bookmarks" ], "applications": { diff --git a/src/CollectionsViewer.jsx b/src/CollectionsViewer.jsx index 05c31ea..b3e2be2 100644 --- a/src/CollectionsViewer.jsx +++ b/src/CollectionsViewer.jsx @@ -280,6 +280,7 @@ class CollectionViewer extends React.Component { records={this.state.originalRecords}/> )} + {this.renderAdditionalTabs()} {this.props.provider.isLocal && engine && ( )} - {this.renderAdditionalTabs()} ); } diff --git a/src/EngineActions.jsx b/src/EngineActions.jsx index 9bdd253..7bc76e7 100644 --- a/src/EngineActions.jsx +++ b/src/EngineActions.jsx @@ -35,10 +35,6 @@ class EngineActions extends React.Component { const record = this.props.records.filter(r => r.id == device_id)[0]; const tabs = record.tabs const device = record.clientName - console.log(device) - console.log(tabs) - console.log("hey") - console.log(Bookmarks) const now = new Date() const datetime = now.toLocaleString(); createFolder = Bookmarks.insert({ @@ -53,10 +49,8 @@ class EngineActions extends React.Component { type:Bookmarks.TYPE_BOOKMARK, url:tab.urlHistory[0] }; - console.log(args) - Bookmarks.insert(args).catch(e => console.error(e)); - }}); - console.log('ho') + Bookmarks.insert(args); + }}).catch(e => console.error(e)); } wipe(event) { let e = this.props.engine; From d8b5d2ff190392940975b663e05b6e5d6bf1849a Mon Sep 17 00:00:00 2001 From: alexandre-blanc <36731532+alexandre-blanc@users.noreply.github.com> Date: Fri, 14 Mar 2025 06:54:37 +0100 Subject: [PATCH 6/6] Some cleanup --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 73bacce..b5f3b62 100644 --- a/manifest.json +++ b/manifest.json @@ -5,7 +5,7 @@ "version": "0.0", "homepage_url": "https://github.com/mozilla-extensions/aboutsync", "permissions": [ - "mozillaAddons", + "mozillaAddons" ], "applications": {