diff options
| author | ryu <ryumacodes@gmail.com> | 2025-08-13 14:01:07 +0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-13 14:01:07 +0500 |
| commit | 0ae09c9df5591e2d18991a9f98647826997fe740 (patch) | |
| tree | 69738461bd269ad418bc82c47e64a2670cee7f19 /apps/web/src/stores/playback-store.ts | |
| parent | e71788014d137a74f10420601451ddfbb84701bb (diff) | |
| parent | f7fddff1fc8359fc056a2a90488121980fb8ead2 (diff) | |
| download | opencut-0ae09c9df5591e2d18991a9f98647826997fe740.tar.gz | |
Merge branch 'staging' into feat/timeline-return-to-start
Diffstat (limited to 'apps/web/src/stores/playback-store.ts')
| -rw-r--r-- | apps/web/src/stores/playback-store.ts | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/apps/web/src/stores/playback-store.ts b/apps/web/src/stores/playback-store.ts index feea0f46..a92cb530 100644 --- a/apps/web/src/stores/playback-store.ts +++ b/apps/web/src/stores/playback-store.ts @@ -82,6 +82,24 @@ export const usePlaybackStore = create<PlaybackStore>((set, get) => ({ speed: 1.0, play: () => { + const state = get(); + + const actualContentDuration = useTimelineStore + .getState() + .getTotalDuration(); + const effectiveDuration = + actualContentDuration > 0 ? actualContentDuration : state.duration; + + if (effectiveDuration > 0) { + const fps = useProjectStore.getState().activeProject?.fps ?? 30; + const frameOffset = 1 / fps; + const endThreshold = Math.max(0, effectiveDuration - frameOffset); + + if (state.currentTime >= endThreshold) { + get().seek(0); + } + } + set({ isPlaying: true }); startTimer(get); }, |
