show dummy uncategorized until actual is created

This commit is contained in:
Abhinav 2023-02-01 18:58:27 +05:30
parent 9ca8240f8d
commit 38d6d4dbb6
4 changed files with 59 additions and 16 deletions

View file

@ -1,7 +1,11 @@
import React, { useContext, useState, useEffect } from 'react';
import constants from 'utils/strings/constants';
import { GalleryContext } from 'pages/gallery';
import { ARCHIVE_SECTION, TRASH_SECTION } from 'constants/collection';
import {
ARCHIVE_SECTION,
DUMMY_UNCATEGORIZED_SECTION,
TRASH_SECTION,
} from 'constants/collection';
import { CollectionSummaries } from 'types/collection';
import ShortcutButton from './ShortcutButton';
import DeleteOutline from '@mui/icons-material/DeleteOutline';
@ -22,8 +26,12 @@ export default function ShortcutSection({
useState<number>();
useEffect(() => {
const main = async () => {
const unCategorisedCollection = await getUncategorizedCollection();
setUncategorizedCollectionID(unCategorisedCollection.id);
const unCategorizedCollection = await getUncategorizedCollection();
if (unCategorizedCollection) {
setUncategorizedCollectionID(unCategorizedCollection.id);
} else {
setUncategorizedCollectionID(DUMMY_UNCATEGORIZED_SECTION);
}
};
main();
}, []);

View file

@ -1,5 +1,6 @@
export const ARCHIVE_SECTION = -1;
export const TRASH_SECTION = -2;
export const DUMMY_UNCATEGORIZED_SECTION = -3;
export const ALL_SECTION = 0;
export enum CollectionType {
folder = 'folder',

View file

@ -61,7 +61,9 @@ import {
ALL_SECTION,
ARCHIVE_SECTION,
CollectionType,
DUMMY_UNCATEGORIZED_SECTION,
TRASH_SECTION,
UNCATEGORIZED_COLLECTION_NAME,
} from 'constants/collection';
import { AppContext } from 'pages/_app';
import { CustomError, ServerErrorCodes } from 'utils/error';
@ -327,6 +329,8 @@ export default function Gallery() {
collectionURL += constants.ARCHIVE;
} else if (activeCollection === TRASH_SECTION) {
collectionURL += constants.TRASH;
} else if (activeCollection === DUMMY_UNCATEGORIZED_SECTION) {
collectionURL += UNCATEGORIZED_COLLECTION_NAME;
} else {
collectionURL += activeCollection;
}
@ -409,7 +413,7 @@ export default function Gallery() {
const archivedCollections = getArchivedCollections(collections);
setArchivedCollections(archivedCollections);
const collectionSummaries = getCollectionSummaries(
const collectionSummaries = await getCollectionSummaries(
user,
collections,
files,

View file

@ -40,6 +40,7 @@ import {
CollectionSummaryType,
UNCATEGORIZED_COLLECTION_NAME,
FAVORITE_COLLECTION_NAME,
DUMMY_UNCATEGORIZED_SECTION,
} from 'constants/collection';
import {
NEW_COLLECTION_MAGIC_METADATA,
@ -498,7 +499,10 @@ export const removeFromCollection = async (
files: EnteFile[]
) => {
try {
const uncategorizedCollection = await getUncategorizedCollection();
let uncategorizedCollection = await getUncategorizedCollection();
if (!uncategorizedCollection) {
uncategorizedCollection = await createUnCategorizedCollection();
}
const allFiles = await getLocalFiles();
const groupiedFiles = groupFilesBasedOnID(allFiles);
for (const file of files) {
@ -830,12 +834,12 @@ function compareCollectionsLatestFile(first: EnteFile, second: EnteFile) {
}
}
export function getCollectionSummaries(
export async function getCollectionSummaries(
user: User,
collections: Collection[],
files: EnteFile[],
archivedCollections: Set<number>
): CollectionSummaries {
): Promise<CollectionSummaries> {
const collectionSummaries: CollectionSummaries = new Map();
const collectionLatestFiles = getCollectionLatestFiles(
files,
@ -847,12 +851,15 @@ export function getCollectionSummaries(
);
for (const collection of collections) {
if (collectionFilesCount.get(collection.id)) {
if (
collectionFilesCount.get(collection.id) ||
collection.type === CollectionType.uncategorized
) {
collectionSummaries.set(collection.id, {
id: collection.id,
name: collection.name,
latestFile: collectionLatestFiles.get(collection.id),
fileCount: collectionFilesCount.get(collection.id),
fileCount: collectionFilesCount.get(collection.id) ?? 0,
updationTime: collection.updationTime,
type: isIncomingShare(collection, user)
? CollectionSummaryType.incomingShare
@ -866,6 +873,16 @@ export function getCollectionSummaries(
});
}
}
const uncategorizedCollection = await getUncategorizedCollection(
collections
);
if (!uncategorizedCollection) {
collectionSummaries.set(
DUMMY_UNCATEGORIZED_SECTION,
getDummyUncategorizedCollectionSummaries()
);
}
collectionSummaries.set(
ALL_SECTION,
getAllCollectionSummaries(collectionFilesCount, collectionLatestFiles)
@ -933,6 +950,17 @@ function getAllCollectionSummaries(
};
}
function getDummyUncategorizedCollectionSummaries(): CollectionSummary {
return {
id: ALL_SECTION,
name: UNCATEGORIZED_COLLECTION_NAME,
type: CollectionSummaryType.uncategorized,
latestFile: null,
fileCount: 0,
updationTime: 0,
};
}
function getArchivedCollectionSummaries(
collectionFilesCount: CollectionFilesCount,
collectionsLatestFile: CollectionLatestFiles
@ -961,18 +989,20 @@ function getTrashedCollectionSummaries(
};
}
export async function getUncategorizedCollection(): Promise<Collection> {
const collections = await getLocalCollections();
let uncategorizedCollection = collections.find(
export async function getUncategorizedCollection(
collections?: Collection[]
): Promise<Collection> {
if (!collections) {
collections = await getLocalCollections();
}
const uncategorizedCollection = collections.find(
(collection) => collection.type === CollectionType.uncategorized
);
if (!uncategorizedCollection) {
uncategorizedCollection = await createUnCategorizedCollection();
}
return uncategorizedCollection;
}
async function createUnCategorizedCollection() {
export async function createUnCategorizedCollection() {
return createCollection(
UNCATEGORIZED_COLLECTION_NAME,
CollectionType.uncategorized