From de4e7481c96f11fc6e218254c5630845b4588758 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Fri, 5 Jul 2024 11:29:56 +0800 Subject: [PATCH] feat: add app version --- src/main/index.ts | 6 +- src/preload/index.d.ts | 6 +- src/preload/index.ts | 6 +- .../src/pages/home/components/Message.tsx | 2 +- .../src/pages/settings/AboutSettings.tsx | 58 ++++++++++++++++++- 5 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index 2dc3474e..87244710 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -76,8 +76,10 @@ app.whenReady().then(() => { optimizer.watchWindowShortcuts(window) }) - // IPC test - ipcMain.on('ping', () => console.log('pong')) + // IPC + ipcMain.handle('get-app-info', () => ({ + version: app.getVersion() + })) createWindow() diff --git a/src/preload/index.d.ts b/src/preload/index.d.ts index d9a3019a..69767f0f 100644 --- a/src/preload/index.d.ts +++ b/src/preload/index.d.ts @@ -3,6 +3,10 @@ import { ElectronAPI } from '@electron-toolkit/preload' declare global { interface Window { electron: ElectronAPI - api: any + api: { + getAppInfo: () => Promise<{ + version: string + }> + } } } diff --git a/src/preload/index.ts b/src/preload/index.ts index 2d185247..8782ff05 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -1,8 +1,10 @@ -import { contextBridge } from 'electron' +import { contextBridge, ipcRenderer } from 'electron' import { electronAPI } from '@electron-toolkit/preload' // Custom APIs for renderer -const api = {} +const api = { + getAppInfo: () => ipcRenderer.invoke('get-app-info') +} // Use `contextBridge` APIs to expose Electron APIs to // renderer only if context isolation is enabled, otherwise diff --git a/src/renderer/src/pages/home/components/Message.tsx b/src/renderer/src/pages/home/components/Message.tsx index db1f5e30..8f905db5 100644 --- a/src/renderer/src/pages/home/components/Message.tsx +++ b/src/renderer/src/pages/home/components/Message.tsx @@ -11,7 +11,7 @@ const MessageItem: FC<{ message: Message }> = ({ message }) => { {message.role === 'assistant' ? : Y} -
+
) } diff --git a/src/renderer/src/pages/settings/AboutSettings.tsx b/src/renderer/src/pages/settings/AboutSettings.tsx index 5b405839..5b893b27 100644 --- a/src/renderer/src/pages/settings/AboutSettings.tsx +++ b/src/renderer/src/pages/settings/AboutSettings.tsx @@ -1,12 +1,66 @@ -import { FC } from 'react' +import { Avatar } from 'antd' +import { FC, useEffect, useState } from 'react' import styled from 'styled-components' +import Logo from '@renderer/assets/images/logo.png' +import { runAsyncFunction } from '@renderer/utils' +import { marked } from 'marked' + +const changeLog = `` const AboutSettings: FC = () => { - return About + const [version, setVersion] = useState('') + + useEffect(() => { + runAsyncFunction(async () => { + const appInfo = await window.api.getAppInfo() + setVersion(appInfo.version) + }) + }, []) + + return ( + + + + Cherry Studio <Version>(v{version})</Version> + + A powerful AI assistant for producer. +
+ + ) } const Container = styled.div` padding: 20px; + display: flex; + width: 100%; + flex-direction: column; + align-items: center; +` + +const Title = styled.div` + font-size: 20px; + font-weight: bold; + color: var(--color-text-1); + margin: 10px 0; +` + +const Version = styled.span` + font-size: 14px; + color: var(--color-text-2); + margin: 10px 0; + text-align: center; +` + +const Description = styled.div` + font-size: 14px; + color: var(--color-text-2); + text-align: center; ` export default AboutSettings