瀏覽代碼

display 'Share selection...' when saving selected content (see #1381)

Gildas 2 年之前
父節點
當前提交
b31cee6b50

+ 4 - 0
_locales/de/messages.json

@@ -771,6 +771,10 @@
 		"message": "Seite teilen...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Auswahl teilen...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Standardeinstellungen",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/en/messages.json

@@ -771,6 +771,10 @@
 		"message": "Share page...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Share selection...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Default settings",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/es/messages.json

@@ -771,6 +771,10 @@
 		"message": "Compartir página...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Compartir selección...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Configuración predeterminada",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/fr/messages.json

@@ -771,6 +771,10 @@
 		"message": "Partager la page...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Partager la sélection...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Configuration par défaut",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/it/messages.json

@@ -771,6 +771,10 @@
 		"message": "Condividi pagina...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Condividi selezione...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Impostazioni predefinite",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/ja/messages.json

@@ -771,6 +771,10 @@
 		"message": "ページを共有...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "選択したコンテンツを共有...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "デフォルトの設定",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/pl/messages.json

@@ -771,6 +771,10 @@
 		"message": "Udostępnij stronę...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Share selection...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Ustawienia domyślne",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/pt_PT/messages.json

@@ -771,6 +771,10 @@
 		"message": "Partilhar página...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Partilhar seleção...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Definições predefinidas",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/pt_br/messages.json

@@ -771,6 +771,10 @@
 		"message": "Partilhar página...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Partilhar seleção...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Configurações padrão",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/ru/messages.json

@@ -771,6 +771,10 @@
 		"message": "Share page...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Share selection...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Настройки по умолчанию",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/tr/messages.json

@@ -771,6 +771,10 @@
 		"message": "Sayfayı paylaş...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Seçimi paylaş...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Varsayılan ayarlar",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/uk/messages.json

@@ -771,6 +771,10 @@
 		"message": "Поділитися сторінкою...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "Seite teilen...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "Типові налаштування",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/zh_CN/messages.json

@@ -771,6 +771,10 @@
 		"message": "分享页面...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "分享所选内容...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "默认设置",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 4 - 0
_locales/zh_TW/messages.json

@@ -771,6 +771,10 @@
 		"message": "分享頁面...",
 		"description": "Top panel button 'Share page...' when sharing a page"
 	},
+	"topPanelShareSelectionButton": {
+		"message": "分享所選內容...",
+		"description": "Top panel button 'Share selection...' when sharing selected content"
+	},
 	"profileDefaultSettings": {
 		"message": "默認設置",
 		"description": "Label 'Default settings' of the default settings in the options page"

+ 7 - 5
src/core/common/download.js

@@ -28,11 +28,12 @@ import { getSharePageBar, setLabels } from "./../../ui/common/common-content-ui.
 
 const MAX_CONTENT_SIZE = 16 * (1024 * 1024);
 
-let EMBEDDED_IMAGE_BUTTON_MESSAGE, SHARE_PAGE_BUTTON_MESSAGE, ERROR_TITLE_MESSAGE;
+let EMBEDDED_IMAGE_BUTTON_MESSAGE, SHARE_PAGE_BUTTON_MESSAGE, SHARE_SELECTION_BUTTON_MESSAGE, ERROR_TITLE_MESSAGE;
 
 try {
 	EMBEDDED_IMAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelEmbeddedImageButton");
 	SHARE_PAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelSharePageButton");
+	SHARE_SELECTION_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelShareSelectionButton");
 	ERROR_TITLE_MESSAGE = browser.i18n.getMessage("topPanelError");
 } catch (error) {
 	// ignored
@@ -42,6 +43,7 @@ let sharePageBar;
 setLabels({
 	EMBEDDED_IMAGE_BUTTON_MESSAGE,
 	SHARE_PAGE_BUTTON_MESSAGE,
+	SHARE_SELECTION_BUTTON_MESSAGE,
 	ERROR_TITLE_MESSAGE
 });
 
@@ -165,7 +167,7 @@ async function downloadPage(pageData, options) {
 
 async function downloadPageForeground(pageData, options) {
 	if (options.sharePage && navigator.share) {
-		await sharePage(pageData);
+		await sharePage(pageData, options);
 	} else {
 		if (pageData.filename && pageData.filename.length) {
 			const link = document.createElement("a");
@@ -177,9 +179,9 @@ async function downloadPageForeground(pageData, options) {
 	}
 }
 
-async function sharePage(pageData) {
+async function sharePage(pageData, options) {
 	sharePageBar = getSharePageBar();
-	const cancelled = await sharePageBar.display();
+	const cancelled = await sharePageBar.display(options.selected);
 	if (!cancelled) {
 		const data = { files: [new File([pageData.content], pageData.filename)] };
 		try {
@@ -188,7 +190,7 @@ async function sharePage(pageData) {
 		} catch (error) {
 			sharePageBar.hide();
 			if (error.name === "AbortError") {
-				await sharePage(pageData);
+				await sharePage(pageData, options);
 			} else {
 				throw error;
 			}

+ 3 - 1
src/core/content/content.js

@@ -34,7 +34,8 @@ const bootstrap = globalThis.singlefileBootstrap;
 
 const MOZ_EXTENSION_PROTOCOL = "moz-extension:";
 const EMBEDDED_IMAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelEmbeddedImageButton");
-const SHARE_PAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelSharePageButton"); browser.i18n.getMessage("topPanelSharePageButton");
+const SHARE_PAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelSharePageButton");
+const SHARE_SELECTION_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelShareSelectionButton");
 const ERROR_TITLE_MESSAGE = browser.i18n.getMessage("topPanelError");
 
 let processor, processing, downloadParser, openFileInfobar;
@@ -42,6 +43,7 @@ let processor, processing, downloadParser, openFileInfobar;
 setLabels({
 	EMBEDDED_IMAGE_BUTTON_MESSAGE,
 	SHARE_PAGE_BUTTON_MESSAGE,
+	SHARE_SELECTION_BUTTON_MESSAGE,
 	ERROR_TITLE_MESSAGE
 });
 

+ 2 - 0
src/ui/bg/ui-editor.js

@@ -30,6 +30,7 @@ import * as yabson from "./../../lib/yabson/yabson.js";
 
 const EMBEDDED_IMAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelEmbeddedImageButton");
 const SHARE_PAGE_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelSharePageButton");
+const SHARE_SELECTION_BUTTON_MESSAGE = browser.i18n.getMessage("topPanelShareSelectionButton");
 const ERROR_TITLE_MESSAGE = browser.i18n.getMessage("topPanelError");
 
 const FOREGROUND_SAVE = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/Vivaldi/.test(navigator.userAgent) && !/OPR/.test(navigator.userAgent);
@@ -533,6 +534,7 @@ function savePage() {
 		labels: {
 			EMBEDDED_IMAGE_BUTTON_MESSAGE,
 			SHARE_PAGE_BUTTON_MESSAGE,
+			SHARE_SELECTION_BUTTON_MESSAGE,
 			ERROR_TITLE_MESSAGE
 		}
 	}), "*");

+ 7 - 4
src/ui/common/common-content-ui.js

@@ -31,7 +31,7 @@ const SINGLE_FILE_UI_ELEMENT_CLASS = singlefile.helper.SINGLE_FILE_UI_ELEMENT_CL
 const ERROR_BAR_TAGNAME = "singlefile-error-bar";
 const OPEN_FILE_BAR_TAGNAME = "singlefile-open-file-bar";
 const SHARE_PAGE_BAR_TAGNAME = "singlefile-share-page-bar";
-let EMBEDDED_IMAGE_BUTTON_MESSAGE, SHARE_PAGE_BUTTON_MESSAGE, ERROR_TITLE_MESSAGE;
+let EMBEDDED_IMAGE_BUTTON_MESSAGE, SHARE_PAGE_BUTTON_MESSAGE, SHARE_SELECTION_BUTTON_MESSAGE, ERROR_TITLE_MESSAGE;
 
 const CSS_PROPERTIES = new Set(Array.from(getComputedStyle(document.documentElement)));
 
@@ -44,7 +44,7 @@ export {
 };
 
 function setLabels(labels) {
-	({ EMBEDDED_IMAGE_BUTTON_MESSAGE, SHARE_PAGE_BUTTON_MESSAGE, ERROR_TITLE_MESSAGE } = labels);
+	({ EMBEDDED_IMAGE_BUTTON_MESSAGE, SHARE_PAGE_BUTTON_MESSAGE, SHARE_SELECTION_BUTTON_MESSAGE, ERROR_TITLE_MESSAGE } = labels);
 }
 
 function onError(message, link) {
@@ -79,10 +79,13 @@ function getOpenFileBar() {
 function getSharePageBar() {
 	let resolvePromise;
 	return {
-		display: async function () {
+		display: async function (selectedContent) {
 			return new Promise(resolve => {
 				resolvePromise = resolve;
-				displayBar(SHARE_PAGE_BAR_TAGNAME, "", { buttonLabel: SHARE_PAGE_BUTTON_MESSAGE, buttonOnclick: resolve });
+				displayBar(SHARE_PAGE_BAR_TAGNAME, "", {
+					buttonLabel: selectedContent ? SHARE_SELECTION_BUTTON_MESSAGE : SHARE_PAGE_BUTTON_MESSAGE,
+					buttonOnclick: resolve
+				});
 			});
 		},
 		hide: function () {