summaryrefslogtreecommitdiff
path: root/apps/web/src/hooks/timeline
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-04-07 15:51:53 +0200
committerMaze Winther <mazewinther@gmail.com>2026-04-13 05:01:51 +0200
commitf06a930fc1920b7eb396202d429c237ff30c6b5e (patch)
treeacc2aceac282570d02a04b601ea303fc832d5f79 /apps/web/src/hooks/timeline
parent532f050a647d8d667b8cc2c13b816736c1bf9ec6 (diff)
downloadopencut-f06a930fc1920b7eb396202d429c237ff30c6b5e.tar.gz
fix: convert media asset duration to ticks on insert
Diffstat (limited to 'apps/web/src/hooks/timeline')
-rw-r--r--apps/web/src/hooks/timeline/use-timeline-drag-drop.ts16
1 files changed, 11 insertions, 5 deletions
diff --git a/apps/web/src/hooks/timeline/use-timeline-drag-drop.ts b/apps/web/src/hooks/timeline/use-timeline-drag-drop.ts
index 009f0ff6..868c638d 100644
--- a/apps/web/src/hooks/timeline/use-timeline-drag-drop.ts
+++ b/apps/web/src/hooks/timeline/use-timeline-drag-drop.ts
@@ -4,6 +4,7 @@ import { processMediaAssets } from "@/lib/media/processing";
import { toast } from "sonner";
import { showMediaUploadToast } from "@/lib/media/upload-toast";
import { DEFAULT_NEW_ELEMENT_DURATION } from "@/lib/timeline/creation";
+import { TICKS_PER_SECOND } from "@/lib/wasm";
import { BASE_TIMELINE_PIXELS_PER_SECOND } from "@/lib/timeline/scale";
import { roundToFrame } from "opencut-wasm";
import {
@@ -87,7 +88,9 @@ export function useTimelineDragDrop({
if (mediaId) {
const mediaAssets = editor.media.getAssets();
const media = mediaAssets.find((m) => m.id === mediaId);
- return media?.duration ?? DEFAULT_NEW_ELEMENT_DURATION;
+ return media?.duration != null
+ ? Math.round(media.duration * TICKS_PER_SECOND)
+ : DEFAULT_NEW_ELEMENT_DURATION;
}
return DEFAULT_NEW_ELEMENT_DURATION;
},
@@ -342,7 +345,9 @@ export function useTimelineDragDrop({
dragData.mediaType === "audio" ? "audio" : "video";
const duration =
- mediaAsset.duration ?? DEFAULT_NEW_ELEMENT_DURATION;
+ mediaAsset.duration != null
+ ? Math.round(mediaAsset.duration * TICKS_PER_SECOND)
+ : DEFAULT_NEW_ELEMENT_DURATION;
const element = buildElementFromMedia({
mediaId: mediaAsset.id,
mediaType: mediaAsset.type,
@@ -463,9 +468,10 @@ export function useTimelineDragDrop({
});
if (!createdAsset) continue;
- const duration =
- createdAsset.duration ??
- DEFAULT_NEW_ELEMENT_DURATION;
+ const duration =
+ createdAsset.duration != null
+ ? Math.round(createdAsset.duration * TICKS_PER_SECOND)
+ : DEFAULT_NEW_ELEMENT_DURATION;
const sceneTracks = editor.scenes.getActiveScene().tracks;
const currentTime = editor.playback.getCurrentTime();
const reuseMainTrackId =