feat: add video resolver, URL input, and video player
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
67
src/lib/stores/videoSession.svelte.ts
Normal file
67
src/lib/stores/videoSession.svelte.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import type { VideoMetadata } from '$lib/bindings/video';
|
||||
import type { ThumbnailSpritesheet } from '$lib/bindings/mediaAnalysis';
|
||||
|
||||
export type SessionStatus = 'idle' | 'resolving' | 'ready' | 'error';
|
||||
|
||||
export const session = $state({
|
||||
status: 'idle' as SessionStatus,
|
||||
error: null as string | null,
|
||||
url: '',
|
||||
title: '',
|
||||
duration: 0,
|
||||
fps: 30,
|
||||
thumbnailUrl: null as string | null,
|
||||
streamUrl: '',
|
||||
currentTime: 0,
|
||||
isPlaying: false,
|
||||
localFilePath: null as string | null,
|
||||
downloadProgress: 0,
|
||||
keyframePositions: [] as number[],
|
||||
waveformPeaks: [] as number[],
|
||||
thumbnailSpritesheets: [] as ThumbnailSpritesheet[],
|
||||
});
|
||||
|
||||
export function setMetadata(meta: VideoMetadata) {
|
||||
session.url = meta.url;
|
||||
session.title = meta.title;
|
||||
session.duration = meta.duration;
|
||||
session.fps = meta.fps;
|
||||
session.thumbnailUrl = meta.thumbnailUrl;
|
||||
session.streamUrl = meta.streamUrl;
|
||||
session.status = 'ready';
|
||||
session.error = null;
|
||||
|
||||
session.localFilePath = null;
|
||||
session.downloadProgress = 0;
|
||||
session.keyframePositions = [];
|
||||
session.waveformPeaks = [];
|
||||
session.thumbnailSpritesheets = [];
|
||||
}
|
||||
|
||||
export function setError(msg: string) {
|
||||
session.status = 'error';
|
||||
session.error = msg;
|
||||
}
|
||||
|
||||
export function setResolving() {
|
||||
session.status = 'resolving';
|
||||
session.error = null;
|
||||
}
|
||||
|
||||
export function reset() {
|
||||
session.status = 'idle';
|
||||
session.error = null;
|
||||
session.url = '';
|
||||
session.title = '';
|
||||
session.duration = 0;
|
||||
session.fps = 30;
|
||||
session.thumbnailUrl = null;
|
||||
session.streamUrl = '';
|
||||
session.currentTime = 0;
|
||||
session.isPlaying = false;
|
||||
session.localFilePath = null;
|
||||
session.downloadProgress = 0;
|
||||
session.keyframePositions = [];
|
||||
session.waveformPeaks = [];
|
||||
session.thumbnailSpritesheets = [];
|
||||
}
|
||||
Reference in New Issue
Block a user