|
|
|
@ -2,12 +2,14 @@ import { authManager } from '$lib/managers/auth-manager.svelte';
|
|
|
|
import type { TimelineAsset } from '$lib/managers/timeline-manager/types';
|
|
|
|
import type { TimelineAsset } from '$lib/managers/timeline-manager/types';
|
|
|
|
import { type AssetGridRouteSearchParams } from '$lib/utils/navigation';
|
|
|
|
import { type AssetGridRouteSearchParams } from '$lib/utils/navigation';
|
|
|
|
import { getAssetInfo, type AssetResponseDto } from '@immich/sdk';
|
|
|
|
import { getAssetInfo, type AssetResponseDto } from '@immich/sdk';
|
|
|
|
|
|
|
|
import { Mutex } from 'async-mutex';
|
|
|
|
import { readonly, writable } from 'svelte/store';
|
|
|
|
import { readonly, writable } from 'svelte/store';
|
|
|
|
|
|
|
|
|
|
|
|
function createAssetViewingStore() {
|
|
|
|
function createAssetViewingStore() {
|
|
|
|
const viewingAssetStoreState = writable<AssetResponseDto>();
|
|
|
|
const viewingAssetStoreState = writable<AssetResponseDto>();
|
|
|
|
const preloadAssets = writable<TimelineAsset[]>([]);
|
|
|
|
const preloadAssets = writable<TimelineAsset[]>([]);
|
|
|
|
const viewState = writable<boolean>(false);
|
|
|
|
const viewState = writable<boolean>(false);
|
|
|
|
|
|
|
|
const viewingAssetMutex = new Mutex();
|
|
|
|
const gridScrollTarget = writable<AssetGridRouteSearchParams | null | undefined>();
|
|
|
|
const gridScrollTarget = writable<AssetGridRouteSearchParams | null | undefined>();
|
|
|
|
|
|
|
|
|
|
|
|
const setAsset = (asset: AssetResponseDto, assetsToPreload: TimelineAsset[] = []) => {
|
|
|
|
const setAsset = (asset: AssetResponseDto, assetsToPreload: TimelineAsset[] = []) => {
|
|
|
|
@ -28,6 +30,7 @@ function createAssetViewingStore() {
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
asset: readonly(viewingAssetStoreState),
|
|
|
|
asset: readonly(viewingAssetStoreState),
|
|
|
|
|
|
|
|
mutex: viewingAssetMutex,
|
|
|
|
preloadAssets: readonly(preloadAssets),
|
|
|
|
preloadAssets: readonly(preloadAssets),
|
|
|
|
isViewing: viewState,
|
|
|
|
isViewing: viewState,
|
|
|
|
gridScrollTarget,
|
|
|
|
gridScrollTarget,
|
|
|
|
|