Skip to content

Commit 15f9ff1

Browse files
authored
fix(web): bucket by localDateTime (#12612)
fix(web): local date time for buckets
1 parent 9281119 commit 15f9ff1

File tree

3 files changed

+41
-26
lines changed

3 files changed

+41
-26
lines changed

web/src/lib/components/asset-viewer/detail-panel.svelte

+2-2
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,9 @@
219219
<p class="mt-1 truncate font-medium" title={person.name}>{person.name}</p>
220220
{#if person.birthDate}
221221
{@const personBirthDate = DateTime.fromISO(person.birthDate)}
222-
{@const age = Math.floor(DateTime.fromISO(asset.fileCreatedAt).diff(personBirthDate, 'years').years)}
222+
{@const age = Math.floor(DateTime.fromISO(asset.localDateTime).diff(personBirthDate, 'years').years)}
223223
{@const ageInMonths = Math.floor(
224-
DateTime.fromISO(asset.fileCreatedAt).diff(personBirthDate, 'months').months,
224+
DateTime.fromISO(asset.localDateTime).diff(personBirthDate, 'months').months,
225225
)}
226226
{#if age >= 0}
227227
<p

web/src/lib/stores/asset.store.spec.ts

+32-17
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,10 @@ describe('AssetStore', () => {
141141
});
142142

143143
it('adds assets to new bucket', () => {
144-
const asset = assetFactory.build({ fileCreatedAt: '2024-01-20T12:00:00.000Z' });
144+
const asset = assetFactory.build({
145+
localDateTime: '2024-01-20T12:00:00.000Z',
146+
fileCreatedAt: '2024-01-20T12:00:00.000Z',
147+
});
145148
assetStore.addAssets([asset]);
146149

147150
expect(assetStore.buckets.length).toEqual(1);
@@ -152,7 +155,10 @@ describe('AssetStore', () => {
152155
});
153156

154157
it('adds assets to existing bucket', () => {
155-
const [assetOne, assetTwo] = assetFactory.buildList(2, { fileCreatedAt: '2024-01-20T12:00:00.000Z' });
158+
const [assetOne, assetTwo] = assetFactory.buildList(2, {
159+
localDateTime: '2024-01-20T12:00:00.000Z',
160+
fileCreatedAt: '2024-01-20T12:00:00.000Z',
161+
});
156162
assetStore.addAssets([assetOne]);
157163
assetStore.addAssets([assetTwo]);
158164

@@ -163,9 +169,18 @@ describe('AssetStore', () => {
163169
});
164170

165171
it('orders assets in buckets by descending date', () => {
166-
const assetOne = assetFactory.build({ fileCreatedAt: '2024-01-20T12:00:00.000Z' });
167-
const assetTwo = assetFactory.build({ fileCreatedAt: '2024-01-15T12:00:00.000Z' });
168-
const assetThree = assetFactory.build({ fileCreatedAt: '2024-01-16T12:00:00.000Z' });
172+
const assetOne = assetFactory.build({
173+
fileCreatedAt: '2024-01-20T12:00:00.000Z',
174+
localDateTime: '2024-01-20T12:00:00.000Z',
175+
});
176+
const assetTwo = assetFactory.build({
177+
fileCreatedAt: '2024-01-15T12:00:00.000Z',
178+
localDateTime: '2024-01-15T12:00:00.000Z',
179+
});
180+
const assetThree = assetFactory.build({
181+
fileCreatedAt: '2024-01-16T12:00:00.000Z',
182+
localDateTime: '2024-01-16T12:00:00.000Z',
183+
});
169184
assetStore.addAssets([assetOne, assetTwo, assetThree]);
170185

171186
const bucket = assetStore.getBucketByDate('2024-01-01T00:00:00.000Z');
@@ -177,9 +192,9 @@ describe('AssetStore', () => {
177192
});
178193

179194
it('orders buckets by descending date', () => {
180-
const assetOne = assetFactory.build({ fileCreatedAt: '2024-01-20T12:00:00.000Z' });
181-
const assetTwo = assetFactory.build({ fileCreatedAt: '2024-04-20T12:00:00.000Z' });
182-
const assetThree = assetFactory.build({ fileCreatedAt: '2023-01-20T12:00:00.000Z' });
195+
const assetOne = assetFactory.build({ localDateTime: '2024-01-20T12:00:00.000Z' });
196+
const assetTwo = assetFactory.build({ localDateTime: '2024-04-20T12:00:00.000Z' });
197+
const assetThree = assetFactory.build({ localDateTime: '2023-01-20T12:00:00.000Z' });
183198
assetStore.addAssets([assetOne, assetTwo, assetThree]);
184199

185200
expect(assetStore.buckets.length).toEqual(3);
@@ -239,8 +254,8 @@ describe('AssetStore', () => {
239254
});
240255

241256
it('replaces bucket date when asset date changes', () => {
242-
const asset = assetFactory.build({ fileCreatedAt: '2024-01-20T12:00:00.000Z' });
243-
const updatedAsset = { ...asset, fileCreatedAt: '2024-03-20T12:00:00.000Z' };
257+
const asset = assetFactory.build({ localDateTime: '2024-01-20T12:00:00.000Z' });
258+
const updatedAsset = { ...asset, localDateTime: '2024-03-20T12:00:00.000Z' };
244259

245260
assetStore.addAssets([asset]);
246261
expect(assetStore.buckets.length).toEqual(1);
@@ -264,7 +279,7 @@ describe('AssetStore', () => {
264279
});
265280

266281
it('ignores invalid IDs', () => {
267-
assetStore.addAssets(assetFactory.buildList(2, { fileCreatedAt: '2024-01-20T12:00:00.000Z' }));
282+
assetStore.addAssets(assetFactory.buildList(2, { localDateTime: '2024-01-20T12:00:00.000Z' }));
268283
assetStore.removeAssets(['', 'invalid', '4c7d9acc']);
269284

270285
expect(assetStore.assets.length).toEqual(2);
@@ -273,7 +288,7 @@ describe('AssetStore', () => {
273288
});
274289

275290
it('removes asset from bucket', () => {
276-
const [assetOne, assetTwo] = assetFactory.buildList(2, { fileCreatedAt: '2024-01-20T12:00:00.000Z' });
291+
const [assetOne, assetTwo] = assetFactory.buildList(2, { localDateTime: '2024-01-20T12:00:00.000Z' });
277292
assetStore.addAssets([assetOne, assetTwo]);
278293
assetStore.removeAssets([assetOne.id]);
279294

@@ -283,7 +298,7 @@ describe('AssetStore', () => {
283298
});
284299

285300
it('removes bucket when empty', () => {
286-
const assets = assetFactory.buildList(2, { fileCreatedAt: '2024-01-20T12:00:00.000Z' });
301+
const assets = assetFactory.buildList(2, { localDateTime: '2024-01-20T12:00:00.000Z' });
287302
assetStore.addAssets(assets);
288303
assetStore.removeAssets(assets.map((asset) => asset.id));
289304

@@ -376,17 +391,17 @@ describe('AssetStore', () => {
376391
});
377392

378393
it('returns the bucket index', () => {
379-
const assetOne = assetFactory.build({ fileCreatedAt: '2024-01-20T12:00:00.000Z' });
380-
const assetTwo = assetFactory.build({ fileCreatedAt: '2024-02-15T12:00:00.000Z' });
394+
const assetOne = assetFactory.build({ localDateTime: '2024-01-20T12:00:00.000Z' });
395+
const assetTwo = assetFactory.build({ localDateTime: '2024-02-15T12:00:00.000Z' });
381396
assetStore.addAssets([assetOne, assetTwo]);
382397

383398
expect(assetStore.getBucketIndexByAssetId(assetTwo.id)).toEqual(0);
384399
expect(assetStore.getBucketIndexByAssetId(assetOne.id)).toEqual(1);
385400
});
386401

387402
it('ignores removed buckets', () => {
388-
const assetOne = assetFactory.build({ fileCreatedAt: '2024-01-20T12:00:00.000Z' });
389-
const assetTwo = assetFactory.build({ fileCreatedAt: '2024-02-15T12:00:00.000Z' });
403+
const assetOne = assetFactory.build({ localDateTime: '2024-01-20T12:00:00.000Z' });
404+
const assetTwo = assetFactory.build({ localDateTime: '2024-02-15T12:00:00.000Z' });
390405
assetStore.addAssets([assetOne, assetTwo]);
391406

392407
assetStore.removeAssets([assetTwo.id]);

web/src/lib/stores/assets.store.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ export class AssetStore {
661661
const updatedBuckets = new Set<AssetBucket>();
662662

663663
for (const asset of assets) {
664-
const timeBucket = DateTime.fromISO(asset.fileCreatedAt).toUTC().startOf('month').toString();
664+
const timeBucket = DateTime.fromISO(asset.localDateTime).toUTC().startOf('month').toString();
665665
let bucket = this.getBucketByDate(timeBucket);
666666

667667
if (!bucket) {
@@ -791,25 +791,25 @@ export class AssetStore {
791791
if (assets.length === 0) {
792792
return;
793793
}
794-
const assetsToReculculate: AssetResponseDto[] = [];
794+
const assetsToRecalculate: AssetResponseDto[] = [];
795795

796796
for (const _asset of assets) {
797797
const asset = this.assets.find((asset) => asset.id === _asset.id);
798798
if (!asset) {
799799
continue;
800800
}
801801

802-
const recalculate = asset.fileCreatedAt !== _asset.fileCreatedAt;
802+
const recalculate = asset.localDateTime !== _asset.localDateTime;
803803
Object.assign(asset, _asset);
804804

805805
if (recalculate) {
806-
assetsToReculculate.push(asset);
806+
assetsToRecalculate.push(asset);
807807
}
808808
}
809809

810-
this.removeAssets(assetsToReculculate.map((asset) => asset.id));
811-
this.addAssetsToBuckets(assetsToReculculate);
812-
this.emit(assetsToReculculate.length > 0);
810+
this.removeAssets(assetsToRecalculate.map((asset) => asset.id));
811+
this.addAssetsToBuckets(assetsToRecalculate);
812+
this.emit(assetsToRecalculate.length > 0);
813813
}
814814

815815
removeAssets(ids: string[]) {

0 commit comments

Comments
 (0)