summaryrefslogtreecommitdiffstats
path: root/browser/components/pocket/content/Pocket.sys.mjs
blob: 25e8fccdf81d34decddfac1e63acb0e907d7011a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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);
  },
};