mirror of
https://github.com/immich-app/immich
synced 2025-11-14 17:36:12 +00:00
* Use cookie for frontend request * Remove api helper to use SDK * Added error handling to status box * Remove additional places that check for session.user * Refactor sending password * prettier clean up * remove deadcode * Move all authentication requests to the client * refactor upload panel to only fetch assets after the upload panel disappear * Added keydown to remove focus on title change on album viewer
45 lines
1 KiB
TypeScript
45 lines
1 KiB
TypeScript
import { writable, derived } from 'svelte/store';
|
|
import type { UploadAsset } from '../models/upload-asset';
|
|
|
|
function createUploadStore() {
|
|
const uploadAssets = writable<Array<UploadAsset>>([]);
|
|
|
|
const { subscribe } = uploadAssets;
|
|
|
|
const isUploading = derived(uploadAssets, ($uploadAssets) => {
|
|
return $uploadAssets.length > 0 ? true : false;
|
|
});
|
|
|
|
const addNewUploadAsset = (newAsset: UploadAsset) => {
|
|
uploadAssets.update((currentSet) => [...currentSet, newAsset]);
|
|
};
|
|
|
|
const updateProgress = (id: string, progress: number) => {
|
|
uploadAssets.update((uploadingAssets) => {
|
|
return uploadingAssets.map((asset) => {
|
|
if (asset.id == id) {
|
|
return {
|
|
...asset,
|
|
progress: progress
|
|
};
|
|
}
|
|
|
|
return asset;
|
|
});
|
|
});
|
|
};
|
|
|
|
const removeUploadAsset = (id: string) => {
|
|
uploadAssets.update((uploadingAsset) => uploadingAsset.filter((a) => a.id != id));
|
|
};
|
|
|
|
return {
|
|
subscribe,
|
|
isUploading,
|
|
addNewUploadAsset,
|
|
updateProgress,
|
|
removeUploadAsset
|
|
};
|
|
}
|
|
|
|
export const uploadAssetsStore = createUploadStore();
|