From 4026b79debc1d56c614d139fd5a4badfaa6081c3 Mon Sep 17 00:00:00 2001
From: yj <1336058017@qq.com>
Date: Thu, 10 Oct 2024 17:21:35 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=AA=97=E5=8F=A3(=E6=97=A0?=
=?UTF-8?q?=E5=BD=B1=E5=93=8D)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
main.js | 15 +-
src/App.tsx | 226 ++++++++++---------
src/page/ShareScreenWindow/index.module.scss | 4 +-
src/page/ShareScreenWindow/index.tsx | 7 +-
4 files changed, 131 insertions(+), 121 deletions(-)
diff --git a/main.js b/main.js
index c192ae1..2dee41b 100644
--- a/main.js
+++ b/main.js
@@ -17,7 +17,7 @@ const { autoUpdater, CancellationToken } = require('electron-updater');
const cancellationToken = new CancellationToken()
app.allowRendererProcessReuse = false;
let mainWindow = null;
-let childWindow = []
+let childWindow = {}
let isMaximized = false;
let env;
let regKey;
@@ -310,18 +310,17 @@ app.on('ready', () => {
enableRemoteModule: true,
nodeIntegrationInWorker: true,
allowMediaDevices: true,
- // preload: path.join(__dirname, 'preload.js')
+ preload: path.join(__dirname, 'preload.js')
},
- // show: false,
- // frame: false,
- // backgroundColor: '#00000000',
- // transparent: true,
+ show: false,
+ frame: false,
+ backgroundColor: '#00000000',
+ transparent: true,
})
child.loadURL(config.url)
- childWindow.push(child)
+ childWindow[key] = child
child.once('ready-to-show', () => {
child.show()
- console.log(config);
child.setSize(config.width, config.height)
})
});
diff --git a/src/App.tsx b/src/App.tsx
index 8203424..c6d6195 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -18,6 +18,7 @@ import { agora } from "@/utils/package/agora";
import QuitTips from "@/components/QuitTips";
import { GetLeave } from "@/api/Meeting";
import path from "path";
+import ShareScreenWindow from "./page/ShareScreenWindow";
const fs = require('fs').promises;
const { exec } = require('child_process');
const App: React.FC = () => {
@@ -32,122 +33,124 @@ const App: React.FC = () => {
});
const [spinning, setSpinning] = useState(false);
const [isState, setIsState] = useState(true);
- useEffect(() => {
- let userInfo = JSON.parse(storage.getItem('user') as string)
- let loginInfo = JSON.parse(storage.getItem('login') as string)
- if (userInfo && !userInfo.isAnonymous) {
- if (loginInfo && loginInfo.isAutoLogin) {
- PostLogin({
- account: loginInfo.account,
- pwd: CryptoJS.MD5(loginInfo.password).toString(CryptoJS.enc.Hex)
- }).then(async (res) => {
- if (res.code === 200) {
- storage.setItem('user', JSON.stringify(res.data))
- storage.setItem('userLogin', true)
- toSrc('/home')
- await startSignalr()
- } else {
- toSrc('/login')
- }
- })
+ if (location.hash.indexOf('shareScreenWindow') == -1) {
+ useEffect(() => {
+ let userInfo = JSON.parse(storage.getItem('user') as string)
+ let loginInfo = JSON.parse(storage.getItem('login') as string)
+ if (userInfo && !userInfo.isAnonymous) {
+ if (loginInfo && loginInfo.isAutoLogin) {
+ PostLogin({
+ account: loginInfo.account,
+ pwd: CryptoJS.MD5(loginInfo.password).toString(CryptoJS.enc.Hex)
+ }).then(async (res) => {
+ if (res.code === 200) {
+ storage.setItem('user', JSON.stringify(res.data))
+ storage.setItem('userLogin', true)
+ toSrc('/home')
+ await startSignalr()
+ } else {
+ toSrc('/login')
+ }
+ })
+ } else {
+ toSrc('/login')
+ }
} else {
toSrc('/login')
}
- } else {
- toSrc('/login')
- }
- window.addEventListener('resize', handleResize);
- const originalSetItem = window.localStorage.setItem;
- window.localStorage.setItem = function (key, value) {
- originalSetItem.call(this, key, value);
- const event = new Event('customStorageChange') as any;
- event.key = key
- event.value = value
- window.dispatchEvent(event);
- };
- window.addEventListener('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);
- const arrayBuffer = await response.arrayBuffer();
- const buffer = Buffer.from(arrayBuffer);
- fs.writeFile(`${data.downFilePaths}${data.fileName}`, buffer, {});
- message.success(`下载成功!文件已保存至:${data.downFilePaths}`)
- await fs.access(data.downFilePaths, fs.constants.F_OK);
- if (process.platform === 'win32') {
- 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.addEventListener('resize', handleResize);
+ const originalSetItem = window.localStorage.setItem;
+ window.localStorage.setItem = function (key, value) {
+ originalSetItem.call(this, key, value);
+ const event = new Event('customStorageChange') as any;
+ event.key = key
+ event.value = value
+ window.dispatchEvent(event);
+ };
+ window.addEventListener('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);
+ const arrayBuffer = await response.arrayBuffer();
+ const buffer = Buffer.from(arrayBuffer);
+ fs.writeFile(`${data.downFilePaths}${data.fileName}`, buffer, {});
+ message.success(`下载成功!文件已保存至:${data.downFilePaths}`)
+ await fs.access(data.downFilePaths, fs.constants.F_OK);
+ if (process.platform === 'win32') {
+ exec(`explorer "${data.downFilePaths}"`);
+ } else if (process.platform === 'darwin') {
+ exec(`open "${data.downFilePaths}"`);
}
})
- }
- storage.setItem('stateInfo', JSON.stringify(state))
- }, [state])
- useEffect(() => {
- if (location.href.indexOf('/login') !== -1) {
- onStop()
- }
- }, [navigate])
+ 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()
+ }
+ }
+ })
+ }
+ storage.setItem('stateInfo', JSON.stringify(state))
+ }, [state])
+ useEffect(() => {
+ if (location.href.indexOf('/login') !== -1) {
+ onStop()
+ }
+ }, [navigate])
+ }
useEffect(() => {
document.addEventListener('keydown', (event) => {
if (event.key === 'F11') {
@@ -239,6 +242,7 @@ const App: React.FC = () => {