forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* 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);
 | |
|   },
 | |
| };
 | 
