78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
const { BrowserWindow } = require('electron')
|
|
const { mainHandle } = require('../../../common/ipc')
|
|
const { getWindowSizeInfo } = require('../../utils')
|
|
|
|
let win
|
|
|
|
const closeWin = async() => {
|
|
if (!win) return
|
|
// await win.webContents.session.clearCache()
|
|
// if (global.mainWindow) global.mainWindow.removeBrowserView(win)
|
|
if (win.isDestroyed()) {
|
|
win = null
|
|
return
|
|
}
|
|
await win.webContents.session.clearStorageData()
|
|
win.destroy()
|
|
win = null
|
|
}
|
|
|
|
mainHandle('xm_verify_open', (event, url) => new Promise((resolve, reject) => {
|
|
if (!global.mainWindow) return reject(new Error('mainwindow is undefined'))
|
|
if (win) win.destroy()
|
|
|
|
let isActioned = false
|
|
|
|
const mainWindowSizeInfo = global.mainWindow.getBounds()
|
|
const windowSizeInfo = getWindowSizeInfo(global.appSetting)
|
|
win = new BrowserWindow({
|
|
parent: global.mainWindow,
|
|
width: 460,
|
|
height: 370,
|
|
resizable: false,
|
|
// transparent: true,
|
|
x: mainWindowSizeInfo.x + (windowSizeInfo.width - 460) / 2,
|
|
y: mainWindowSizeInfo.y + (windowSizeInfo.height - 320 + 52) / 2,
|
|
minimizable: false,
|
|
maximizable: false,
|
|
// movable: false,
|
|
// frame: false,
|
|
// modal: true,
|
|
webPreferences: {
|
|
enableRemoteModule: false,
|
|
disableHtmlFullscreenWindowResize: true,
|
|
},
|
|
})
|
|
win.webContents.on('did-finish-load', () => {
|
|
if (/punish\?/.test(win.webContents.getURL())) return
|
|
let ses = win.webContents.session
|
|
ses.cookies.get({ name: 'x5sec' })
|
|
.then(async([x5sec]) => {
|
|
isActioned = true
|
|
await closeWin()
|
|
if (!x5sec) return reject(new Error('get x5sec failed'))
|
|
resolve(x5sec.value)
|
|
}).catch(async err => {
|
|
isActioned = true
|
|
await closeWin()
|
|
reject(err)
|
|
})
|
|
})
|
|
|
|
win.webContents.loadURL(url, {
|
|
httpReferrer: 'https://www.xiami.com/',
|
|
})
|
|
|
|
win.on('closed', async() => {
|
|
await closeWin()
|
|
if (isActioned) return
|
|
reject(new Error('canceled verify'))
|
|
})
|
|
|
|
// win.webContents.openDevTools()
|
|
}))
|
|
|
|
mainHandle('xm_verify_close', async() => {
|
|
await closeWin()
|
|
})
|