From a2e09e5b982303ec5df8be46a20f766454bfcf91 Mon Sep 17 00:00:00 2001 From: ruotongyu Date: Sat, 22 Jun 2024 08:12:13 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20ui(autoMate/src/main/db/query.ts?= =?UTF-8?q?):=20=E6=B7=BB=E5=8A=A0config=E6=96=B9=E6=B3=95=E4=BB=A5?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=F0=9F=93=9D=20ui(autoMate/src/main/shortCut.ts):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9registerSearchShortCut=E5=87=BD=E6=95=B0=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=20=F0=9F=93=9D=20ui(autoMate/src/preload/index.d.ts):?= =?UTF-8?q?=20=E6=9B=B4=E6=96=B0shortCut=E5=87=BD=E6=95=B0=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=20=F0=9F=93=9D=20ui(autoMate/src/preload/index.ts):?= =?UTF-8?q?=20=E6=9B=B4=E6=96=B0shortCut=E5=87=BD=E6=95=B0=E8=B0=83?= =?UTF-8?q?=E7=94=A8=20=F0=9F=93=9D=20ui(autoMate/src/renderer/src/hooks/u?= =?UTF-8?q?seShortCut.ts):=20=E4=BF=AE=E6=94=B9shortCut=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E8=B0=83=E7=94=A8=20=F0=9F=93=9D=20ui(autoMate/src/renderer/sr?= =?UTF-8?q?c/pages/Setting/SettingAction.ts):=20=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE=E6=B3=A8=E5=86=8C=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E5=BA=93=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=20=F0=9F=93=9D=20ui(autoMate/types.d.ts):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?'config'=E5=88=B0SqlActionType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/autoMate/src/main/db/query.ts | 5 +++++ ui/autoMate/src/main/shortCut.ts | 12 ++++++------ ui/autoMate/src/preload/index.d.ts | 2 +- ui/autoMate/src/preload/index.ts | 4 ++-- ui/autoMate/src/renderer/src/App.tsx | 4 ++-- .../src/renderer/src/hooks/useShortCut.ts | 5 +++-- .../src/renderer/src/layouts/Home/index.tsx | 2 +- .../renderer/src/pages/Setting/SettingAction.ts | 17 +++++++++++------ ui/autoMate/types.d.ts | 2 +- 9 files changed, 32 insertions(+), 21 deletions(-) diff --git a/ui/autoMate/src/main/db/query.ts b/ui/autoMate/src/main/db/query.ts index 2f8aab8..2000f0c 100644 --- a/ui/autoMate/src/main/db/query.ts +++ b/ui/autoMate/src/main/db/query.ts @@ -20,4 +20,9 @@ export const update = (sql: string, params: Record) => { export const del = (sql: string, params={}) => { return db.prepare(sql).run(params).changes; +} + +export const config = () => { + const ret = findOne(`select * from config where id=1`) as {content: string} + return JSON.parse(ret.content) } \ No newline at end of file diff --git a/ui/autoMate/src/main/shortCut.ts b/ui/autoMate/src/main/shortCut.ts index 311f866..d2f56f3 100644 --- a/ui/autoMate/src/main/shortCut.ts +++ b/ui/autoMate/src/main/shortCut.ts @@ -4,19 +4,19 @@ import { getWindowByName } from "./windows" import { findOne } from "./db/query" const { app, globalShortcut } = require('electron') -ipcMain.handle("shortCut", (_event: IpcMainInvokeEvent, type) => { +ipcMain.handle("shortCut", (_event: IpcMainInvokeEvent, shortCut: string) => { // react 严格模式会执行两次,可能会导致快捷键重复注册,这里在注册前会删除旧快捷键,也用户注册过快捷键想修改成其他快捷键 - return registerSearchShortCut( ) + return registerSearchShortCut(shortCut) }) -function registerSearchShortCut(){ - const ret = findOne(`select * from config where id=1`) as {content: string} - const shortCut = JSON.parse(ret.content).shortCut as string +function registerSearchShortCut(shortCut: string){ + // const ret = findOne(`select * from config where id=1`) as {content: string} + // const shortCut = JSON.parse(ret.content).shortCut as string if (globalShortcut.isRegistered(shortCut)){ - globalShortcut.unregister(shortCut) + return false } const win = getWindowByName('search') const res = globalShortcut.register(shortCut, () => { diff --git a/ui/autoMate/src/preload/index.d.ts b/ui/autoMate/src/preload/index.d.ts index 4c4881b..a75dfe0 100644 --- a/ui/autoMate/src/preload/index.d.ts +++ b/ui/autoMate/src/preload/index.d.ts @@ -4,7 +4,7 @@ declare global { interface Window { electron: ElectronAPI api: { - shortCut: () => Promise, + shortCut: (shortCut: string) => Promise, setIgnoreMouseEvents: (ignore: boolean, options?: { forward: boolean }) => void, openConfigWindow: () => void, sql: (sql: string, type: SqlActionType, params?: Record) => Promise diff --git a/ui/autoMate/src/preload/index.ts b/ui/autoMate/src/preload/index.ts index 5a5879b..9c5b528 100644 --- a/ui/autoMate/src/preload/index.ts +++ b/ui/autoMate/src/preload/index.ts @@ -3,8 +3,8 @@ import { electronAPI } from '@electron-toolkit/preload' // Custom APIs for renderer const api = { - shortCut: () => { - return ipcRenderer.invoke("shortCut") + shortCut: (shortCut: string) => { + return ipcRenderer.invoke("shortCut", shortCut) }, setIgnoreMouseEvents: (ignore: boolean, options?: { forward: boolean }) => { ipcRenderer.send("setIgnoreMouseEvents", ignore, options) diff --git a/ui/autoMate/src/renderer/src/App.tsx b/ui/autoMate/src/renderer/src/App.tsx index b4e188f..fe8fe06 100644 --- a/ui/autoMate/src/renderer/src/App.tsx +++ b/ui/autoMate/src/renderer/src/App.tsx @@ -13,8 +13,8 @@ function App(): JSX.Element { useEffect(()=>{ setIgnoreMouseEvents(mainRef as MutableRefObject) }, []) - const shortCut = useShortCut() - shortCut.register("search", "CommandOrControl+n") + // const shortCut = useShortCut("CommandOrControl+n") + // shortCut.register() return (
diff --git a/ui/autoMate/src/renderer/src/hooks/useShortCut.ts b/ui/autoMate/src/renderer/src/hooks/useShortCut.ts index 43f4bf0..efbc1ad 100644 --- a/ui/autoMate/src/renderer/src/hooks/useShortCut.ts +++ b/ui/autoMate/src/renderer/src/hooks/useShortCut.ts @@ -3,8 +3,9 @@ import { useStore } from "@renderer/store/useStore" export default() => { const setError = useStore(state => state.setError) const register = async ()=>{ - const ret = await window.api.shortCut() - ret || setError("注册失败") + const ret = (await window.api.sql('', 'config')) as Record + const isBind = await window.api.shortCut(ret.shortCut) + isBind || setError("注册失败") } return { diff --git a/ui/autoMate/src/renderer/src/layouts/Home/index.tsx b/ui/autoMate/src/renderer/src/layouts/Home/index.tsx index adecaf0..50ea240 100644 --- a/ui/autoMate/src/renderer/src/layouts/Home/index.tsx +++ b/ui/autoMate/src/renderer/src/layouts/Home/index.tsx @@ -15,7 +15,7 @@ function Home(): JSX.Element { // //为开发方便,临时代码 // window.api.openConfigWindow() }, []) - // 注册快捷键 + // // 注册快捷键 const shortCut = useShortCut() shortCut.register() return ( diff --git a/ui/autoMate/src/renderer/src/pages/Setting/SettingAction.ts b/ui/autoMate/src/renderer/src/pages/Setting/SettingAction.ts index ab30030..5f47524 100644 --- a/ui/autoMate/src/renderer/src/pages/Setting/SettingAction.ts +++ b/ui/autoMate/src/renderer/src/pages/Setting/SettingAction.ts @@ -1,11 +1,16 @@ export default async ({request})=>{ const formData = await request.formData() const data = Object.fromEntries(formData) - window.api.sql(`update config set content=@content where id = 1`, - 'update', - { - content: JSON.stringify(data) - } - ) + + const isRegistered = await window.api.shortCut(data.shortCut) + if (isRegistered){ + return window.api.sql(`update config set content=@content where id = 1`, + 'update', + { + content: JSON.stringify(data) + } + ) + } + return {} } \ No newline at end of file diff --git a/ui/autoMate/types.d.ts b/ui/autoMate/types.d.ts index 02a3612..16979b2 100644 --- a/ui/autoMate/types.d.ts +++ b/ui/autoMate/types.d.ts @@ -1,4 +1,4 @@ -type SqlActionType = 'findAll' | 'findOne' | 'create' | 'update' | 'del' +type SqlActionType = 'findAll' | 'findOne' | 'create' | 'update' | 'del'|'config' type CategoryType = { id: number