Silent timeline removed when hitting export

This commit is contained in:
2026-02-27 00:23:51 -08:00
parent c82ac37358
commit 96e99d2029
4 changed files with 42 additions and 17 deletions

View File

@@ -10,6 +10,7 @@ type WsMsg =
| { type: 'segments'; segments: { start: number; end: number }[]; duration: number }
| { type: 'progress'; percent: number }
| { type: 'done'; message: string }
| { type: 'timeline'; segments: { start: number; end: number }[]; duration: number }
| { type: 'error'; message: string }
type Phase = 'idle' | 'uploading' | 'analyzing' | 'ready' | 'exporting' | 'done'
@@ -66,6 +67,13 @@ export default function App() {
return { ...prev, progress: msg.percent }
case 'done':
return { ...prev, phase: 'done', outputFile: msg.message, progress: 100 }
case 'timeline':
return {
...prev,
phase: 'ready',
duration: msg.duration,
segments: msg.segments.map((s) => ({ ...s, kept: true })),
}
case 'error':
return { ...prev, phase: 'ready', error: msg.message }
default:
@@ -86,7 +94,7 @@ export default function App() {
minSilence: number,
padding: number,
) => {
setState((prev) => ({ ...prev, phase: 'analyzing', segments: [], error: null }))
setState((prev) => ({ ...prev, phase: 'analyzing', segments: [], outputFile: null, error: null }))
try {
const res = await fetch('/analyze', {
method: 'POST',
@@ -136,7 +144,7 @@ export default function App() {
const res = await fetch('/export', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ filename: state.filename, segments: kept }),
body: JSON.stringify({ filename: state.filename, segments: kept, duration: state.duration }),
})
if (!res.ok) throw new Error(await res.text())
} catch (e) {
@@ -254,7 +262,7 @@ export default function App() {
</div>
)}
{state.phase === 'done' && state.outputFile && (
{state.outputFile && (
<div className="done-panel">
<span className="done-check"></span>
<p>Export complete!</p>