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);
},
};
|