import { getKey } from '$lib/utils'; import { getAssetInfo, type AssetResponseDto } from '@immich/sdk'; import { writable } from 'svelte/store'; function createAssetViewingStore() { const viewingAssetStoreState = writable(); const preloadAssets = writable([]); const viewState = writable(false); const setAsset = (asset: AssetResponseDto, assetsToPreload: AssetResponseDto[] = []) => { preloadAssets.set(assetsToPreload); viewingAssetStoreState.set(asset); viewState.set(true); }; const setAssetId = async (id: string) => { const asset = await getAssetInfo({ id, key: getKey() }); setAsset(asset); }; const showAssetViewer = (show: boolean) => { viewState.set(show); }; return { asset: { subscribe: viewingAssetStoreState.subscribe, }, preloadAssets: { subscribe: preloadAssets.subscribe, }, isViewing: { subscribe: viewState.subscribe, set: viewState.set, }, setAsset, setAssetId, showAssetViewer, }; } export const assetViewingStore = createAssetViewingStore();