This commit is contained in:
Manav Rathi
2024-10-22 19:05:59 +05:30
parent 60261b9d06
commit 104029e720
2 changed files with 89 additions and 70 deletions

View File

@@ -20,6 +20,7 @@ import {
SearchResultsHeader,
} from "@/new/photos/components/gallery";
import {
deriveFilteredFilesAlbumishFocus,
uniqueFilesByID,
useGalleryReducer,
type GalleryBarMode,
@@ -28,9 +29,7 @@ import { usePeopleStateSnapshot } from "@/new/photos/components/utils/ml";
import { shouldShowWhatsNew } from "@/new/photos/services/changelog";
import {
ALL_SECTION,
ARCHIVE_SECTION,
DUMMY_UNCATEGORIZED_COLLECTION,
HIDDEN_ITEMS_SECTION,
TRASH_SECTION,
isHiddenCollection,
} from "@/new/photos/services/collection";
@@ -41,7 +40,6 @@ import {
getLocalTrashedFiles,
sortFiles,
} from "@/new/photos/services/files";
import { isArchivedFile } from "@/new/photos/services/magic-metadata";
import type { Person } from "@/new/photos/services/ml/people";
import {
filterSearchableFiles,
@@ -310,7 +308,6 @@ export default function Gallery() {
const hiddenFiles = state.hiddenFiles;
const trashedFiles = state.trashedFiles;
const archivedCollectionIDs = state.archivedCollectionIDs;
const defaultHiddenCollectionIDs = state.defaultHiddenCollectionIDs;
const hiddenFileIDs = state.hiddenFileIDs;
const collectionNameMap = state.allCollectionNameByID;
const fileToCollectionsMap = state.fileCollectionIDs;
@@ -564,72 +561,7 @@ export default function Gallery() {
...files.filter((file) => tempDeletedFileIDs?.has(file.id)),
]);
} else {
const baseFiles = barMode == "hidden-albums" ? hiddenFiles : files;
filteredFiles = uniqueFilesByID(
baseFiles.filter((item) => {
if (tempDeletedFileIDs?.has(item.id)) {
return false;
}
if (
barMode != "hidden-albums" &&
tempHiddenFileIDs?.has(item.id)
) {
return false;
}
// archived collections files can only be seen in their respective collection
if (archivedCollectionIDs.has(item.collectionID)) {
if (activeCollectionID === item.collectionID) {
return true;
} else {
return false;
}
}
// HIDDEN ITEMS SECTION - show all individual hidden files
if (
activeCollectionID === HIDDEN_ITEMS_SECTION &&
defaultHiddenCollectionIDs.has(item.collectionID)
) {
return true;
}
// Archived files can only be seen in archive section or their respective collection
if (isArchivedFile(item)) {
if (
activeCollectionID === ARCHIVE_SECTION ||
activeCollectionID === item.collectionID
) {
return true;
} else {
return false;
}
}
// ALL SECTION - show all files
if (activeCollectionID === ALL_SECTION) {
// show all files except the ones in hidden collections
if (hiddenFileIDs.has(item.id)) {
return false;
} else {
return true;
}
}
// COLLECTION SECTION - show files in the active collection
if (activeCollectionID === item.collectionID) {
return true;
} else {
return false;
}
}),
);
const sortAsc =
activeCollection?.pubMagicMetadata?.data?.asc ?? false;
if (sortAsc) {
filteredFiles = sortFiles(filteredFiles, true);
}
filteredFiles = deriveFilteredFilesAlbumishFocus(state);
}
dispatch({

View File

@@ -944,3 +944,90 @@ const findAllSectionVisibleFiles = (
!archivedCollectionIDs.has(file.collectionID),
),
);
/**
* Helper function to compute the sorted list of files to show when we're
* showing either "albums" or "hidden-albums".
*/
export const deriveFilteredFilesAlbumishFocus = (state: GalleryState) => {
const {
barMode,
collections,
hiddenCollections,
files,
hiddenFiles,
archivedCollectionIDs,
defaultHiddenCollectionIDs,
hiddenFileIDs,
tempDeletedFileIDs,
tempHiddenFileIDs,
activeCollectionID,
} = state;
const baseFiles = barMode == "hidden-albums" ? hiddenFiles : files;
const activeCollection = (
barMode == "albums" ? collections : hiddenCollections
).find((collection) => collection.id === activeCollectionID);
const filteredFiles = uniqueFilesByID(
baseFiles.filter((item) => {
if (tempDeletedFileIDs.has(item.id)) {
return false;
}
if (barMode != "hidden-albums" && tempHiddenFileIDs.has(item.id)) {
return false;
}
// archived collections files can only be seen in their respective collection
if (archivedCollectionIDs.has(item.collectionID)) {
if (activeCollectionID === item.collectionID) {
return true;
} else {
return false;
}
}
// HIDDEN ITEMS SECTION - show all individual hidden files
if (
activeCollectionID === HIDDEN_ITEMS_SECTION &&
defaultHiddenCollectionIDs.has(item.collectionID)
) {
return true;
}
// Archived files can only be seen in archive section or their respective collection
if (isArchivedFile(item)) {
if (
activeCollectionID === ARCHIVE_SECTION ||
activeCollectionID === item.collectionID
) {
return true;
} else {
return false;
}
}
// ALL SECTION - show all files
if (activeCollectionID === ALL_SECTION) {
// show all files except the ones in hidden collections
if (hiddenFileIDs.has(item.id)) {
return false;
} else {
return true;
}
}
// COLLECTION SECTION - show files in the active collection
if (activeCollectionID === item.collectionID) {
return true;
} else {
return false;
}
}),
);
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const sortAsc = activeCollection?.pubMagicMetadata?.data?.asc ?? false;
return sortAsc ? sortFiles(filteredFiles, true) : filteredFiles;
};