mirror of
https://github.com/Art051/immich.git
synced 2025-08-11 19:29:00 +00:00
Re-added file-uploader function body.
Moved file-uploader addAssetToAlbum call so as not to invoke it for every single file.
This commit is contained in:
@@ -25,13 +25,28 @@ import { get } from 'svelte/store';
|
||||
import { handleError } from './handle-error';
|
||||
|
||||
export const addAssetsToAlbum = async (albumId: string, assetIds: string[]) => {
|
||||
await addAssets({
|
||||
const result = await addAssets({
|
||||
id: albumId,
|
||||
bulkIdsDto: {
|
||||
ids: assetIds,
|
||||
},
|
||||
key: getKey(),
|
||||
});
|
||||
const count = result.filter(({ success }) => success).length;
|
||||
notificationController.show({
|
||||
type: NotificationType.Info,
|
||||
timeout: 5000,
|
||||
message:
|
||||
count > 0
|
||||
? `Added ${count} asset${count === 1 ? '' : 's'} to the album`
|
||||
: `Asset${assetIds.length === 1 ? ' was' : 's were'} already part of the album`,
|
||||
button: {
|
||||
text: 'View Album',
|
||||
onClick() {
|
||||
return goto(`${AppRoute.ALBUMS}/${albumId}`);
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const addAssetsToNewAlbum = async (albumName: string, assetIds: string[]) => {
|
||||
|
||||
@@ -60,11 +60,17 @@ export const fileUploadHandler = async (files: File[], albumId: string | undefin
|
||||
const name = file.name.toLowerCase();
|
||||
if (extensions.some((extension) => name.endsWith(extension))) {
|
||||
uploadAssetsStore.addNewUploadAsset({ id: getDeviceAssetId(file), file, albumId });
|
||||
promises.push(uploadExecutionQueue.addTask(() => fileUploader(file, albumId)));
|
||||
promises.push(uploadExecutionQueue.addTask(() => fileUploader(file)));
|
||||
}
|
||||
}
|
||||
|
||||
const results = await Promise.all(promises);
|
||||
const assetIds = results.filter((result): result is string => !!result);
|
||||
|
||||
if (albumId && assetIds.length > 0) {
|
||||
await addAssetsToAlbum(albumId, assetIds);
|
||||
}
|
||||
|
||||
return results.filter((result): result is string => !!result);
|
||||
};
|
||||
|
||||
@@ -73,7 +79,7 @@ function getDeviceAssetId(asset: File) {
|
||||
}
|
||||
|
||||
// TODO: should probably use the @api SDK
|
||||
async function fileUploader(asset: File, albumId: string | undefined = undefined): Promise<string | undefined> {
|
||||
async function fileUploader(asset: File): Promise<string | undefined> {
|
||||
const fileCreatedAt = new Date(asset.lastModified).toISOString();
|
||||
const deviceAssetId = getDeviceAssetId(asset);
|
||||
|
||||
@@ -136,12 +142,6 @@ async function fileUploader(asset: File, albumId: string | undefined = undefined
|
||||
uploadAssetsStore.successCounter.update((c) => c + 1);
|
||||
}
|
||||
|
||||
if (albumId && assetId) {
|
||||
uploadAssetsStore.updateAsset(deviceAssetId, { message: 'Adding to album...' });
|
||||
await addAssetsToAlbum(albumId, [assetId]);
|
||||
uploadAssetsStore.updateAsset(deviceAssetId, { message: 'Added to album' });
|
||||
}
|
||||
|
||||
uploadAssetsStore.updateAsset(deviceAssetId, { state: duplicate ? UploadState.DUPLICATED : UploadState.DONE });
|
||||
|
||||
setTimeout(() => {
|
||||
|
||||
@@ -291,7 +291,7 @@
|
||||
const count = results.filter(({ success }) => success).length;
|
||||
notificationController.show({
|
||||
type: NotificationType.Info,
|
||||
message: `Added ${count} asset${count === 1 ? '' : 's'}`,
|
||||
message: `Added ${count} asset${count > 1 ? 's' : ''} successfully, refresh the page to see newly added asset${count > 1 ? 's' : ''}.`,
|
||||
});
|
||||
|
||||
await refreshAlbum();
|
||||
|
||||
Reference in New Issue
Block a user