Skip to content

Commit 3b2d326

Browse files
committed
Rime-Wanxiang-Updater:improve:调整首页一些按钮和操作逻辑
1 parent a20738e commit 3b2d326

3 files changed

Lines changed: 65 additions & 13 deletions

File tree

Rime-Wanxiang-Updater/components/HomeView.tsx

Lines changed: 60 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,8 @@ function progressStageLabel(stage: string): string {
581581
}
582582

583583
export function HomeView() {
584+
const supportsMinimization =
585+
typeof Script.supportsMinimization === "function" && Script.supportsMinimization()
584586
const [cfg, setCfg] = useState<AppConfig>(() => loadConfig())
585587
const logProxyRef = useRef<any>()
586588

@@ -986,11 +988,48 @@ export function HomeView() {
986988
}
987989
}
988990

991+
async function minimizeScript() {
992+
if (!supportsMinimization || busy) return
993+
try {
994+
; (globalThis as any).HapticFeedback?.mediumImpact?.()
995+
} catch { }
996+
try {
997+
await Script.minimize()
998+
} catch { }
999+
}
1000+
9891001
function closeScript() {
9901002
try {
9911003
; (globalThis as any).HapticFeedback?.mediumImpact?.()
9921004
} catch { }
993-
Script.exit()
1005+
if (!busy) {
1006+
Script.exit()
1007+
return
1008+
}
1009+
setAlert({
1010+
title: "退出当前更新?",
1011+
isPresented: true,
1012+
message: <Text>当前有更新任务正在进行,退出后将关闭当前脚本界面。是否继续退出?</Text>,
1013+
actions: (
1014+
<HStack>
1015+
<Button
1016+
title="取消"
1017+
action={() => {
1018+
try { (globalThis as any).HapticFeedback?.mediumImpact?.() } catch { }
1019+
closeAlert()
1020+
}}
1021+
/>
1022+
<Button
1023+
title="退出"
1024+
action={() => {
1025+
try { (globalThis as any).HapticFeedback?.mediumImpact?.() } catch { }
1026+
closeAlert()
1027+
Script.exit()
1028+
}}
1029+
/>
1030+
</HStack>
1031+
),
1032+
})
9941033
}
9951034

9961035
async function openFullscreenLogs() {
@@ -1455,18 +1494,30 @@ export function HomeView() {
14551494
}}
14561495
>
14571496
<List
1458-
navigationTitle={"方案更新"}
1497+
navigationTitle={"万象工具"}
14591498
navigationBarTitleDisplayMode={"inline"}
14601499
listStyle={"insetGroup"}
14611500
toolbar={{
14621501
topBarLeading: (
1463-
<Button
1464-
title=""
1465-
systemImage="xmark.circle.fill"
1466-
buttonStyle="plain"
1467-
foregroundStyle="systemRed"
1468-
action={closeScript}
1469-
/>
1502+
<HStack spacing={8}>
1503+
<Button
1504+
title=""
1505+
systemImage="xmark.circle"
1506+
foregroundStyle="systemRed"
1507+
action={closeScript}
1508+
/>
1509+
{supportsMinimization ? (
1510+
<Button
1511+
title=""
1512+
systemImage="minus.circle"
1513+
foregroundStyle={busy ? "secondaryLabel" : "systemBlue"}
1514+
disabled={busy}
1515+
action={() => {
1516+
void minimizeScript()
1517+
}}
1518+
/>
1519+
) : null}
1520+
</HStack>
14701521
),
14711522
topBarTrailing: (
14721523
<HStack spacing={8}>

Rime-Wanxiang-Updater/components/SettingsView.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ export function SettingsView(props: {
214214
})
215215
}
216216

217-
async function syncSchemeFromLocal(base: AppConfig, strictPredict = false): Promise<AppConfig> {
217+
async function syncSchemeFromLocal(base: AppConfig): Promise<AppConfig> {
218218
let detected = ""
219219
let detectedEngine = ""
220220
try {
@@ -320,7 +320,7 @@ export function SettingsView(props: {
320320
if (pathChanged) {
321321
try {
322322
let next = { ...loadConfig(), hamsterRootPath: selectedPath, hamsterBookmarkName: matched.name }
323-
next = await syncSchemeFromLocal(next, true)
323+
next = await syncSchemeFromLocal(next)
324324
setCfg(next)
325325
} catch { }
326326
}
@@ -357,7 +357,7 @@ export function SettingsView(props: {
357357
fixed.hamsterRootPath !== initialHamsterRootPath ||
358358
fixed.hamsterBookmarkName !== initialHamsterBookmarkName
359359
if (pathChanged) {
360-
fixed = await syncSchemeFromLocal(fixed, false)
360+
fixed = await syncSchemeFromLocal(fixed)
361361
}
362362
saveConfig(fixed)
363363
const schemeChanged =
@@ -470,7 +470,7 @@ export function SettingsView(props: {
470470
hamsterBookmarkName: b.name,
471471
}
472472
try {
473-
next = await syncSchemeFromLocal(next, true)
473+
next = await syncSchemeFromLocal(next)
474474
setCfg(next)
475475
} catch { }
476476
})()

Rime-Wanxiang-Updater/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ async function presentHome() {
1313
try {
1414
await Navigation.present({
1515
element: <HomeView />,
16+
modalPresentationStyle: "fullScreen",
1617
})
1718
} finally {
1819
isPresentingHome = false

0 commit comments

Comments
 (0)