diff --git a/release/app/package.json b/release/app/package.json index c2d9934..5bd81e4 100644 --- a/release/app/package.json +++ b/release/app/package.json @@ -1,6 +1,6 @@ { "name": "aam", - "version": "0.0.1", + "version": "0.0.2", "description": "一个Arcaea资产管理工具", "license": "MIT", "author": { diff --git a/src/main/main.ts b/src/main/main.ts index 8a23212..0d330de 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -14,7 +14,7 @@ import { app, BrowserWindow, shell, ipcMain, dialog } from 'electron'; // import { autoUpdater } from 'electron-updater'; import log, { LevelOption } from 'electron-log'; import installExtension, { REDUX_DEVTOOLS } from 'electron-devtools-installer'; -import { Song, Songlist } from 'type'; +import { AppInfo, Song, Songlist } from 'type'; import MenuBuilder from './menu'; import { resolveHtmlPath } from './util'; @@ -229,5 +229,17 @@ app ipcMain.handle('showLogFile', async () => { shell.openPath(path.dirname(log.transports.file.getFile().path)); }); + + ipcMain.handle('reset', async () => { + globalStore.reset('settings'); + app.exit(); + }); + + ipcMain.handle('getAppInfo', async () => { + return { + version: app.getVersion(), + isDebug, + } as AppInfo; + }); }) .catch(console.log); diff --git a/src/main/preload.ts b/src/main/preload.ts index 3ac8c20..3bf7d11 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -16,6 +16,8 @@ contextBridge.exposeInMainWorld('electron', { }, openDirectory: () => ipcRenderer.invoke('dialog:openDirectory'), showLogFile: () => ipcRenderer.invoke('showLogFile'), + reset: () => ipcRenderer.invoke('reset'), + getAppInfo: () => ipcRenderer.invoke('getAppInfo'), }, }); diff --git a/src/renderer/pages/Settings.tsx b/src/renderer/pages/Settings.tsx index 13827b9..2cfb304 100644 --- a/src/renderer/pages/Settings.tsx +++ b/src/renderer/pages/Settings.tsx @@ -1,15 +1,18 @@ +import { ExclamationCircleFilled } from '@ant-design/icons'; import { Button, Form, Input, InputNumber, Layout, + Modal, Select, Space, Typography, + message, } from 'antd'; -import React from 'react'; -import { SettingsType } from 'type'; +import React, { useState } from 'react'; +import { AppInfo, SettingsType } from 'type'; const Settings: React.FC = () => { const [form] = Form.useForm(); @@ -18,11 +21,18 @@ const Settings: React.FC = () => { | undefined; console.log(settings); + const [messageApi] = message.useMessage(); + + const [appInfo, setAppInfo] = useState(); + const appInfoPromise = window.electron.ipcRenderer + .getAppInfo() + .then((resp) => setAppInfo(resp)); + return ( - <> +
{ ) { window.electron.ipcRenderer.store.set( `settings.${i}`, - changedVal[i] + changedVal[i as keyof SettingsType] ); } } @@ -96,8 +106,44 @@ const Settings: React.FC = () => { + + + + + + 如果您遇到了问题,可以尝试初始化AAM。这将把所有设置恢复到默认状态。 + + + + + + aam -{' '} + {appInfo?.isDebug + ? `development mode, electron ${appInfo.version}` + : appInfo?.version} + +
- +
); }; diff --git a/src/renderer/preload.d.ts b/src/renderer/preload.d.ts index 031be3d..eb16369 100644 --- a/src/renderer/preload.d.ts +++ b/src/renderer/preload.d.ts @@ -1,5 +1,5 @@ import { Channels } from 'main/preload'; -import { IPCResponse, Song, Songlist } from '../type'; +import { AppInfo, IPCResponse, Song, Songlist } from '../type'; declare global { interface Window { @@ -13,6 +13,8 @@ declare global { once(channel: Channels, func: (...args: unknown[]) => void): void; openDirectory: () => Promise; showLogFile: () => Promise; + reset: () => Promise; + getAppInfo: () => Promise; store: { get: (key: string) => unknown; diff --git a/src/type.ts b/src/type.ts index 09050af..77429f4 100644 --- a/src/type.ts +++ b/src/type.ts @@ -66,3 +66,8 @@ export interface SettingsType { minimalRating: number; ignoredSong: string; } + +export interface AppInfo { + version: string; + isDebug: boolean; +}