From 6eec4e8612fd59261330c8743ab07b45cb7149b7 Mon Sep 17 00:00:00 2001 From: Emma Date: Wed, 21 Sep 2022 09:13:14 -0400 Subject: [PATCH 1/2] Removing hacky code which is no longer necessary thanks to a recent PR to upstream --- _scripts/cordova-build.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/_scripts/cordova-build.js b/_scripts/cordova-build.js index 25c2658d44967..24d94f5f0f72a 100644 --- a/_scripts/cordova-build.js +++ b/_scripts/cordova-build.js @@ -183,9 +183,7 @@ const archiver = require('archiver'); rendererContent = rendererContent.replace(/(this.showOpenDialog)\(([^\(\)]*?)\)/g, 'showFileLoadDialog($2);') rendererContent = rendererContent.replace(/(this.showSaveDialog)\(([^\(\)]*?)\)/g, 'showFileSaveDialog($2);') rendererContent = rendererContent.replace(/([a-zA-Z]*)=([a-zA-Z]*\([1-9]*\))\.createInstance/g, '$1=window.dataStore=$2.createInstance') - rendererContent = rendererContent.replace(/{openExternalLink\({/g, "{openExternalLink:window.openExternalLink,electronOpenExternalLink({") rendererContent = rendererContent.replace(/navigator.clipboard.writeText\(/g, "window.copyToClipboard\(") - rendererContent = rendererContent.replace(/,async downloadMedia\({/g,", downloadMedia(state, mediaFormat) { window.downloadExternalLink(state, mediaFormat.url); return new Promise(function (resolve, reject) { resolve() }) }, async oldDownloadMedia({") if (exportType === 'cordova') { rendererContent = rendererContent.replace(/this.invidiousGetVideoInformation\(this.videoId\).then\(/g, 'this.invidiousGetVideoInformation(this.videoId).then(updatePlayingVideo);this.invidiousGetVideoInformation\(this.videoId\).then(') rendererContent = rendererContent.replace('systemTheme:function(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}', 'systemTheme:function () { return window.isDarkMode }') @@ -551,19 +549,6 @@ const archiver = require('archiver'); return currentVideo; } }); - window.openExternalLink = function ({ rootState }, link) { - var a = document.createElement("a"); - a.setAttribute("href", link); - a.setAttribute("target", "_blank"); - a.click(); - }; - window.downloadExternalLink = function ({ rootState }, link) { - var a = document.createElement("a"); - a.setAttribute("href", link); - a.setAttribute("target", "_blank"); - a.download = 'download'; - a.click(); - } ` + ((exportType === 'cordova') ? ` window.copyToClipboard = function (content) { From b21608f6e8e55aab5ce289f7569a953bd2fb094e Mon Sep 17 00:00:00 2001 From: Emma Date: Wed, 21 Sep 2022 14:15:21 -0400 Subject: [PATCH 2/2] Moving the copyToClipboard cordova function into utils and out of that hacky regex. --- _scripts/cordova-build.js | 7 ------- src/renderer/store/modules/utils.js | 8 ++++++-- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/_scripts/cordova-build.js b/_scripts/cordova-build.js index 24d94f5f0f72a..154ff5a9ed7bc 100644 --- a/_scripts/cordova-build.js +++ b/_scripts/cordova-build.js @@ -183,7 +183,6 @@ const archiver = require('archiver'); rendererContent = rendererContent.replace(/(this.showOpenDialog)\(([^\(\)]*?)\)/g, 'showFileLoadDialog($2);') rendererContent = rendererContent.replace(/(this.showSaveDialog)\(([^\(\)]*?)\)/g, 'showFileSaveDialog($2);') rendererContent = rendererContent.replace(/([a-zA-Z]*)=([a-zA-Z]*\([1-9]*\))\.createInstance/g, '$1=window.dataStore=$2.createInstance') - rendererContent = rendererContent.replace(/navigator.clipboard.writeText\(/g, "window.copyToClipboard\(") if (exportType === 'cordova') { rendererContent = rendererContent.replace(/this.invidiousGetVideoInformation\(this.videoId\).then\(/g, 'this.invidiousGetVideoInformation(this.videoId).then(updatePlayingVideo);this.invidiousGetVideoInformation\(this.videoId\).then(') rendererContent = rendererContent.replace('systemTheme:function(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}', 'systemTheme:function () { return window.isDarkMode }') @@ -551,9 +550,6 @@ const archiver = require('archiver'); }); ` + ((exportType === 'cordova') ? ` - window.copyToClipboard = function (content) { - cordova.plugins.clipboard.copy(content); - }; window.isDarkMode = "light"; if (await new Promise(function (resolve, reject) { cordova.plugins.ThemeDetection.isAvailable(resolve, reject) }) ) { var isDarkMode = await new Promise(function (resolve, reject) { cordova.plugins.ThemeDetection.isDarkModeEnabled(function (result) { resolve(result.value) },reject) }); @@ -566,9 +562,6 @@ const archiver = require('archiver'); document.head.appendChild(removeNewWindowIconStyle); ` : ` - window.copyToClipboard = function (content) { - navigator.clipboard.writeText(content); - }; window.createNewWindow = function () { window.open(window.location.pathname, "_blank") }; diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index caffd10a9da02..fccbe8d97de07 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -255,9 +255,13 @@ const actions = { * @param {string} messageOnError the message to be displayed as a toast when the copy fails (optional) */ async copyToClipboard ({ dispatch }, { content, messageOnSuccess, messageOnError }) { - if (navigator.clipboard !== undefined && window.isSecureContext) { + let clipboardAPI = navigator.clipboard?.writeText.bind(navigator.clipboard) + if (window.cordova !== undefined) { + clipboardAPI = window.cordova.plugins.clipboard.copy + } + if (clipboardAPI !== undefined && window.isSecureContext) { try { - await navigator.clipboard.writeText(content) + await clipboardAPI(content) if (messageOnSuccess !== undefined) { dispatch('showToast', { message: messageOnSuccess