- types.ts:119 stale "Task 25 cleanup" comment 제거 (Task 25 이미 완료) - BackupSection.tsx 의 dead try/catch 제거 + status 단순화 — 모든 IPC 핸들러가 자체 try/catch + Notification 으로 결과 알림. 컴포넌트 status 는 진행 표시 보조용 - index.ts startup #45 autostart 진단 로그를 AutostartDiagnostic.collectAutostartState() 호출로 통합 — single source of truth (SettingsPage 진단 패널과 동일 데이터 소스) 460/460 pass, typecheck 0. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
26 lines
1.3 KiB
TypeScript
26 lines
1.3 KiB
TypeScript
import React, { useState } from 'react';
|
|
import { inboxApi } from '../../api.js';
|
|
|
|
export function BackupSection(): React.ReactElement {
|
|
const [status, setStatus] = useState<string | null>(null);
|
|
|
|
// IPC 핸들러 (settingsApi.ts) 가 자체 try/catch + Notification 으로 결과를 사용자에게 알림.
|
|
// 이 컴포넌트의 status 는 보조 진행 표시 — 결과 (성공/실패) 는 native UX 에 의존.
|
|
async function run(label: string, fn: () => Promise<unknown>): Promise<void> {
|
|
setStatus(`${label}: 진행 중...`);
|
|
await fn();
|
|
setStatus(null);
|
|
}
|
|
|
|
return (
|
|
<div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>
|
|
<button onClick={() => run('지금 백업', () => inboxApi.runBackup())}>지금 백업</button>
|
|
<button onClick={() => run('내보내기', () => inboxApi.runExport())}>내보내기...</button>
|
|
<button onClick={() => run('백업에서 복원', () => inboxApi.runImport())}>백업에서 복원...</button>
|
|
<button onClick={() => run('지금 동기화', () => inboxApi.runSync())}>지금 동기화</button>
|
|
<button onClick={() => run('사용 로그 내보내기', () => inboxApi.runExportTelemetry())}>사용 로그 내보내기...</button>
|
|
{status && <div style={{ fontSize: 12 }}>{status}</div>}
|
|
</div>
|
|
);
|
|
}
|