Move
This commit is contained in:
@@ -137,7 +137,6 @@ import {
|
||||
import { checkSubscriptionPurchase } from "utils/billing";
|
||||
import {
|
||||
COLLECTION_OPS_TYPE,
|
||||
constructCollectionNameMap,
|
||||
getSelectedCollection,
|
||||
handleCollectionOps,
|
||||
} from "utils/collection";
|
||||
@@ -339,6 +338,7 @@ export default function Gallery() {
|
||||
const archivedCollectionIDs = state.archivedCollectionIDs;
|
||||
const defaultHiddenCollectionIDs = state.defaultHiddenCollectionIDs;
|
||||
const hiddenFileIDs = state.hiddenFileIDs;
|
||||
const collectionNameMap = state.allCollectionNameByID;
|
||||
const collectionSummaries = state.collectionSummaries;
|
||||
const hiddenCollectionSummaries = state.hiddenCollectionSummaries;
|
||||
|
||||
@@ -750,16 +750,6 @@ export default function Gallery() {
|
||||
return constructFileToCollectionMap(files);
|
||||
}, [files]);
|
||||
|
||||
const collectionNameMap = useMemo(() => {
|
||||
if (!collections || !hiddenCollections) {
|
||||
return new Map();
|
||||
}
|
||||
return constructCollectionNameMap([
|
||||
...collections,
|
||||
...hiddenCollections,
|
||||
]);
|
||||
}, [collections, hiddenCollections]);
|
||||
|
||||
const showSessionExpiredMessage = () => {
|
||||
setDialogMessage(getSessionExpiredMessage(logout));
|
||||
};
|
||||
|
||||
@@ -9,6 +9,10 @@ import {
|
||||
} from "@/media/file-metadata";
|
||||
import { FileType } from "@/media/file-type";
|
||||
import { decodeLivePhoto } from "@/media/live-photo";
|
||||
import {
|
||||
createCollectionNameByID,
|
||||
getCollectionUserFacingName,
|
||||
} from "@/new/photos/services/collection";
|
||||
import downloadManager from "@/new/photos/services/download";
|
||||
import { updateExifIfNeededAndPossible } from "@/new/photos/services/exif-update";
|
||||
import {
|
||||
@@ -34,10 +38,6 @@ import {
|
||||
ExportUIUpdaters,
|
||||
FileExportNames,
|
||||
} from "types/export";
|
||||
import {
|
||||
constructCollectionNameMap,
|
||||
getCollectionUserFacingName,
|
||||
} from "utils/collection";
|
||||
import { getAllLocalCollections } from "../collectionService";
|
||||
import { migrateExport } from "./migration";
|
||||
|
||||
@@ -330,7 +330,7 @@ class ExportService {
|
||||
convertCollectionIDExportNameObjectToMap(
|
||||
exportRecord.collectionExportNames,
|
||||
);
|
||||
const collectionIDNameMap = constructCollectionNameMap(collections);
|
||||
const collectionIDNameMap = createCollectionNameByID(collections);
|
||||
|
||||
const renamedCollections = getRenamedExportedCollections(
|
||||
collections,
|
||||
|
||||
@@ -11,8 +11,8 @@ import {
|
||||
import { EnteFile } from "@/media/file";
|
||||
import { ItemVisibility } from "@/media/file-metadata";
|
||||
import {
|
||||
DEFAULT_HIDDEN_COLLECTION_USER_FACING_NAME,
|
||||
findDefaultHiddenCollectionIDs,
|
||||
isDefaultHiddenCollection,
|
||||
isHiddenCollection,
|
||||
isIncomingShare,
|
||||
} from "@/new/photos/services/collection";
|
||||
@@ -391,26 +391,6 @@ export function getHiddenCollections(collections: Collection[]): Collection[] {
|
||||
return collections.filter((collection) => isHiddenCollection(collection));
|
||||
}
|
||||
|
||||
export function constructCollectionNameMap(
|
||||
collections: Collection[],
|
||||
): Map<number, string> {
|
||||
return new Map<number, string>(
|
||||
(collections ?? []).map((collection) => [
|
||||
collection.id,
|
||||
getCollectionUserFacingName(collection),
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
const DEFAULT_HIDDEN_COLLECTION_USER_FACING_NAME = "Hidden";
|
||||
|
||||
export const getCollectionUserFacingName = (collection: Collection) => {
|
||||
if (isDefaultHiddenCollection(collection)) {
|
||||
return DEFAULT_HIDDEN_COLLECTION_USER_FACING_NAME;
|
||||
}
|
||||
return collection.name;
|
||||
};
|
||||
|
||||
export const getOrCreateAlbum = async (
|
||||
albumName: string,
|
||||
existingCollections: Collection[],
|
||||
|
||||
@@ -5,7 +5,10 @@ import {
|
||||
} from "@/media/collection";
|
||||
import type { EnteFile } from "@/media/file";
|
||||
import { mergeMetadata } from "@/media/file";
|
||||
import { isHiddenCollection } from "@/new/photos/services/collection";
|
||||
import {
|
||||
createCollectionNameByID,
|
||||
isHiddenCollection,
|
||||
} from "@/new/photos/services/collection";
|
||||
import { splitByPredicate } from "@/utils/array";
|
||||
import { ensure } from "@/utils/ensure";
|
||||
import type { User } from "@ente/shared/user/types";
|
||||
@@ -109,6 +112,13 @@ export interface GalleryState {
|
||||
* File IDs of all the files that the user has marked as a favorite.
|
||||
*/
|
||||
favoriteFileIDs: Set<number>;
|
||||
/**
|
||||
* User visible collection names indexed by collection IDs for fast lookup.
|
||||
*
|
||||
* This map will contain entries for all (both normal and hidden)
|
||||
* collections.
|
||||
*/
|
||||
allCollectionNameByID: Map<number, string>;
|
||||
|
||||
/*--< Derived UI state >--*/
|
||||
|
||||
@@ -183,6 +193,7 @@ const initialGalleryState: GalleryState = {
|
||||
defaultHiddenCollectionIDs: new Set(),
|
||||
hiddenFileIDs: new Set(),
|
||||
favoriteFileIDs: new Set(),
|
||||
allCollectionNameByID: new Map(),
|
||||
collectionSummaries: new Map(),
|
||||
hiddenCollectionSummaries: new Map(),
|
||||
filteredData: [],
|
||||
@@ -222,6 +233,9 @@ const galleryReducer: React.Reducer<GalleryState, GalleryAction> = (
|
||||
collections,
|
||||
action.files,
|
||||
),
|
||||
allCollectionNameByID: createCollectionNameByID(
|
||||
action.allCollections,
|
||||
),
|
||||
collectionSummaries: deriveCollectionSummaries(
|
||||
action.user,
|
||||
collections,
|
||||
@@ -255,6 +269,9 @@ const galleryReducer: React.Reducer<GalleryState, GalleryAction> = (
|
||||
action.collections,
|
||||
state.files,
|
||||
),
|
||||
allCollectionNameByID: createCollectionNameByID(
|
||||
action.collections.concat(state.hiddenCollections),
|
||||
),
|
||||
collectionSummaries: deriveCollectionSummaries(
|
||||
ensure(state.user),
|
||||
action.collections,
|
||||
@@ -280,6 +297,9 @@ const galleryReducer: React.Reducer<GalleryState, GalleryAction> = (
|
||||
action.collections,
|
||||
state.files,
|
||||
),
|
||||
allCollectionNameByID: createCollectionNameByID(
|
||||
action.collections.concat(action.hiddenCollections),
|
||||
),
|
||||
collectionSummaries: deriveCollectionSummaries(
|
||||
ensure(state.user),
|
||||
action.collections,
|
||||
|
||||
@@ -41,3 +41,30 @@ export const isHiddenCollection = (collection: Collection) =>
|
||||
// TODO: Need to audit the types
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
collection.magicMetadata?.data.visibility === ItemVisibility.hidden;
|
||||
|
||||
// TODO: Does this need localizations?
|
||||
export const DEFAULT_HIDDEN_COLLECTION_USER_FACING_NAME = "Hidden";
|
||||
|
||||
/**
|
||||
* Return the "user facing" name of the given collection.
|
||||
*
|
||||
* Usually this is the same as the collection name, but it might be a different
|
||||
* string for special collections like default hidden collections.
|
||||
*/
|
||||
export const getCollectionUserFacingName = (collection: Collection) => {
|
||||
if (isDefaultHiddenCollection(collection)) {
|
||||
return DEFAULT_HIDDEN_COLLECTION_USER_FACING_NAME;
|
||||
}
|
||||
return collection.name;
|
||||
};
|
||||
|
||||
/**
|
||||
* Return a map of the (user-facing) collection name, indexed by collection ID.
|
||||
*/
|
||||
export const createCollectionNameByID = (allCollections: Collection[]) =>
|
||||
new Map<number, string>(
|
||||
allCollections.map((collection) => [
|
||||
collection.id,
|
||||
getCollectionUserFacingName(collection),
|
||||
]),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user