summaryrefslogtreecommitdiffstats
path: root/browser/components/pocket/content/Pocket.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/pocket/content/Pocket.sys.mjs')
-rw-r--r--browser/components/pocket/content/Pocket.sys.mjs56
1 files changed, 56 insertions, 0 deletions
diff --git a/browser/components/pocket/content/Pocket.sys.mjs b/browser/components/pocket/content/Pocket.sys.mjs
new file mode 100644
index 0000000000..25e8fccdf8
--- /dev/null
+++ b/browser/components/pocket/content/Pocket.sys.mjs
@@ -0,0 +1,56 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const lazy = {};
+
+ChromeUtils.defineESModuleGetters(lazy, {
+ CustomizableUI: "resource:///modules/CustomizableUI.sys.mjs",
+});
+
+export var Pocket = {
+ get site() {
+ return Services.prefs.getCharPref("extensions.pocket.site");
+ },
+ get listURL() {
+ return "https://" + Pocket.site + "/firefox_learnmore?src=ff_library";
+ },
+
+ _initPanelView(window) {
+ let urlToSave = Pocket._urlToSave;
+ let titleToSave = Pocket._titleToSave;
+ Pocket._urlToSave = null;
+ Pocket._titleToSave = null;
+ // ViewShowing fires immediately before it creates the contents,
+ // in lieu of an AfterViewShowing event, just spin the event loop.
+ window.setTimeout(function () {
+ if (urlToSave) {
+ window.pktUI.tryToSaveUrl(urlToSave, titleToSave);
+ } else {
+ window.pktUI.tryToSaveCurrentPage();
+ }
+ }, 0);
+ },
+
+ _urlToSave: null,
+ _titleToSave: null,
+ savePage(browser, url, title) {
+ // We want to target the top browser which has the Pocket panel UI,
+ // which might not be the browser saving the article.
+ const ownerGlobal = browser?.ownerGlobal?.top;
+ const ownerDocument = ownerGlobal?.document;
+
+ if (!ownerDocument || !ownerGlobal?.PanelUI) {
+ return;
+ }
+
+ let widget = lazy.CustomizableUI.getWidget("save-to-pocket-button");
+ let anchorNode = widget.areaType
+ ? widget.forWindow(ownerGlobal).anchor
+ : ownerDocument.getElementById("PanelUI-menu-button");
+
+ this._urlToSave = url;
+ this._titleToSave = title;
+ ownerGlobal.PanelUI.showSubView("PanelUI-savetopocket", anchorNode);
+ },
+};