Skip to content

Commit 03e746b

Browse files
committed
feat: show edits on minute version select
1 parent 792f734 commit 03e746b

4 files changed

Lines changed: 77 additions & 60 deletions

File tree

frontend/app/transcriptions/[transcriptionId]/MinuteTab/MinuteTab.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client'
22

3-
import { MinuteEditor } from '@/app/transcriptions/[transcriptionId]/MinuteTab/MinuteEditor'
3+
import { MinuteEditor } from '@/app/transcriptions/[transcriptionId]/MinuteTab/minute-editor/minute-editor'
44
import { NewMinuteDialog } from '@/app/transcriptions/[transcriptionId]/MinuteTab/NewMinuteDialog'
55
import { AudioWav } from '@/components/icons/AudioWav'
66
import {

frontend/app/transcriptions/[transcriptionId]/MinuteTab/ai-edit-popover.tsx renamed to frontend/app/transcriptions/[transcriptionId]/MinuteTab/minute-editor/ai-edit-popover.tsx

File renamed without changes.

frontend/app/transcriptions/[transcriptionId]/MinuteTab/MinuteEditor.tsx renamed to frontend/app/transcriptions/[transcriptionId]/MinuteTab/minute-editor/minute-editor.tsx

Lines changed: 3 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
'use client'
22

3-
import { AiEditPopover } from '@/app/transcriptions/[transcriptionId]/MinuteTab/ai-edit-popover'
43
import SimpleEditor from '@/app/transcriptions/[transcriptionId]/MinuteTab/components/editor/tiptap-editor'
54
import { RatingButton } from '@/app/transcriptions/[transcriptionId]/MinuteTab/components/rating-dialog/rating-dialog'
5+
import { AiEditPopover } from '@/app/transcriptions/[transcriptionId]/MinuteTab/minute-editor/ai-edit-popover'
6+
import { MinuteVersionSelect } from '@/app/transcriptions/[transcriptionId]/MinuteTab/minute-editor/minute-version-select'
67
import { NewMinuteDialog } from '@/app/transcriptions/[transcriptionId]/MinuteTab/NewMinuteDialog'
78
import { Button } from '@/components/ui/button'
89
import CopyButton from '@/components/ui/copy-button'
910
import {
10-
Select,
11-
SelectContent,
12-
SelectItem,
13-
SelectTrigger,
14-
} from '@/components/ui/select'
15-
import {
16-
ContentSource,
1711
MinuteListItem,
1812
MinuteVersionResponse,
1913
Transcription,
@@ -37,30 +31,13 @@ import {
3731
Undo,
3832
} from 'lucide-react'
3933
import posthog from 'posthog-js'
40-
import {
41-
Dispatch,
42-
SetStateAction,
43-
useCallback,
44-
useEffect,
45-
useMemo,
46-
useState,
47-
} from 'react'
34+
import { useCallback, useEffect, useMemo, useState } from 'react'
4835
import { Controller, useForm } from 'react-hook-form'
4936

5037
type MinuteEditorForm = {
5138
html: string
5239
}
5340

54-
const mapContentSource = (source: ContentSource): string => {
55-
if (source === 'ai_edit') {
56-
return 'AI edited'
57-
} else if (source === 'manual_edit') {
58-
return 'Manually edited'
59-
} else {
60-
return 'First version generated'
61-
}
62-
}
63-
6441
export function MinuteEditor({
6542
transcription,
6643
minute,
@@ -303,39 +280,6 @@ export function MinuteEditor({
303280
)
304281
}
305282

306-
const MinuteVersionSelect = ({
307-
minuteVersions,
308-
version,
309-
setVersion,
310-
}: {
311-
minuteVersions: MinuteVersionResponse[]
312-
version: number
313-
setVersion: Dispatch<SetStateAction<number>>
314-
}) => {
315-
return (
316-
<Select value={`${version}`} onValueChange={(v) => setVersion(Number(v))}>
317-
<SelectTrigger className="inline-flex">Edits</SelectTrigger>
318-
<SelectContent>
319-
{minuteVersions.map((v, index) => {
320-
const date = new Date(v.created_datetime!)
321-
return (
322-
<SelectItem key={v.id!} value={`${index}`}>
323-
{mapContentSource(v.content_source)}
324-
<div className="text-muted-foreground flex gap-1 text-xs">
325-
{date.toLocaleDateString()}{' '}
326-
{date.toLocaleTimeString(undefined, {
327-
hour: 'numeric',
328-
minute: 'numeric',
329-
})}
330-
</div>
331-
</SelectItem>
332-
)
333-
})}
334-
</SelectContent>
335-
</Select>
336-
)
337-
}
338-
339283
const MinuteVersionDeleteButton = ({
340284
minuteVersion,
341285
className,
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
'use client'
2+
3+
import {
4+
Select,
5+
SelectContent,
6+
SelectItem,
7+
SelectTrigger,
8+
} from '@/components/ui/select'
9+
import { ContentSource, MinuteVersionResponse } from '@/lib/client'
10+
import { Edit, Wand2 } from 'lucide-react'
11+
import { Dispatch, SetStateAction } from 'react'
12+
13+
const MapContentSource = ({ source }: { source: ContentSource }) => {
14+
if (source === 'ai_edit') {
15+
return (
16+
<div className="items-centre flex gap-1">
17+
<Wand2 />
18+
AI edited
19+
</div>
20+
)
21+
} else if (source === 'manual_edit') {
22+
return (
23+
<div className="items-centre flex gap-1">
24+
<Edit />
25+
Manually edited
26+
</div>
27+
)
28+
} else {
29+
return <div>First version generated</div>
30+
}
31+
}
32+
33+
export const MinuteVersionSelect = ({
34+
minuteVersions,
35+
version,
36+
setVersion,
37+
}: {
38+
minuteVersions: MinuteVersionResponse[]
39+
version: number
40+
setVersion: Dispatch<SetStateAction<number>>
41+
}) => {
42+
return (
43+
<Select value={`${version}`} onValueChange={(v) => setVersion(Number(v))}>
44+
<SelectTrigger className="inline-flex">Edits</SelectTrigger>
45+
<SelectContent>
46+
{minuteVersions.map((v, index) => {
47+
const date = new Date(v.created_datetime!)
48+
return (
49+
<SelectItem key={v.id!} value={`${index}`}>
50+
<div className="flex w-full max-w-md flex-1 flex-col items-start">
51+
<div className="flex items-center gap-2">
52+
<MapContentSource source={v.content_source} />
53+
<div className="text-muted-foreground flex gap-1 text-xs">
54+
{date.toLocaleDateString()}{' '}
55+
{date.toLocaleTimeString(undefined, {
56+
hour: 'numeric',
57+
minute: 'numeric',
58+
})}
59+
</div>
60+
</div>
61+
{v.ai_edit_instructions && (
62+
<div className="border-l-2 pl-2">
63+
<q>{v.ai_edit_instructions}</q>
64+
</div>
65+
)}
66+
</div>
67+
</SelectItem>
68+
)
69+
})}
70+
</SelectContent>
71+
</Select>
72+
)
73+
}

0 commit comments

Comments
 (0)