添加数据库

This commit is contained in:
yuruo
2024-06-12 09:48:26 +08:00
11 changed files with 1577 additions and 43 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -24,8 +24,14 @@
"@electron-toolkit/preload": "^3.0.0",
"@electron-toolkit/utils": "^3.0.0",
"@icon-park/react": "^1.4.2",
"@types/better-sqlite3": "^7.6.10",
"antd": "^5.18.0",
"better-sqlite3": "^11.0.0",
"electron-updater": "^6.1.7",
"localforage": "^1.10.0",
"match-sorter": "^6.3.4",
"react-router-dom": "^6.23.1",
"sort-by": "^0.0.2",
"zustand": "^4.5.2"
},
"devDependencies": {
@@ -39,6 +45,7 @@
"autoprefixer": "^10.4.19",
"electron": "^28.2.0",
"electron-builder": "^24.9.1",
"electron-rebuild": "^3.2.9",
"electron-vite": "^2.0.0",
"eslint": "^8.56.0",
"eslint-plugin-react": "^7.33.2",

View File

@@ -1,6 +1,13 @@
import { BrowserWindow } from "electron"
import { createWindow } from "./window"
let win = null as null|BrowserWindow
const createConfigWindow=()=>{
createWindow()
// 解决重复创建窗口
if(!win) win = createWindow()
// 窗口关闭时将win置为null可再次打开
win.on("closed", ()=>{
win = null
})
}
export { createConfigWindow }

View File

@@ -3,10 +3,11 @@ import { BrowserWindow, shell } from 'electron'
import { is } from '@electron-toolkit/utils'
import icon from '../../../resources/icon.png?asset'
import { join } from 'path'
import url from 'node:url'
export function createWindow(): BrowserWindow { // Create the browser window.
const win = new BrowserWindow({
width: 800,
width: 600,
height: 500,
center: true,
show: false,
@@ -34,9 +35,16 @@ export function createWindow(): BrowserWindow { // Create the browser window.
// HMR for renderer base on electron-vite cli.
// Load the remote URL for development or the local html file for production.
if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
win.loadURL(process.env['ELECTRON_RENDERER_URL'])
win.loadURL(process.env['ELECTRON_RENDERER_URL'] + "/#config")
} else {
win.loadFile(join(__dirname, '../renderer/index.html'))
win.loadURL(
url.format({
pathname: join(__dirname, '../renderer/index.html'),
protocol: 'file',
slashes: true,
hash: 'config'
})
)
}
return win

View File

@@ -0,0 +1,7 @@
import Database, * as BetterSqlite3 from 'better-sqlite3';
import { app } from 'electron';
import {resolve} from 'node:path'
const file = resolve(app.getPath('home'), "Desktop", 'hd.db')
const db: BetterSqlite3.Database = new Database(file, {});
db.pragma('journal_mode = WAL');
export {db};

View File

@@ -1,6 +1,7 @@
import { app, BrowserWindow, ipcMain } from 'electron'
import { electronApp, optimizer } from '@electron-toolkit/utils'
import "./code"
import "./db"
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.

View File

@@ -6,18 +6,16 @@ export default function Search(): JSX.Element {
const search = useStore((state)=>state.search)
const {handleSearch} = useSearch()
return (
<main className="bg-slate-50 p-3 rounded-lg drag" >
<section className="bg-slate-200 p-3 rounded-lg flex items-center gap-1 nodrag">
<main className="bg-slate-50 p-3 rounded-lg" >
<section className="bg-slate-200 p-3 rounded-lg flex items-center gap-1">
<SettingOne
theme="outline"
size="22"
fill="#2f3542"
fill="#34495e"
strokeWidth={4}
className="cursor-pointer"
onClick={()=>{
alert("设置")
console.log("点击了设置")
window.api.openConfigWindow()}}
onClick={()=>window.api.openConfigWindow()
}
/>
<Input
placeholder="请输入内容"
@@ -25,11 +23,6 @@ export default function Search(): JSX.Element {
onChange={handleSearch}
autoFocus
/>
{/* <input
value={search}
onChange={handleSearch}
className="w-full outline-none text-2xl text-slate-600 bg-slate-200"
autoFocus/> */}
</section>
<section className="text-center text-slate-600 text-xs mt-2">autoMate</section>
</main>

View File

@@ -1,11 +1,12 @@
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import '@renderer/assets/tailwind.css'
import '@renderer/assets/global.scss'
import { RouterProvider } from 'react-router-dom'
import router from './router'
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
<React.StrictMode>
<App />
<RouterProvider router={router} />
</React.StrictMode>
)

View File

@@ -0,0 +1,8 @@
export default function Config(){
return (
<div>
Config
</div>
)
}

View File

@@ -0,0 +1,30 @@
import Result from "@renderer/components/Result"
import Search from "@renderer/components/Search"
import { CodeProvider } from "@renderer/context/CodeContext"
import useShortCut from "@renderer/hooks/useShortCut"
import Error from "@renderer/components/Error"
import { MutableRefObject, useEffect, useRef } from "react"
import useIgnoreMouseEvents from "@renderer/hooks/useIgnoreMouseEvents"
function Home(): JSX.Element {
const mainRef = useRef<HTMLDivElement>(null)
const {setIgnoreMouseEvents} = useIgnoreMouseEvents()
useEffect(()=>{
setIgnoreMouseEvents(mainRef as MutableRefObject<HTMLDivElement>)
}, [])
const shortCut = useShortCut()
shortCut.register("search", "CommandOrControl+n")
return (
<CodeProvider>
<main className="relative" ref={mainRef}>
<Error/>
<Search />
<Result />
</main>
</CodeProvider>
)
}
export default Home

View File

@@ -0,0 +1,15 @@
import Config from "@renderer/pages/Config";
import Home from "@renderer/pages/Home";
import { createHashRouter } from "react-router-dom";
const router = createHashRouter([
{
path: "/",
element: <Home />
},
{
path: "config",
element: <Config />
}
])
export default router