Adapt web client to consume new server response format
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
import type { TimelineAsset } from '$lib/stores/assets-store.svelte';
|
||||
import { faker } from '@faker-js/faker';
|
||||
import { AssetTypeEnum, type AssetResponseDto } from '@immich/sdk';
|
||||
import {
|
||||
AssetTypeEnum,
|
||||
type AssetResponseDto,
|
||||
type TimeBucketAssetResponseDto,
|
||||
type TimeBucketResponseDto,
|
||||
type TimelineStackResponseDto,
|
||||
} from '@immich/sdk';
|
||||
import { Sync } from 'factory.ts';
|
||||
|
||||
export const assetFactory = Sync.makeFactory<AssetResponseDto>({
|
||||
@@ -42,9 +48,51 @@ export const timelineAssetFactory = Sync.makeFactory<TimelineAsset>({
|
||||
stack: null,
|
||||
projectionType: null,
|
||||
livePhotoVideoId: Sync.each(() => faker.string.uuid()),
|
||||
text: Sync.each(() => ({
|
||||
description: Sync.each(() => ({
|
||||
city: faker.location.city(),
|
||||
country: faker.location.country(),
|
||||
people: [faker.person.fullName()],
|
||||
})),
|
||||
});
|
||||
|
||||
export const toResponseDto = (...timelineAsset: TimelineAsset[]) => {
|
||||
const bucketAssets: TimeBucketAssetResponseDto = {
|
||||
description: [],
|
||||
duration: [],
|
||||
id: [],
|
||||
isArchived: [],
|
||||
isFavorite: [],
|
||||
isImage: [],
|
||||
isTrashed: [],
|
||||
isVideo: [],
|
||||
livePhotoVideoId: [],
|
||||
localDateTime: [],
|
||||
ownerId: [],
|
||||
projectionType: [],
|
||||
ratio: [],
|
||||
stack: [],
|
||||
thumbhash: [],
|
||||
};
|
||||
for (const asset of timelineAsset) {
|
||||
bucketAssets.description.push(asset.description);
|
||||
bucketAssets.duration.push(asset.duration || 0);
|
||||
bucketAssets.id.push(asset.id);
|
||||
bucketAssets.isArchived.push(asset.isArchived ? 1 : 0);
|
||||
bucketAssets.isFavorite.push(asset.isFavorite ? 1 : 0);
|
||||
bucketAssets.isImage.push(asset.isImage ? 1 : 0);
|
||||
bucketAssets.isTrashed.push(asset.isTrashed ? 1 : 0);
|
||||
bucketAssets.isVideo.push(asset.isVideo ? 1 : 0);
|
||||
bucketAssets.livePhotoVideoId.push(asset.livePhotoVideoId || 0);
|
||||
bucketAssets.localDateTime.push(asset.localDateTime);
|
||||
bucketAssets.ownerId.push(asset.ownerId);
|
||||
bucketAssets.projectionType.push(asset.projectionType || 0);
|
||||
bucketAssets.ratio.push(asset.ratio);
|
||||
bucketAssets.stack.push(asset.stack as TimelineStackResponseDto);
|
||||
bucketAssets.thumbhash.push(asset.thumbhash || 0);
|
||||
}
|
||||
const response: TimeBucketResponseDto = {
|
||||
bucketAssets,
|
||||
hasNextPage: false,
|
||||
};
|
||||
return response;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user