From 154c142f9c5bb35d1e0731afe8a3f1af6b2bcd78 Mon Sep 17 00:00:00 2001 From: muhammadali-imran Date: Tue, 6 Oct 2026 02:40:04 +0500 Subject: [PATCH 1/4] frontend 1.0.1 --- frontend/package-lock.json | 4 ++-- frontend/package.json | 2 +- frontend/src/pages/RecordingEditor.jsx | 31 +++++++++++++++++--------- frontend/src/styles/admin.css | 6 +++-- frontend/src/styles/components.css | 6 +++-- frontend/src/styles/layout.css | 3 +++ frontend/src/styles/player.css | 9 +++++++- frontend/vercel.json | 8 +++++++ 8 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 frontend/vercel.json diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1411a79..dee19df 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "frontend", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "frontend", - "version": "1.0.0", + "version": "1.0.1", "dependencies": { "@tailwindcss/vite": "^4.3.3", "react": "^19.2.8", diff --git a/frontend/package.json b/frontend/package.json index 1611f8f..967f1cb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "1.0.0", + "version": "1.0.1", "type": "module", "engines": { "node": ">=20.19.0" diff --git a/frontend/src/pages/RecordingEditor.jsx b/frontend/src/pages/RecordingEditor.jsx index ca12597..766aa0f 100644 --- a/frontend/src/pages/RecordingEditor.jsx +++ b/frontend/src/pages/RecordingEditor.jsx @@ -42,6 +42,8 @@ function Editor({ video, recording, onEdit, onSubmit }) { const preview = useRef(null) const { start, end, mirrored } = recording.edit const total = recording.duration + const [trimRange, setTrimRange] = useState({ start, end }) + const [trimApplied, setTrimApplied] = useState(true) const [playing, setPlaying] = useState(false) const [time, setTime] = useState(start) const [confirming, setConfirming] = useState(false) @@ -55,26 +57,32 @@ function Editor({ video, recording, onEdit, onSubmit }) { const fix = () => { if (element.duration !== Infinity) return element.currentTime = 1e101 - element.addEventListener('timeupdate', () => { element.currentTime = start }, { once: true }) + element.addEventListener('timeupdate', () => { element.currentTime = trimRange.start }, { once: true }) } element.addEventListener('loadedmetadata', fix) return () => element.removeEventListener('loadedmetadata', fix) - }, [recording.url, start]) + }, [recording.url, trimRange.start]) const togglePlay = () => { const element = preview.current if (!element.paused) { element.pause(); return } - if (element.currentTime < start || element.currentTime >= end - 0.05) element.currentTime = start + if (element.currentTime < trimRange.start || element.currentTime >= trimRange.end - 0.05) element.currentTime = trimRange.start element.play().catch(() => {}) } const onTimeUpdate = (event) => { const element = event.currentTarget setTime(element.currentTime) - if (!element.paused && element.currentTime >= end) { element.pause(); element.currentTime = end } + if (!element.paused && element.currentTime >= trimRange.end) { element.pause(); element.currentTime = trimRange.end } } const change = (patch) => { - onEdit(patch) - if (preview.current) preview.current.currentTime = patch.start ?? patch.end ?? 0 + setTrimRange((current) => ({ ...current, ...patch })) + setTrimApplied(false) + if (preview.current) preview.current.currentTime = patch.start ?? patch.end ?? trimRange.start + } + const applyTrim = () => { + onEdit(trimRange) + setTrimApplied(true) + if (preview.current) preview.current.currentTime = trimRange.start } const submit = async () => { setBusy(true) @@ -93,24 +101,25 @@ function Editor({ video, recording, onEdit, onSubmit }) {