From f692961823531f088202f1e8c8cebc339925ae96 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Fri, 13 Mar 2026 21:20:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=BB=9F=E4=B8=80=E7=AB=AF?= =?UTF-8?q?=E5=8F=A3=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=80=9A=E8=BF=87=20IPC=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=80=8C=E9=9D=9E=E7=A1=AC=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main.ts | 4 ++++ electron/preload.ts | 1 + src/modules/opencode/OpenCodePage.tsx | 14 +++++++++----- src/types/electron.d.ts | 1 + 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/electron/main.ts b/electron/main.ts index 5d7a6dd..7c48fba 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -366,6 +366,10 @@ ipcMain.handle('xc-opencode-web-get-status', () => { return xcOpenCodeWebService.getStatus(); }); +ipcMain.handle('xc-opencode-web-get-port', () => { + return { port: xcOpenCodeWebService.port }; +}); + ipcMain.handle('xc-opencode-web-start', async () => { return await xcOpenCodeWebService.start(); }); diff --git a/electron/preload.ts b/electron/preload.ts index 687b51b..d9fa6d9 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -44,4 +44,5 @@ contextBridge.exposeInMainWorld('electronAPI', { xcOpenCodeWebStart: () => ipcRenderer.invoke('xc-opencode-web-start'), xcOpenCodeWebStop: () => ipcRenderer.invoke('xc-opencode-web-stop'), xcOpenCodeWebGetStatus: () => ipcRenderer.invoke('xc-opencode-web-get-status'), + xcOpenCodeWebGetPort: () => ipcRenderer.invoke('xc-opencode-web-get-port'), }) diff --git a/src/modules/opencode/OpenCodePage.tsx b/src/modules/opencode/OpenCodePage.tsx index 4bf330a..42d5d88 100644 --- a/src/modules/opencode/OpenCodePage.tsx +++ b/src/modules/opencode/OpenCodePage.tsx @@ -1,16 +1,20 @@ import React, { useEffect, useState } from 'react' -const XCOPENCODEWEB_PORT = 3002 - export const OpenCodePage: React.FC = () => { const [isRunning, setIsRunning] = useState(false) const [error, setError] = useState(null) + const [port, setPort] = useState(3002) useEffect(() => { let mounted = true - const startService = async () => { + const init = async () => { try { + const portResult = await window.electronAPI.xcOpenCodeWebGetPort() + if (mounted) { + setPort(portResult.port) + } + const result = await window.electronAPI.xcOpenCodeWebStart() if (mounted) { if (result.success) { @@ -27,7 +31,7 @@ export const OpenCodePage: React.FC = () => { } } - startService() + init() return () => { mounted = false @@ -51,7 +55,7 @@ export const OpenCodePage: React.FC = () => { {isRunning && (