mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
0bbe70e6a3
* feat(web): lighter timeline buckets * GalleryViewer * weird ssr * Remove generics from AssetInteraction * ensure keys on getAssetInfo, alt-text * empty - trigger ci * re-add alt-text * test fix * update tests * tests * missing import * fix: flappy e2e test * lint * revert settings * unneeded cast * fix after merge * missing import * lint * review * lint * avoid abbreviations * review comment - type safety in test * merge conflicts * lint * lint/abbreviations * fix: left-over migration --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { authManager } from '$lib/managers/auth-manager.svelte';
|
|
import type { TimelineAsset } from '$lib/stores/assets-store.svelte';
|
|
import { type AssetGridRouteSearchParams } from '$lib/utils/navigation';
|
|
import { getAssetInfo, type AssetResponseDto } from '@immich/sdk';
|
|
import { readonly, writable } from 'svelte/store';
|
|
|
|
function createAssetViewingStore() {
|
|
const viewingAssetStoreState = writable<AssetResponseDto>();
|
|
const preloadAssets = writable<TimelineAsset[]>([]);
|
|
const viewState = writable<boolean>(false);
|
|
const gridScrollTarget = writable<AssetGridRouteSearchParams | null | undefined>();
|
|
|
|
const setAsset = (asset: AssetResponseDto, assetsToPreload: TimelineAsset[] = []) => {
|
|
preloadAssets.set(assetsToPreload);
|
|
viewingAssetStoreState.set(asset);
|
|
viewState.set(true);
|
|
};
|
|
|
|
const setAssetId = async (id: string): Promise<AssetResponseDto> => {
|
|
const asset = await getAssetInfo({ id, key: authManager.key });
|
|
setAsset(asset);
|
|
return asset;
|
|
};
|
|
|
|
const showAssetViewer = (show: boolean) => {
|
|
viewState.set(show);
|
|
};
|
|
|
|
return {
|
|
asset: readonly(viewingAssetStoreState),
|
|
preloadAssets: readonly(preloadAssets),
|
|
isViewing: viewState,
|
|
gridScrollTarget,
|
|
setAsset,
|
|
setAssetId,
|
|
showAssetViewer,
|
|
};
|
|
}
|
|
|
|
export const assetViewingStore = createAssetViewingStore();
|