mirror of
https://github.com/samsonjs/immich.git
synced 2026-04-26 14:57:42 +00:00
* refactor: asset-store * Potential fix for code scanning alert no. 152: Prototype-polluting function Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
60 lines
1.8 KiB
TypeScript
60 lines
1.8 KiB
TypeScript
import type { TimelinePlainDate } from '$lib/utils/timeline-util';
|
|
import { AssetOrder } from '@immich/sdk';
|
|
import type { AssetBucket } from './asset-bucket.svelte';
|
|
import type { AssetDateGroup } from './asset-date-group.svelte';
|
|
import type { TimelineAsset } from './types';
|
|
|
|
export class AddContext {
|
|
#lookupCache: {
|
|
[year: number]: { [month: number]: { [day: number]: AssetDateGroup } };
|
|
} = {};
|
|
unprocessedAssets: TimelineAsset[] = [];
|
|
changedDateGroups = new Set<AssetDateGroup>();
|
|
newDateGroups = new Set<AssetDateGroup>();
|
|
|
|
getDateGroup({ year, month, day }: TimelinePlainDate): AssetDateGroup | undefined {
|
|
return this.#lookupCache[year]?.[month]?.[day];
|
|
}
|
|
|
|
setDateGroup(dateGroup: AssetDateGroup, { year, month, day }: TimelinePlainDate) {
|
|
if (!this.#lookupCache[year]) {
|
|
this.#lookupCache[year] = {};
|
|
}
|
|
if (!this.#lookupCache[year][month]) {
|
|
this.#lookupCache[year][month] = {};
|
|
}
|
|
this.#lookupCache[year][month][day] = dateGroup;
|
|
}
|
|
|
|
get existingDateGroups() {
|
|
return this.changedDateGroups.difference(this.newDateGroups);
|
|
}
|
|
|
|
get updatedBuckets() {
|
|
const updated = new Set<AssetBucket>();
|
|
for (const group of this.changedDateGroups) {
|
|
updated.add(group.bucket);
|
|
}
|
|
return updated;
|
|
}
|
|
|
|
get bucketsWithNewDateGroups() {
|
|
const updated = new Set<AssetBucket>();
|
|
for (const group of this.newDateGroups) {
|
|
updated.add(group.bucket);
|
|
}
|
|
return updated;
|
|
}
|
|
|
|
sort(bucket: AssetBucket, sortOrder: AssetOrder = AssetOrder.Desc) {
|
|
for (const group of this.changedDateGroups) {
|
|
group.sortAssets(sortOrder);
|
|
}
|
|
for (const group of this.newDateGroups) {
|
|
group.sortAssets(sortOrder);
|
|
}
|
|
if (this.newDateGroups.size > 0) {
|
|
bucket.sortDateGroups();
|
|
}
|
|
}
|
|
}
|