fix: export/import — отмена пользователем не показывает error toast

Bug: при отмене save-dialog или open-dialog DataCard показывал тост
«Не удалось сохранить» / «Файл не подошёл». Но cancel — это не ошибка.

Расширил IPC возврат: { ok, canceled, path?, error? }. UI теперь
различает: ok → success toast, !ok && canceled → молча, !ok && !canceled
→ error toast.

+9 тестов на validateSettingsPatch для voicePromptsEnabled,
meetingAutoPause, lastSeenVersion (semver-regex / null-сброс /
malformed). Итого 159 → 168 тестов.

Settings → About теперь показывает текущую версию приложения
(раньше была только кнопка «Что нового»). Загружается через
IPC.getAppVersion при mount.
This commit is contained in:
AnRil
2026-05-22 23:26:11 +07:00
parent 0c813c3ac8
commit 2b7eb412c7
4 changed files with 84 additions and 12 deletions

View File

@@ -261,7 +261,8 @@ function DataCard(): JSX.Element {
const r = await window.api.exportState()
if (r.ok && r.path) {
setToast(t('settings.data.export.ok', { path: r.path }))
} else if (!r.ok) {
} else if (!r.ok && !r.canceled) {
// canceled — пользователь сам передумал, тост не нужен.
setToast(t('settings.data.export.err'))
}
} finally {
@@ -275,7 +276,8 @@ function DataCard(): JSX.Element {
try {
const r = await window.api.importState()
if (r.ok) setToast(t('settings.data.import.ok'))
else if ('error' in r && r.error !== undefined) {
else if (!r.canceled) {
// canceled — пользователь не выбрал файл, не показываем error.
setToast(t('settings.data.import.err'))
}
} finally {