新增 Scheme URL 支持

This commit is contained in:
lyswhut
2022-01-07 17:23:48 +08:00
parent 20518cbe2b
commit a393bb02dd
18 changed files with 448 additions and 28 deletions
+6
View File
@@ -1,7 +1,13 @@
const urlSchemeRxp = /^lxmusic:\/\//
const parseEnv = () => {
const params = {}
const rx = /^-\w+/
for (let param of process.argv) {
if (urlSchemeRxp.test(param)) {
global.envParams.deeplink = param
}
if (!rx.test(param)) continue
param = param.substring(1)
let index = param.indexOf('=')
+36
View File
@@ -1,6 +1,8 @@
const { app, BrowserWindow, shell } = require('electron')
const path = require('path')
const urlSchemeRxp = /^lxmusic:\/\//
// 单例应用程序
if (!app.requestSingleInstanceLock()) {
app.quit()
@@ -8,6 +10,13 @@ if (!app.requestSingleInstanceLock()) {
}
if (!global.modules) global.modules = {}
app.on('second-instance', (event, argv, cwd) => {
for (const param of argv) {
if (urlSchemeRxp.test(param)) {
global.envParams.deeplink = param
break
}
}
if (global.modules.mainWindow) {
if (global.modules.mainWindow.isMinimized()) {
global.modules.mainWindow.restore()
@@ -44,6 +53,33 @@ if (global.envParams.cmdParams['proxy-server']) {
}
// if (global.envParams.cmdParams['proxy-pac-url']) app.commandLine.appendSwitch('proxy-pac-url', global.envParams.cmdParams['proxy-pac-url'])
// deep link
app.on('open-url', (event, url) => {
if (!urlSchemeRxp.test(url)) return
event.preventDefault()
global.envParams.deeplink = url
if (global.modules.mainWindow) {
if (global.modules.mainWindow.isMinimized()) {
global.modules.mainWindow.restore()
}
if (global.modules.mainWindow.isVisible()) {
global.modules.mainWindow.focus()
} else {
global.modules.mainWindow.show()
}
} else if (global.modules.mainWindow === null) {
init()
}
})
if (isDev && process.platform === 'win32') {
// Set the path of electron.exe and your app.
// These two additional parameters are only available on windows.
// console.log(process.execPath, process.argv)
app.setAsDefaultProtocolClient('lxmusic', process.execPath, process.argv.slice(1))
} else {
app.setAsDefaultProtocolClient('lxmusic')
}
const { navigationUrlWhiteList, themes } = require('../common/config')
const { getWindowSizeInfo, initSetting, updateSetting } = require('./utils')
const { isMac, isLinux, initHotKey } = require('../common/utils')
+5 -2
View File
@@ -1,6 +1,9 @@
const { mainHandle, NAMES: { mainWindow: ipcMainWindowNames } } = require('../../common/ipc')
const { mainHandle, mainOn, NAMES: { mainWindow: ipcMainWindowNames } } = require('../../common/ipc')
mainHandle(ipcMainWindowNames.get_env_params, async(event, options) => {
return global.envParams.cmdParams
return global.envParams
})
mainOn(ipcMainWindowNames.clear_env_params_deeplink, () => {
global.envParams.deeplink = null
})