diff options
| author | Sai Teja <vurukondasaiteja13@gmail.com> | 2025-08-12 03:55:52 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-12 00:25:52 +0200 |
| commit | 3807e146e4e910d16b452b896d4faaf52a314160 (patch) | |
| tree | e7d17b0eca372ceb3703f65e7e9b88870022c23d | |
| parent | a1e48613b404544bfa8a4b23185054bb3651fb51 (diff) | |
| download | opencut-3807e146e4e910d16b452b896d4faaf52a314160.tar.gz | |
feat(playback): restart from beginning when play pressed at end of timeline (Fixes #536) (#542)
| -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); }, |
