重新打开应用是否自动登录判断优化 #18

Merged
yangqiang merged 14 commits from yangjie into master 2024-10-11 14:15:18 +08:00
4 changed files with 131 additions and 121 deletions
Showing only changes of commit 4026b79deb - Show all commits

15
main.js
View File

@ -17,7 +17,7 @@ const { autoUpdater, CancellationToken } = require('electron-updater');
const cancellationToken = new CancellationToken() const cancellationToken = new CancellationToken()
app.allowRendererProcessReuse = false; app.allowRendererProcessReuse = false;
let mainWindow = null; let mainWindow = null;
let childWindow = [] let childWindow = {}
let isMaximized = false; let isMaximized = false;
let env; let env;
let regKey; let regKey;
@ -310,18 +310,17 @@ app.on('ready', () => {
enableRemoteModule: true, enableRemoteModule: true,
nodeIntegrationInWorker: true, nodeIntegrationInWorker: true,
allowMediaDevices: true, allowMediaDevices: true,
// preload: path.join(__dirname, 'preload.js') preload: path.join(__dirname, 'preload.js')
}, },
// show: false, show: false,
// frame: false, frame: false,
// backgroundColor: '#00000000', backgroundColor: '#00000000',
// transparent: true, transparent: true,
}) })
child.loadURL(config.url) child.loadURL(config.url)
childWindow.push(child) childWindow[key] = child
child.once('ready-to-show', () => { child.once('ready-to-show', () => {
child.show() child.show()
console.log(config);
child.setSize(config.width, config.height) child.setSize(config.width, config.height)
}) })
}); });

View File

@ -18,6 +18,7 @@ import { agora } from "@/utils/package/agora";
import QuitTips from "@/components/QuitTips"; import QuitTips from "@/components/QuitTips";
import { GetLeave } from "@/api/Meeting"; import { GetLeave } from "@/api/Meeting";
import path from "path"; import path from "path";
import ShareScreenWindow from "./page/ShareScreenWindow";
const fs = require('fs').promises; const fs = require('fs').promises;
const { exec } = require('child_process'); const { exec } = require('child_process');
const App: React.FC = () => { const App: React.FC = () => {
@ -32,122 +33,124 @@ const App: React.FC = () => {
}); });
const [spinning, setSpinning] = useState(false); const [spinning, setSpinning] = useState(false);
const [isState, setIsState] = useState(true); const [isState, setIsState] = useState(true);
useEffect(() => { if (location.hash.indexOf('shareScreenWindow') == -1) {
let userInfo = JSON.parse(storage.getItem('user') as string) useEffect(() => {
let loginInfo = JSON.parse(storage.getItem('login') as string) let userInfo = JSON.parse(storage.getItem('user') as string)
if (userInfo && !userInfo.isAnonymous) { let loginInfo = JSON.parse(storage.getItem('login') as string)
if (loginInfo && loginInfo.isAutoLogin) { if (userInfo && !userInfo.isAnonymous) {
PostLogin({ if (loginInfo && loginInfo.isAutoLogin) {
account: loginInfo.account, PostLogin({
pwd: CryptoJS.MD5(loginInfo.password).toString(CryptoJS.enc.Hex) account: loginInfo.account,
}).then(async (res) => { pwd: CryptoJS.MD5(loginInfo.password).toString(CryptoJS.enc.Hex)
if (res.code === 200) { }).then(async (res) => {
storage.setItem('user', JSON.stringify(res.data)) if (res.code === 200) {
storage.setItem('userLogin', true) storage.setItem('user', JSON.stringify(res.data))
toSrc('/home') storage.setItem('userLogin', true)
await startSignalr() toSrc('/home')
} else { await startSignalr()
toSrc('/login') } else {
} toSrc('/login')
}) }
})
} else {
toSrc('/login')
}
} else { } else {
toSrc('/login') toSrc('/login')
} }
} else { window.addEventListener('resize', handleResize);
toSrc('/login') const originalSetItem = window.localStorage.setItem;
} window.localStorage.setItem = function (key, value) {
window.addEventListener('resize', handleResize); originalSetItem.call(this, key, value);
const originalSetItem = window.localStorage.setItem; const event = new Event('customStorageChange') as any;
window.localStorage.setItem = function (key, value) { event.key = key
originalSetItem.call(this, key, value); event.value = value
const event = new Event('customStorageChange') as any; window.dispatchEvent(event);
event.key = key };
event.value = value window.addEventListener('customStorageChange', handleCustomStorageChange);
window.dispatchEvent(event); return () => {
}; window.removeEventListener('resize', handleResize);
window.addEventListener('customStorageChange', handleCustomStorageChange); window.removeEventListener('customStorageChange', handleCustomStorageChange);
return () => { };
window.removeEventListener('resize', handleResize); }, []);
window.removeEventListener('customStorageChange', handleCustomStorageChange); useEffect(() => {
}; window.electron.downFile(async (_e: any, data: any) => {
}, []); const response = await fetch(data.filePath);
useEffect(() => { const arrayBuffer = await response.arrayBuffer();
window.electron.downFile(async (_e: any, data: any) => { const buffer = Buffer.from(arrayBuffer);
const response = await fetch(data.filePath); fs.writeFile(`${data.downFilePaths}${data.fileName}`, buffer, {});
const arrayBuffer = await response.arrayBuffer(); message.success(`下载成功!文件已保存至:${data.downFilePaths}`)
const buffer = Buffer.from(arrayBuffer); await fs.access(data.downFilePaths, fs.constants.F_OK);
fs.writeFile(`${data.downFilePaths}${data.fileName}`, buffer, {}); if (process.platform === 'win32') {
message.success(`下载成功!文件已保存至:${data.downFilePaths}`) exec(`explorer "${data.downFilePaths}"`);
await fs.access(data.downFilePaths, fs.constants.F_OK); } else if (process.platform === 'darwin') {
if (process.platform === 'win32') { exec(`open "${data.downFilePaths}"`);
exec(`explorer "${data.downFilePaths}"`);
} else if (process.platform === 'darwin') {
exec(`open "${data.downFilePaths}"`);
}
})
window.electron.onFilePath(async (_e: any, filePath: string, key: string) => {
const setting = await JSON.parse(storage.getItem('setting') as string)
if (key === 'recordingFilesPath') {
setting.recordingFilesPath = filePath
} else {
setting.shareFilesPath = filePath
}
storage.setItem('setting', JSON.stringify(setting))
})
window.electron.quitAndInstall(async (_e: any) => {
leaveChannel()
})
}, [])
useEffect(() => {
window.electron.onUpdate((_e: any, data: any) => {
if (location.hash.indexOf('/meeting') === -1) {
updateModalRef.current.changeModal(data)
}
})
if (!storage.getItem('setting')) {
storage.setItem('setting', JSON.stringify({
videoDeviceId: '', //摄像头id
ecordingDeviceId: "", //输入设备id
playBackDeviceId: "", //输出设备id
ecordingVolume: '', //输入音量
playBackVolume: '', //输出音量
autoEcordingVolume: true, //是否自动调整麦克风音量
recordingFilesPath: path.resolve(__dirname, '../../Downloads') + '\\', //本地录制保存路径
shareFilesPath: path.resolve(__dirname, '../../Downloads/') + '\\', //共享文件保存路径
isShareSavePath: true, //是否下载钱询问每个文件保存的位置
closeSetting: 'hide', //关闭按钮设置
isAINoiseReduction: true, //是否开启ai降噪
aINoiseReduction: 1, // 降噪模式
}))
}
}, [])
useEffect(() => {
if (isState) {
setIsState(false)
window.electron.onQuit(async () => {
if (location.hash.indexOf('/login') === 1) {
window.electron.quit()
} else {
if (storage.getItem('isTips') === 'true') {
const setting = JSON.parse(storage.getItem('setting') as string)
if (setting.closeSetting === 'hide') {
window.electron.setViewStatus(setting.closeSetting)
} else {
window.electron.quit()
}
} else {
quitTipsRef.current.changeModal()
}
} }
}) })
} window.electron.onFilePath(async (_e: any, filePath: string, key: string) => {
storage.setItem('stateInfo', JSON.stringify(state)) const setting = await JSON.parse(storage.getItem('setting') as string)
}, [state]) if (key === 'recordingFilesPath') {
useEffect(() => { setting.recordingFilesPath = filePath
if (location.href.indexOf('/login') !== -1) { } else {
onStop() setting.shareFilesPath = filePath
} }
}, [navigate]) storage.setItem('setting', JSON.stringify(setting))
})
window.electron.quitAndInstall(async (_e: any) => {
leaveChannel()
})
}, [])
useEffect(() => {
window.electron.onUpdate((_e: any, data: any) => {
if (location.hash.indexOf('/meeting') === -1) {
updateModalRef.current.changeModal(data)
}
})
if (!storage.getItem('setting')) {
storage.setItem('setting', JSON.stringify({
videoDeviceId: '', //摄像头id
ecordingDeviceId: "", //输入设备id
playBackDeviceId: "", //输出设备id
ecordingVolume: '', //输入音量
playBackVolume: '', //输出音量
autoEcordingVolume: true, //是否自动调整麦克风音量
recordingFilesPath: path.resolve(__dirname, '../../Downloads') + '\\', //本地录制保存路径
shareFilesPath: path.resolve(__dirname, '../../Downloads/') + '\\', //共享文件保存路径
isShareSavePath: true, //是否下载钱询问每个文件保存的位置
closeSetting: 'hide', //关闭按钮设置
isAINoiseReduction: true, //是否开启ai降噪
aINoiseReduction: 1, // 降噪模式
}))
}
}, [])
useEffect(() => {
if (isState) {
setIsState(false)
window.electron.onQuit(async () => {
if (location.hash.indexOf('/login') === 1) {
window.electron.quit()
} else {
if (storage.getItem('isTips') === 'true') {
const setting = JSON.parse(storage.getItem('setting') as string)
if (setting.closeSetting === 'hide') {
window.electron.setViewStatus(setting.closeSetting)
} else {
window.electron.quit()
}
} else {
quitTipsRef.current.changeModal()
}
}
})
}
storage.setItem('stateInfo', JSON.stringify(state))
}, [state])
useEffect(() => {
if (location.href.indexOf('/login') !== -1) {
onStop()
}
}, [navigate])
}
useEffect(() => { useEffect(() => {
document.addEventListener('keydown', (event) => { document.addEventListener('keydown', (event) => {
if (event.key === 'F11') { if (event.key === 'F11') {
@ -239,6 +242,7 @@ const App: React.FC = () => {
</Route> </Route>
<Route path='/login' element={<Login />} /> <Route path='/login' element={<Login />} />
<Route path='/meeting' element={<Meeting />} /> <Route path='/meeting' element={<Meeting />} />
<Route path='/shareScreenWindow' element={<ShareScreenWindow />} />
<Route path='*' element={<NotFound />} /> <Route path='*' element={<NotFound />} />
</Routes> </Routes>
<Spin spinning={spinning} fullscreen /> <Spin spinning={spinning} fullscreen />

View File

@ -1,5 +1,7 @@
.shareScreenWindow { .shareScreenWindow {
background-color: red; background-color: red;
color: red; color: black;
height: 100%;
width: 100%;
font-size: 30px; font-size: 30px;
} }

View File

@ -6,7 +6,12 @@ const ShareScreenWindow: React.FC = () => {
}, []); }, []);
// window.electron.createChildWindow({
// url: location.origin + `/#/shareScreenWindow`,
// width: 600,
// height: 40,
// key: 'shareScreenWindow',
// })
return ( return (
<> <>
<div className={styles.shareScreenWindow}> <div className={styles.shareScreenWindow}>