diff --git a/electron/main/backend/update-center/index.ts b/electron/main/backend/update-center/index.ts index c3eab6b2..6aa1d3e0 100644 --- a/electron/main/backend/update-center/index.ts +++ b/electron/main/backend/update-center/index.ts @@ -535,15 +535,29 @@ export const registerUpdateCenterIpc = ( const results: { aptss?: string; apm?: string } = {}; - const runCommand = (command: string, args: string[]): Promise<{ code: number; stdout: string; stderr: string }> => + const runCommand = ( + command: string, + args: string[], + ): Promise<{ code: number; stdout: string; stderr: string }> => new Promise((resolve) => { - const child = spawn(command, args, { shell: false, env: process.env }); + const child = spawn(command, args, { + shell: false, + env: process.env, + }); let stdout = ""; let stderr = ""; - child.stdout?.on("data", (data) => { stdout += data.toString(); }); - child.stderr?.on("data", (data) => { stderr += data.toString(); }); - child.on("error", (err) => resolve({ code: -1, stdout, stderr: err.message })); - child.on("close", (code) => resolve({ code: code ?? -1, stdout, stderr })); + child.stdout?.on("data", (data) => { + stdout += data.toString(); + }); + child.stderr?.on("data", (data) => { + stderr += data.toString(); + }); + child.on("error", (err) => + resolve({ code: -1, stdout, stderr: err.message }), + ); + child.on("close", (code) => + resolve({ code: code ?? -1, stdout, stderr }), + ); }); const isSourceEnabled = ( @@ -554,17 +568,31 @@ export const registerUpdateCenterIpc = ( // aptss update — 需要提权 if (isSourceEnabled(storeFilter, "spark")) { const whichResult = await runCommand("which", ["aptss"]); - const aptssAvailable = whichResult.code === 0 && whichResult.stdout.trim().length > 0; + const aptssAvailable = + whichResult.code === 0 && whichResult.stdout.trim().length > 0; if (aptssAvailable) { - console.log("[UpdateCenter] Running: pkexec shell-caller aptss ssupdate"); - const superUserCmd = await findExecutable(SUPER_USER_COMMAND_CANDIDATES[0]); + console.log( + "[UpdateCenter] Running: pkexec shell-caller aptss ssupdate", + ); + const superUserCmd = await findExecutable( + SUPER_USER_COMMAND_CANDIDATES[0], + ); if (superUserCmd) { - const result = await runCommand(superUserCmd, [SHELL_CALLER_PATH, "aptss", "ssupdate"]); - results.aptss = result.code === 0 ? "ok" : `failed: ${result.stderr.substring(0, 200)}`; + const result = await runCommand(superUserCmd, [ + SHELL_CALLER_PATH, + "aptss", + "ssupdate", + ]); + results.aptss = + result.code === 0 + ? "ok" + : `failed: ${result.stderr.substring(0, 200)}`; console.log("[UpdateCenter] aptss ssupdate result:", results.aptss); } else { results.aptss = "failed: pkexec not found"; - console.warn("[UpdateCenter] pkexec not found, skipping aptss update"); + console.warn( + "[UpdateCenter] pkexec not found, skipping aptss update", + ); } } else { results.aptss = "skipped: aptss not installed"; @@ -574,17 +602,29 @@ export const registerUpdateCenterIpc = ( // apm update — 也需要提权 if (isSourceEnabled(storeFilter, "apm")) { const whichResult = await runCommand("which", ["apm"]); - const apmAvailable = whichResult.code === 0 && whichResult.stdout.trim().length > 0; + const apmAvailable = + whichResult.code === 0 && whichResult.stdout.trim().length > 0; if (apmAvailable) { console.log("[UpdateCenter] Running: pkexec shell-caller apm update"); - const superUserCmd = await findExecutable(SUPER_USER_COMMAND_CANDIDATES[0]); + const superUserCmd = await findExecutable( + SUPER_USER_COMMAND_CANDIDATES[0], + ); if (superUserCmd) { - const result = await runCommand(superUserCmd, [SHELL_CALLER_PATH, "apm", "update"]); - results.apm = result.code === 0 ? "ok" : `failed: ${result.stderr.substring(0, 200)}`; + const result = await runCommand(superUserCmd, [ + SHELL_CALLER_PATH, + "apm", + "update", + ]); + results.apm = + result.code === 0 + ? "ok" + : `failed: ${result.stderr.substring(0, 200)}`; console.log("[UpdateCenter] apm update result:", results.apm); } else { results.apm = "failed: pkexec not found"; - console.warn("[UpdateCenter] pkexec not found, skipping apm update"); + console.warn( + "[UpdateCenter] pkexec not found, skipping apm update", + ); } } else { results.apm = "skipped: apm not installed"; diff --git a/src/components/AppDetailModal.vue b/src/components/AppDetailModal.vue index 5f437b2a..361c6486 100644 --- a/src/components/AppDetailModal.vue +++ b/src/components/AppDetailModal.vue @@ -197,7 +197,7 @@ class="fas text-xs" :class="spkCopied ? 'fa-check' : 'fa-share-alt'" > - {{ spkCopied ? '已复制链接' : 'SPK 分享' }} + {{ spkCopied ? "已复制链接" : "SPK 分享" }} diff --git a/src/components/AppDetailPage.vue b/src/components/AppDetailPage.vue index 408efd3b..8ddd63c6 100644 --- a/src/components/AppDetailPage.vue +++ b/src/components/AppDetailPage.vue @@ -134,7 +134,7 @@ class="fas text-xs" :class="spkCopied ? 'fa-check' : 'fa-share-alt'" > - {{ spkCopied ? '已复制链接' : 'SPK 分享' }} + {{ spkCopied ? "已复制链接" : "SPK 分享" }} diff --git a/src/components/AppHeader.vue b/src/components/AppHeader.vue index 5c6e0b39..07a1164f 100644 --- a/src/components/AppHeader.vue +++ b/src/components/AppHeader.vue @@ -80,7 +80,8 @@ const handleSearchFocus = () => { const handleInput = () => { const value = localSearchQuery.value.trim(); // 检测 SPK 分享链接: spk://store/{category}/{pkgname} - const spkMatch = value.match(/^spk:\/\/search\/(.+)$/i) || + const spkMatch = + value.match(/^spk:\/\/search\/(.+)$/i) || value.match(/^spk:\/\/store\/[^/]+\/(.+)$/i); if (spkMatch) { const pkgname = spkMatch[1].trim(); diff --git a/src/components/AppSidebar.vue b/src/components/AppSidebar.vue index bcd95679..c1e9674b 100644 --- a/src/components/AppSidebar.vue +++ b/src/components/AppSidebar.vue @@ -96,6 +96,11 @@ + {{ entryCounts[entry.id] }} diff --git a/src/components/SubmitterWindow.vue b/src/components/SubmitterWindow.vue index 8abe13b5..d8bbb226 100644 --- a/src/components/SubmitterWindow.vue +++ b/src/components/SubmitterWindow.vue @@ -46,12 +46,19 @@ class="hidden" @change="handleDebFileSelect" /> -
- {{ isParsingDeb ? '正在解析 deb 文件...' : '正在从服务器查询已上架信息...' }} + {{ + isParsingDeb + ? "正在解析 deb 文件..." + : "正在从服务器查询已上架信息..." + }}