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