Improve
This commit is contained in:
@@ -29,7 +29,7 @@ import {
|
||||
CollectionSummaryOrder,
|
||||
CollectionsSortBy,
|
||||
} from "@/new/photos/services/collection/ui";
|
||||
import { groupFilesBasedOnCollectionID } from "@/new/photos/services/file";
|
||||
import { groupFilesByCollectionID } from "@/new/photos/services/file";
|
||||
import { getLocalFiles, sortFiles } from "@/new/photos/services/files";
|
||||
import { updateMagicMetadata } from "@/new/photos/services/magic-metadata";
|
||||
import type { FamilyData } from "@/new/photos/services/user";
|
||||
@@ -586,7 +586,7 @@ export const removeUserFiles = async (
|
||||
const toRemoveFilesCopiesInOtherCollections = allFiles.filter((f) => {
|
||||
return toRemoveFilesIds.has(f.id);
|
||||
});
|
||||
const groupiedFiles = groupFilesBasedOnCollectionID(
|
||||
const groupedFiles = groupFilesByCollectionID(
|
||||
toRemoveFilesCopiesInOtherCollections,
|
||||
);
|
||||
|
||||
@@ -594,7 +594,7 @@ export const removeUserFiles = async (
|
||||
const collectionsMap = new Map(collections.map((c) => [c.id, c]));
|
||||
const user: User = getData(LS_KEYS.USER);
|
||||
|
||||
for (const [targetCollectionID, files] of groupiedFiles.entries()) {
|
||||
for (const [targetCollectionID, files] of groupedFiles.entries()) {
|
||||
const targetCollection = collectionsMap.get(targetCollectionID);
|
||||
if (
|
||||
!isValidMoveTarget(sourceCollectionID, targetCollection, user)
|
||||
@@ -1070,8 +1070,8 @@ export async function moveToHiddenCollection(files: EnteFile[]) {
|
||||
if (!hiddenCollection) {
|
||||
hiddenCollection = await createHiddenCollection();
|
||||
}
|
||||
const groupiedFiles = groupFilesBasedOnCollectionID(files);
|
||||
for (const [collectionID, files] of groupiedFiles.entries()) {
|
||||
const groupedFiles = groupFilesByCollectionID(files);
|
||||
for (const [collectionID, files] of groupedFiles.entries()) {
|
||||
if (collectionID === hiddenCollection.id) {
|
||||
continue;
|
||||
}
|
||||
@@ -1088,8 +1088,8 @@ export async function unhideToCollection(
|
||||
files: EnteFile[],
|
||||
) {
|
||||
try {
|
||||
const groupiedFiles = groupFilesBasedOnCollectionID(files);
|
||||
for (const [collectionID, files] of groupiedFiles.entries()) {
|
||||
const groupedFiles = groupFilesByCollectionID(files);
|
||||
for (const [collectionID, files] of groupedFiles.entries()) {
|
||||
if (collectionID === collection.id) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import type {
|
||||
} from "@/base/types/ipc";
|
||||
import type { Collection } from "@/media/collection";
|
||||
import { EncryptedEnteFile } from "@/media/file";
|
||||
import { groupFilesBasedOnCollectionID } from "@/new/photos/services/file";
|
||||
import { groupFilesByCollectionID } from "@/new/photos/services/file";
|
||||
import { getLocalFiles } from "@/new/photos/services/files";
|
||||
import { UPLOAD_RESULT } from "@/new/photos/services/upload/types";
|
||||
import { ensureString } from "@/utils/ensure";
|
||||
@@ -496,7 +496,7 @@ class FolderWatcher {
|
||||
return false;
|
||||
});
|
||||
|
||||
const filesByCollectionID = groupFilesBasedOnCollectionID(filesToTrash);
|
||||
const filesByCollectionID = groupFilesByCollectionID(filesToTrash);
|
||||
for (const [id, files] of filesByCollectionID.entries()) {
|
||||
await removeFromCollection(id, files);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { FileType } from "@/media/file-type";
|
||||
import { groupFilesBasedOnCollectionID } from "@/new/photos/services/file";
|
||||
import { groupFilesByCollectionID } from "@/new/photos/services/file";
|
||||
import { getLocalFiles } from "@/new/photos/services/files";
|
||||
import { getLocalCollections } from "services/collectionService";
|
||||
import { parseDateFromDigitGroups } from "services/upload/date";
|
||||
@@ -153,7 +153,7 @@ async function totalCollectionCountCheck(expectedState) {
|
||||
async function collectionWiseFileCount(expectedState) {
|
||||
const files = await getLocalFiles();
|
||||
const collections = await getLocalCollections();
|
||||
const collectionToFilesMap = groupFilesBasedOnCollectionID(files);
|
||||
const collectionToFilesMap = groupFilesByCollectionID(files);
|
||||
const collectionIDToNameMap = new Map(
|
||||
collections.map((collection) => [collection.id, collection.name]),
|
||||
);
|
||||
|
||||
@@ -28,7 +28,7 @@ import type {
|
||||
} from "../../services/collection/ui";
|
||||
import {
|
||||
getLatestVersionFiles,
|
||||
groupFilesBasedOnCollectionID,
|
||||
groupFilesByCollectionID,
|
||||
} from "../../services/file";
|
||||
import { sortFiles } from "../../services/files";
|
||||
import {
|
||||
@@ -108,8 +108,8 @@ export interface GalleryState {
|
||||
/*--< Derived UI state >--*/
|
||||
|
||||
/**
|
||||
* A map of massaged collections suitable for being directly consumed by the
|
||||
* UI (indexed by the collection IDs).
|
||||
* A map of collections massage to a form suitable for being directly
|
||||
* consumed by the UI, indexed by the collection IDs.
|
||||
*/
|
||||
collectionSummaries: Map<number, CollectionSummary>;
|
||||
/**
|
||||
@@ -520,8 +520,8 @@ const createCollectionSummaries = (
|
||||
user: User,
|
||||
collections: Collection[],
|
||||
files: EnteFile[],
|
||||
): CollectionSummaries => {
|
||||
const collectionSummaries: CollectionSummaries = new Map();
|
||||
) => {
|
||||
const collectionSummaries = new Map<number, CollectionSummary>();
|
||||
const collectionLatestFiles = getCollectionLatestFiles(files);
|
||||
const collectionCoverFiles = getCollectionCoverFiles(files, collections);
|
||||
const collectionFilesCount = getCollectionsFileCount(files);
|
||||
@@ -607,8 +607,9 @@ const createCollectionSummaries = (
|
||||
return collectionSummaries;
|
||||
};
|
||||
|
||||
export type CollectionToFileMap = Map<number, EnteFile>;
|
||||
type CollectionToFileMap = Map<number, EnteFile>;
|
||||
|
||||
// TODO: This seems to rely on some sort order. Document.
|
||||
const getCollectionLatestFiles = (files: EnteFile[]): CollectionToFileMap => {
|
||||
const latestFiles = new Map<number, EnteFile>();
|
||||
|
||||
@@ -624,7 +625,7 @@ const getCollectionCoverFiles = (
|
||||
files: EnteFile[],
|
||||
collections: Collection[],
|
||||
): CollectionToFileMap => {
|
||||
const collectionIDToFileMap = groupFilesBasedOnCollectionID(files);
|
||||
const collectionIDToFileMap = groupFilesByCollectionID(files);
|
||||
|
||||
const coverFiles = new Map<number, EnteFile>();
|
||||
|
||||
@@ -820,7 +821,7 @@ function getAllSectionSummary(
|
||||
}
|
||||
|
||||
function getCollectionsFileCount(files: EnteFile[]): Map<number, number> {
|
||||
const collectionIDToFileMap = groupFilesBasedOnCollectionID(files);
|
||||
const collectionIDToFileMap = groupFilesByCollectionID(files);
|
||||
const collectionFilesCount = new Map<number, number>();
|
||||
for (const [id, files] of collectionIDToFileMap) {
|
||||
collectionFilesCount.set(id, files.length);
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
import type { EnteFile } from "@/media/file";
|
||||
|
||||
/** Segment the given {@link files} into lists indexed by their collection ID */
|
||||
export const groupFilesBasedOnCollectionID = (files: EnteFile[]) => {
|
||||
const result = new Map<number, EnteFile[]>();
|
||||
for (const file of files) {
|
||||
/**
|
||||
* Segment the given {@link files} into lists indexed by their collection ID.
|
||||
*
|
||||
* Order is preserved.
|
||||
*/
|
||||
export const groupFilesByCollectionID = (files: EnteFile[]) =>
|
||||
files.reduce((result, file) => {
|
||||
const id = file.collectionID;
|
||||
if (!result.has(id)) result.set(id, []);
|
||||
// See: [Note: strict mode migration]
|
||||
//
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
result.get(id).push(file);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
let cfs = result.get(id);
|
||||
if (!cfs) result.set(id, (cfs = []));
|
||||
cfs.push(file);
|
||||
return result;
|
||||
}, new Map<number, EnteFile[]>());
|
||||
|
||||
export function getLatestVersionFiles(files: EnteFile[]) {
|
||||
const latestVersionFiles = new Map<string, EnteFile>();
|
||||
|
||||
Reference in New Issue
Block a user