From f75b7dd164271a9c9866f5701809ba67a027dfa4 Mon Sep 17 00:00:00 2001 From: zeppi Date: Fri, 17 Dec 2021 17:38:18 -0500 Subject: [PATCH 01/29] upgrade electron to 15 --- electron/createWindow.js | 9 +++-- electron/index.js | 2 + package.json | 3 +- ui/component/common/file-selector.jsx | 4 +- ui/component/fileRender/view.jsx | 2 +- ui/component/header/view.jsx | 4 +- ui/component/walletBackup/view.jsx | 3 +- ui/index.jsx | 3 +- ui/redux/actions/app.js | 3 +- ui/redux/reducers/app.js | 2 +- ui/util/context-menu.js | 3 +- yarn.lock | 53 +++++++++++++-------------- 12 files changed, 48 insertions(+), 43 deletions(-) diff --git a/electron/createWindow.js b/electron/createWindow.js index 042fae9b1..f1a796c3b 100644 --- a/electron/createWindow.js +++ b/electron/createWindow.js @@ -9,7 +9,7 @@ import { TO_TRAY_WHEN_CLOSED } from 'constants/settings'; import setupBarMenu from './menu/setupBarMenu'; import * as PAGES from 'constants/pages'; - +const remote = require('@electron/remote/main'); function GetAppLangCode() { // https://www.electronjs.org/docs/api/locales // 1. Gets the user locale. @@ -54,6 +54,7 @@ export default appState => { webSecurity: !isDev, plugins: true, nodeIntegration: true, + contextIsolation: false, enableRemoteModule: true, // see about removing this }, }; @@ -62,6 +63,7 @@ export default appState => { const rendererURL = isDev ? `http://localhost:${WEBPACK_ELECTRON_PORT}` : `file://${__dirname}/index.html`; let window = new BrowserWindow(windowConfiguration); + remote.enable(window.webContents); // Let us register listeners on the window, so we can update the state // automatically (the listeners will be removed when the window is closed) @@ -187,9 +189,8 @@ export default appState => { window = null; }); - window.webContents.on('new-window', (event, url) => { - event.preventDefault(); - shell.openExternal(url); + window.webContents.setWindowOpenHandler((details) => { + return { action: 'deny' }; }); window.webContents.on('update-target-url', (event, url) => { diff --git a/electron/index.js b/electron/index.js index b73653280..a40822e4e 100644 --- a/electron/index.js +++ b/electron/index.js @@ -18,6 +18,8 @@ import installDevtools from './installDevtools'; import fs from 'fs'; import path from 'path'; const { download } = require('electron-dl'); +const remote = require('@electron/remote/main'); +remote.initialize(); const filePath = path.join(process.resourcesPath, 'static', 'upgradeDisabled'); let upgradeDisabled; try { diff --git a/package.json b/package.json index 4da1e059b..a11fea0b3 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "postinstall:warning": "echo '\n\nWARNING\n\nNot all node modules were installed because NODE_ENV is set to \"production\".\nThis should only be set after installing dependencies with \"yarn\". The app will not work.\n\n'" }, "dependencies": { + "@electron/remote": "^2.0.1", "@ungap/from-entries": "^0.2.1", "auto-launch": "^5.0.5", "electron-dl": "^3.2.0", @@ -121,7 +122,7 @@ "dom-scroll-into-view": "^1.2.1", "dotenv-defaults": "^2.0.1", "dotenv-webpack": "^1.8.0", - "electron": "11.5.0", + "electron": "15.3.2", "electron-builder": "^22.9.1", "electron-devtools-installer": "^3.1.1", "electron-is-dev": "^0.3.0", diff --git a/ui/component/common/file-selector.jsx b/ui/component/common/file-selector.jsx index 9e428986a..38dd92102 100644 --- a/ui/component/common/file-selector.jsx +++ b/ui/component/common/file-selector.jsx @@ -1,6 +1,6 @@ // @flow import * as React from 'react'; -import { remote } from 'electron'; +import * as remote from '@electron/remote'; import Button from 'component/button'; import { FormField } from 'component/common/form'; @@ -47,7 +47,7 @@ class FileSelector extends React.PureComponent { }; handleDirectoryInputSelection = () => { - remote.dialog.showOpenDialog({ properties: ['openDirectory'] }).then(result => { + remote.dialog.showOpenDialog({ properties: ['openDirectory'] }).then((result) => { const path = result && result.filePaths[0]; if (path) { // $FlowFixMe diff --git a/ui/component/fileRender/view.jsx b/ui/component/fileRender/view.jsx index b99529fb3..0ffe92027 100644 --- a/ui/component/fileRender/view.jsx +++ b/ui/component/fileRender/view.jsx @@ -1,5 +1,5 @@ // @flow -import { remote } from 'electron'; +import * as remote from '@electron/remote'; import React from 'react'; import classnames from 'classnames'; import * as RENDER_MODES from 'constants/file_render_modes'; diff --git a/ui/component/header/view.jsx b/ui/component/header/view.jsx index 2715fe630..b8aadb5d6 100644 --- a/ui/component/header/view.jsx +++ b/ui/component/header/view.jsx @@ -17,10 +17,8 @@ import NotificationHeaderButton from 'component/notificationHeaderButton'; import ChannelThumbnail from 'component/channelThumbnail'; import SkipNavigationButton from 'component/skipNavigationButton'; import Logo from 'component/logo'; -// @if TARGET='app' -import { remote } from 'electron'; +import * as remote from '@electron/remote'; import { IS_MAC } from 'component/app/view'; -// @endif type Props = { user: ?User, diff --git a/ui/component/walletBackup/view.jsx b/ui/component/walletBackup/view.jsx index 3592cbdfb..22df3bffc 100644 --- a/ui/component/walletBackup/view.jsx +++ b/ui/component/walletBackup/view.jsx @@ -1,6 +1,7 @@ // @flow import * as React from 'react'; -import { shell, remote } from 'electron'; +import { shell } from 'electron'; +import * as remote from '@electron/remote'; import Button from 'component/button'; import CopyableText from 'component/copyableText'; import AdmZip from 'adm-zip'; diff --git a/ui/index.jsx b/ui/index.jsx index 0f88a4900..c46e2f8e1 100644 --- a/ui/index.jsx +++ b/ui/index.jsx @@ -5,7 +5,8 @@ import SnackBar from 'component/snackBar'; import SplashScreen from 'component/splash'; import * as ACTIONS from 'constants/action_types'; import { changeZoomFactor } from 'util/zoomWindow'; -import { ipcRenderer, remote, shell } from 'electron'; +import { ipcRenderer, shell } from 'electron'; +import * as remote from '@electron/remote'; import moment from 'moment'; import * as MODALS from 'constants/modal_types'; import React, { Fragment, useState, useEffect } from 'react'; diff --git a/ui/redux/actions/app.js b/ui/redux/actions/app.js index 84da06b75..d9348b752 100644 --- a/ui/redux/actions/app.js +++ b/ui/redux/actions/app.js @@ -1,6 +1,7 @@ import { execSync } from 'child_process'; import isDev from 'electron-is-dev'; -import { ipcRenderer, remote } from 'electron'; +import { ipcRenderer } from 'electron'; +import * as remote from '@electron/remote'; import * as ACTIONS from 'constants/action_types'; import * as MODALS from 'constants/modal_types'; import * as SETTINGS from 'constants/settings'; diff --git a/ui/redux/reducers/app.js b/ui/redux/reducers/app.js index 4772ebb2d..66bb53ed6 100644 --- a/ui/redux/reducers/app.js +++ b/ui/redux/reducers/app.js @@ -1,7 +1,7 @@ // @flow import * as ACTIONS from 'constants/action_types'; -import { remote } from 'electron'; +import * as remote from '@electron/remote'; // @if TARGET='app' const win = remote.BrowserWindow.getFocusedWindow(); diff --git a/ui/util/context-menu.js b/ui/util/context-menu.js index 7d047af65..be2ea4a1a 100644 --- a/ui/util/context-menu.js +++ b/ui/util/context-menu.js @@ -1,4 +1,5 @@ -import { clipboard, remote, shell } from 'electron'; +import { clipboard, shell } from 'electron'; +import * as remote from '@electron/remote'; import { convertToShareLink } from 'util/lbryURI'; const isDev = process.env.NODE_ENV !== 'production'; diff --git a/yarn.lock b/yarn.lock index 011127b58..7738bf4cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1270,22 +1270,27 @@ ajv "^6.12.0" ajv-keywords "^3.4.1" -"@electron/get@^1.0.1": - version "1.12.2" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.12.2.tgz#6442066afb99be08cefb9a281e4b4692b33764f3" - integrity sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg== +"@electron/get@^1.13.0": + version "1.13.1" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.13.1.tgz#42a0aa62fd1189638bd966e23effaebb16108368" + integrity sha512-U5vkXDZ9DwXtkPqlB45tfYnnYBN8PePp1z/XDCupnSpdrxT8/ThCv9WCwPLf9oqiSGZTkH6dx2jDUPuoXpjkcA== dependencies: debug "^4.1.1" env-paths "^2.2.0" fs-extra "^8.1.0" got "^9.6.0" progress "^2.0.3" - sanitize-filename "^1.6.2" + semver "^6.2.0" sumchecker "^3.0.1" optionalDependencies: - global-agent "^2.0.2" + global-agent "^3.0.0" global-tunnel-ng "^2.7.1" +"@electron/remote@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.1.tgz#810cbc595a21f0f94641eb2d7e8264063a3f84de" + integrity sha512-bGX4/yB2bPZwXm1DsxgoABgH0Cz7oFtXJgkerB8VrStYdTyvhGAULzNLRn9rVmeAuC3VUDXaXpZIlZAZHpsLIA== + "@exponent/electron-cookies@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@exponent/electron-cookies/-/electron-cookies-2.0.0.tgz#4cf8dcf851454036cc524c40e9e482fc4e23f2d9" @@ -1769,10 +1774,10 @@ version "13.9.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.0.tgz#5b6ee7a77faacddd7de719017d0bc12f52f81589" -"@types/node@^12.0.12": - version "12.12.62" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.62.tgz#733923d73669188d35950253dd18a21570085d2b" - integrity sha512-qAfo81CsD7yQIM9mVyh6B/U47li5g7cfpVQEDMfQeF8pSZVwzbhwU3crc0qG4DmpsebpJPR49AKOExQyJ05Cpg== +"@types/node@^14.6.2": + version "14.18.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.1.tgz#459886b51f52aa923dc06b9ea81cb8b1d733e9d3" + integrity sha512-fTFWOFrgAkj737w1o0HLTIgisgYHnsZfeiqhG1Ltrf/iJjudEbUwetQAsfrtVE49JGwvpEzQR+EbMkIqG4227g== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -3737,11 +3742,6 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" -core-js@^3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -4710,13 +4710,13 @@ electron-window-state@^4.1.1: jsonfile "^2.2.3" mkdirp "^0.5.1" -electron@11.5.0: - version "11.5.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-11.5.0.tgz#f1650543b9d8f2047d3807755bdb120153ed210f" - integrity sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg== +electron@15.3.2: + version "15.3.2" + resolved "https://registry.yarnpkg.com/electron/-/electron-15.3.2.tgz#4f0cbad781d14e0194f5dfef1709e09a70c8074a" + integrity sha512-sEpOX10gjAyvq33HDxJrq2HhYZT3qndZjUrHkzG16QTLjykP7lMvGnJ/bt6wn+T75f4wwv59FUbQx2hW3Xz5TQ== dependencies: - "@electron/get" "^1.0.1" - "@types/node" "^12.0.12" + "@electron/get" "^1.13.0" + "@types/node" "^14.6.2" extract-zip "^1.0.3" elegant-spinner@^1.0.1: @@ -5914,13 +5914,12 @@ glob@^7.0.5, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-agent@^2.0.2: - version "2.1.12" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.1.12.tgz#e4ae3812b731a9e81cbf825f9377ef450a8e4195" - integrity sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg== +global-agent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== dependencies: boolean "^3.0.1" - core-js "^3.6.5" es6-error "^4.1.1" matcher "^3.0.0" roarr "^2.15.3" @@ -10692,7 +10691,7 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -sanitize-filename@^1.6.2, sanitize-filename@^1.6.3: +sanitize-filename@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== -- 2.45.3 From b02731badbe6f15349f52ddbc1f260321b477d34 Mon Sep 17 00:00:00 2001 From: zeppi Date: Fri, 17 Dec 2021 18:12:21 -0500 Subject: [PATCH 02/29] linter --- electron/createWindow.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/createWindow.js b/electron/createWindow.js index f1a796c3b..399c8ac82 100644 --- a/electron/createWindow.js +++ b/electron/createWindow.js @@ -1,5 +1,5 @@ import { WEBPACK_ELECTRON_PORT } from 'config'; -import { app, BrowserWindow, dialog, shell, screen, nativeImage } from 'electron'; +import { app, BrowserWindow, dialog, screen, nativeImage } from 'electron'; import isDev from 'electron-is-dev'; import windowStateKeeper from 'electron-window-state'; import SUPPORTED_LANGUAGES from 'constants/supported_languages'; -- 2.45.3 From 18619cac203634990444f554c4d479b9c658b343 Mon Sep 17 00:00:00 2001 From: jessopb <36554050+jessopb@users.noreply.github.com> Date: Mon, 20 Dec 2021 16:20:16 -0500 Subject: [PATCH 03/29] successfully repair default hubs when custom hub fails (#7366) --- ui/redux/actions/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/redux/actions/settings.js b/ui/redux/actions/settings.js index 08278b4b4..6ee990bd3 100644 --- a/ui/redux/actions/settings.js +++ b/ui/redux/actions/settings.js @@ -68,7 +68,7 @@ export function doClearDaemonSetting(key) { const state = getState(); const ready = selectPrefsReady(state); - if (!ready) { + if (!ready && key !== DAEMON_SETTINGS.LBRYUM_SERVERS) { return dispatch(doAlertWaitingForSync()); } -- 2.45.3 From 44fd8349a7b07ecc1cf42dff7be06c104789c65d Mon Sep 17 00:00:00 2001 From: jessopb <36554050+jessopb@users.noreply.github.com> Date: Thu, 23 Dec 2021 11:31:20 -0500 Subject: [PATCH 04/29] fix comment replies (#7367) --- ui/component/commentCreate/view.jsx | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/ui/component/commentCreate/view.jsx b/ui/component/commentCreate/view.jsx index d1108cd0e..2ef7f36ad 100644 --- a/ui/component/commentCreate/view.jsx +++ b/ui/component/commentCreate/view.jsx @@ -164,7 +164,7 @@ export function CommentCreate(props: Props) { function handleCommentChange(event) { let commentValue; if (isReply) { - commentValue = event.target.value; + commentValue = advancedEditor ? event : event.target.value; } else { commentValue = advancedEditor ? event : event.target.value; } @@ -596,20 +596,6 @@ export function CommentCreate(props: Props) { setActiveTab(TAB_LBC); }} /> - {/* @if TARGET='web' */} - {stripeEnvironment && ( -