perf/pipeline-improvements #2
@@ -60,12 +60,25 @@
|
||||
function finishEditing(segmentId: string) {
|
||||
const trimmed = editText.trim();
|
||||
if (trimmed) {
|
||||
// Update the segment text in the store
|
||||
// Update the segment text and rebuild words from the edited text.
|
||||
// The display renders segment.words, so we must update them too.
|
||||
segments.update(segs => segs.map(s => {
|
||||
if (s.id !== segmentId) return s;
|
||||
// Rebuild words from the edited text, preserving timing from the
|
||||
// original segment boundaries (individual word timing is lost on edit)
|
||||
const newWords = trimmed.split(/\s+/).map((word, widx) => ({
|
||||
id: `${s.id}-word-${widx}`,
|
||||
segment_id: s.id,
|
||||
word,
|
||||
start_ms: s.start_ms,
|
||||
end_ms: s.end_ms,
|
||||
confidence: 1.0,
|
||||
word_index: widx,
|
||||
}));
|
||||
return {
|
||||
...s,
|
||||
text: trimmed,
|
||||
words: newWords,
|
||||
original_text: s.original_text ?? s.text,
|
||||
is_edited: true,
|
||||
edited_at: new Date().toISOString(),
|
||||
|
||||
Reference in New Issue
Block a user