cleanup dead code
This commit is contained in:
parent
6ac91607f9
commit
68ffb83400
|
@ -425,7 +425,6 @@
|
||||||
"FILES": "Files",
|
"FILES": "Files",
|
||||||
"EACH": "Each",
|
"EACH": "Each",
|
||||||
"DEDUPLICATE_BASED_ON_SIZE": "The following files were clubbed based on their sizes, please review and delete items you believe are duplicates",
|
"DEDUPLICATE_BASED_ON_SIZE": "The following files were clubbed based on their sizes, please review and delete items you believe are duplicates",
|
||||||
"DEDUPLICATE_BASED_ON_SIZE_AND_CAPTURE_TIME": "The following files were clubbed based on their sizes and capture time, please review and delete items you believe are duplicates",
|
|
||||||
"STOP_ALL_UPLOADS_MESSAGE": "Are you sure that you want to stop all the uploads in progress?",
|
"STOP_ALL_UPLOADS_MESSAGE": "Are you sure that you want to stop all the uploads in progress?",
|
||||||
"STOP_UPLOADS_HEADER": "Stop uploads?",
|
"STOP_UPLOADS_HEADER": "Stop uploads?",
|
||||||
"YES_STOP_UPLOADS": "Yes, stop uploads",
|
"YES_STOP_UPLOADS": "Yes, stop uploads",
|
||||||
|
|
|
@ -19,14 +19,12 @@ import {
|
||||||
import { PublicCollectionGalleryContext } from 'utils/publicCollectionGallery';
|
import { PublicCollectionGalleryContext } from 'utils/publicCollectionGallery';
|
||||||
import { ENTE_WEBSITE_LINK } from '@ente/shared/constants/urls';
|
import { ENTE_WEBSITE_LINK } from '@ente/shared/constants/urls';
|
||||||
import { convertBytesToHumanReadable } from '@ente/shared/utils/size';
|
import { convertBytesToHumanReadable } from '@ente/shared/utils/size';
|
||||||
import { DeduplicateContext } from 'pages/deduplicate';
|
|
||||||
import { FlexWrapper } from '@ente/shared/components/Container';
|
import { FlexWrapper } from '@ente/shared/components/Container';
|
||||||
import { Typography } from '@mui/material';
|
import { Typography } from '@mui/material';
|
||||||
import { GalleryContext } from 'pages/gallery';
|
import { GalleryContext } from 'pages/gallery';
|
||||||
import { formatDate } from '@ente/shared/time/format';
|
import { formatDate } from '@ente/shared/time/format';
|
||||||
import { Trans } from 'react-i18next';
|
import { Trans } from 'react-i18next';
|
||||||
import { t } from 'i18next';
|
import { t } from 'i18next';
|
||||||
import { areFilesWithFileHashSame, hasFileHash } from 'utils/upload';
|
|
||||||
import memoize from 'memoize-one';
|
import memoize from 'memoize-one';
|
||||||
|
|
||||||
const A_DAY = 24 * 60 * 60 * 1000;
|
const A_DAY = 24 * 60 * 60 * 1000;
|
||||||
|
@ -261,7 +259,6 @@ export function PhotoList({
|
||||||
const publicCollectionGalleryContext = useContext(
|
const publicCollectionGalleryContext = useContext(
|
||||||
PublicCollectionGalleryContext
|
PublicCollectionGalleryContext
|
||||||
);
|
);
|
||||||
const deduplicateContext = useContext(DeduplicateContext);
|
|
||||||
|
|
||||||
const [timeStampList, setTimeStampList] = useState<TimeStampListItem[]>([]);
|
const [timeStampList, setTimeStampList] = useState<TimeStampListItem[]>([]);
|
||||||
const refreshInProgress = useRef(false);
|
const refreshInProgress = useRef(false);
|
||||||
|
@ -306,9 +303,6 @@ export function PhotoList({
|
||||||
}
|
}
|
||||||
if (galleryContext.isClipSearchResult) {
|
if (galleryContext.isClipSearchResult) {
|
||||||
noGrouping(timeStampList);
|
noGrouping(timeStampList);
|
||||||
} else if (deduplicateContext.isOnDeduplicatePage) {
|
|
||||||
skipMerge = true;
|
|
||||||
groupByFileSize(timeStampList);
|
|
||||||
} else {
|
} else {
|
||||||
groupByTime(timeStampList);
|
groupByTime(timeStampList);
|
||||||
}
|
}
|
||||||
|
@ -345,9 +339,6 @@ export function PhotoList({
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
displayFiles,
|
displayFiles,
|
||||||
deduplicateContext.isOnDeduplicatePage,
|
|
||||||
deduplicateContext.fileSizeMap,
|
|
||||||
deduplicateContext.clubSameTimeFilesOnly,
|
|
||||||
galleryContext.photoListHeader,
|
galleryContext.photoListHeader,
|
||||||
publicCollectionGalleryContext.photoListHeader,
|
publicCollectionGalleryContext.photoListHeader,
|
||||||
galleryContext.isClipSearchResult,
|
galleryContext.isClipSearchResult,
|
||||||
|
@ -420,67 +411,6 @@ export function PhotoList({
|
||||||
refreshList();
|
refreshList();
|
||||||
}, [timeStampList]);
|
}, [timeStampList]);
|
||||||
|
|
||||||
const groupByFileSize = (timeStampList: TimeStampListItem[]) => {
|
|
||||||
let index = 0;
|
|
||||||
while (index < displayFiles.length) {
|
|
||||||
const firstFile = displayFiles[index];
|
|
||||||
const firstFileSize = deduplicateContext.fileSizeMap.get(
|
|
||||||
firstFile.id
|
|
||||||
);
|
|
||||||
const firstFileCreationTime = firstFile.metadata.creationTime;
|
|
||||||
let lastFileIndex = index;
|
|
||||||
|
|
||||||
while (lastFileIndex < displayFiles.length) {
|
|
||||||
const lastFile = displayFiles[lastFileIndex];
|
|
||||||
|
|
||||||
const lastFileSize = deduplicateContext.fileSizeMap.get(
|
|
||||||
lastFile.id
|
|
||||||
);
|
|
||||||
if (lastFileSize !== firstFileSize) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const lastFileCreationTime = lastFile.metadata.creationTime;
|
|
||||||
if (
|
|
||||||
deduplicateContext.clubSameTimeFilesOnly &&
|
|
||||||
lastFileCreationTime !== firstFileCreationTime
|
|
||||||
) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const eitherFileHasFileHash =
|
|
||||||
hasFileHash(lastFile.metadata) ||
|
|
||||||
hasFileHash(firstFile.metadata);
|
|
||||||
if (
|
|
||||||
eitherFileHasFileHash &&
|
|
||||||
!areFilesWithFileHashSame(
|
|
||||||
lastFile.metadata,
|
|
||||||
firstFile.metadata
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
lastFileIndex++;
|
|
||||||
}
|
|
||||||
lastFileIndex--;
|
|
||||||
timeStampList.push({
|
|
||||||
itemType: ITEM_TYPE.SIZE_AND_COUNT,
|
|
||||||
fileSize: firstFileSize,
|
|
||||||
fileCount: lastFileIndex - index + 1,
|
|
||||||
});
|
|
||||||
|
|
||||||
while (index <= lastFileIndex) {
|
|
||||||
const tileSize = Math.min(columns, lastFileIndex - index + 1);
|
|
||||||
timeStampList.push({
|
|
||||||
itemType: ITEM_TYPE.FILE,
|
|
||||||
items: displayFiles.slice(index, index + tileSize),
|
|
||||||
itemStartIndex: index,
|
|
||||||
});
|
|
||||||
index += tileSize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const groupByTime = (timeStampList: TimeStampListItem[]) => {
|
const groupByTime = (timeStampList: TimeStampListItem[]) => {
|
||||||
let listItemIndex = 0;
|
let listItemIndex = 0;
|
||||||
let currentDate;
|
let currentDate;
|
||||||
|
|
|
@ -4,12 +4,8 @@ import PhotoFrame from 'components/PhotoFrame';
|
||||||
import { ALL_SECTION } from 'constants/collection';
|
import { ALL_SECTION } from 'constants/collection';
|
||||||
import { AppContext } from 'pages/_app';
|
import { AppContext } from 'pages/_app';
|
||||||
import { createContext, useContext, useEffect, useState } from 'react';
|
import { createContext, useContext, useEffect, useState } from 'react';
|
||||||
import {
|
import { getDuplicates, Duplicate } from 'services/deduplicationService';
|
||||||
getDuplicates,
|
import { getLocalFiles, trashFiles } from 'services/fileService';
|
||||||
deClubDuplicatesWithDifferentTime,
|
|
||||||
Duplicate,
|
|
||||||
} from 'services/deduplicationService';
|
|
||||||
import { syncFiles, trashFiles } from 'services/fileService';
|
|
||||||
import { SelectedState } from 'types/gallery';
|
import { SelectedState } from 'types/gallery';
|
||||||
|
|
||||||
import { ApiError } from '@ente/shared/error';
|
import { ApiError } from '@ente/shared/error';
|
||||||
|
@ -24,7 +20,7 @@ import { PHOTOS_PAGES as PAGES } from '@ente/shared/constants/pages';
|
||||||
import router from 'next/router';
|
import router from 'next/router';
|
||||||
import { getKey, SESSION_KEYS } from '@ente/shared/storage/sessionStorage';
|
import { getKey, SESSION_KEYS } from '@ente/shared/storage/sessionStorage';
|
||||||
import { styled } from '@mui/material';
|
import { styled } from '@mui/material';
|
||||||
import { getLatestCollections } from 'services/collectionService';
|
import { getLocalCollections } from 'services/collectionService';
|
||||||
import EnteSpinner from '@ente/shared/components/EnteSpinner';
|
import EnteSpinner from '@ente/shared/components/EnteSpinner';
|
||||||
import { VerticallyCentered } from '@ente/shared/components/Container';
|
import { VerticallyCentered } from '@ente/shared/components/Container';
|
||||||
import Typography from '@mui/material/Typography';
|
import Typography from '@mui/material/Typography';
|
||||||
|
@ -44,8 +40,6 @@ export default function Deduplicate() {
|
||||||
const { setDialogMessage, startLoading, finishLoading, showNavBar } =
|
const { setDialogMessage, startLoading, finishLoading, showNavBar } =
|
||||||
useContext(AppContext);
|
useContext(AppContext);
|
||||||
const [duplicates, setDuplicates] = useState<Duplicate[]>(null);
|
const [duplicates, setDuplicates] = useState<Duplicate[]>(null);
|
||||||
const [clubSameTimeFilesOnly, setClubSameTimeFilesOnly] = useState(false);
|
|
||||||
const [fileSizeMap, setFileSizeMap] = useState(new Map<number, number>());
|
|
||||||
const [collectionNameMap, setCollectionNameMap] = useState(
|
const [collectionNameMap, setCollectionNameMap] = useState(
|
||||||
new Map<number, string>()
|
new Map<number, string>()
|
||||||
);
|
);
|
||||||
|
@ -69,7 +63,7 @@ export default function Deduplicate() {
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
syncWithRemote();
|
syncWithRemote();
|
||||||
}, [clubSameTimeFilesOnly]);
|
}, []);
|
||||||
|
|
||||||
const duplicateFiles = useMemoSingleThreaded(() => {
|
const duplicateFiles = useMemoSingleThreaded(() => {
|
||||||
return (duplicates ?? []).reduce((acc, dupe) => {
|
return (duplicates ?? []).reduce((acc, dupe) => {
|
||||||
|
@ -83,17 +77,14 @@ export default function Deduplicate() {
|
||||||
|
|
||||||
const syncWithRemote = async () => {
|
const syncWithRemote = async () => {
|
||||||
startLoading();
|
startLoading();
|
||||||
const collections = await getLatestCollections();
|
const collections = await getLocalCollections();
|
||||||
const collectionNameMap = new Map<number, string>();
|
const collectionNameMap = new Map<number, string>();
|
||||||
for (const collection of collections) {
|
for (const collection of collections) {
|
||||||
collectionNameMap.set(collection.id, collection.name);
|
collectionNameMap.set(collection.id, collection.name);
|
||||||
}
|
}
|
||||||
setCollectionNameMap(collectionNameMap);
|
setCollectionNameMap(collectionNameMap);
|
||||||
const files = await syncFiles('normal', collections, () => null);
|
const files = await getLocalFiles();
|
||||||
let duplicateFiles = await getDuplicates(files, collectionNameMap);
|
const duplicateFiles = await getDuplicates(files, collectionNameMap);
|
||||||
if (clubSameTimeFilesOnly) {
|
|
||||||
duplicateFiles = deClubDuplicatesWithDifferentTime(duplicateFiles);
|
|
||||||
}
|
|
||||||
const currFileSizeMap = new Map<number, number>();
|
const currFileSizeMap = new Map<number, number>();
|
||||||
let toSelectFileIDs: number[] = [];
|
let toSelectFileIDs: number[] = [];
|
||||||
let count = 0;
|
let count = 0;
|
||||||
|
@ -110,7 +101,6 @@ export default function Deduplicate() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setDuplicates(duplicateFiles);
|
setDuplicates(duplicateFiles);
|
||||||
setFileSizeMap(currFileSizeMap);
|
|
||||||
const selectedFiles = {
|
const selectedFiles = {
|
||||||
count: count,
|
count: count,
|
||||||
ownCount: count,
|
ownCount: count,
|
||||||
|
@ -170,19 +160,9 @@ export default function Deduplicate() {
|
||||||
value={{
|
value={{
|
||||||
...DefaultDeduplicateContext,
|
...DefaultDeduplicateContext,
|
||||||
collectionNameMap,
|
collectionNameMap,
|
||||||
clubSameTimeFilesOnly,
|
|
||||||
setClubSameTimeFilesOnly,
|
|
||||||
fileSizeMap,
|
|
||||||
isOnDeduplicatePage: true,
|
|
||||||
}}>
|
}}>
|
||||||
{duplicates.length > 0 && (
|
{duplicates.length > 0 && (
|
||||||
<Info>
|
<Info>{t('DEDUPLICATE_BASED_ON_SIZE')}</Info>
|
||||||
{t('DEDUPLICATE_BASED_ON', {
|
|
||||||
context: clubSameTimeFilesOnly
|
|
||||||
? 'SIZE_AND_CAPTURE_TIME'
|
|
||||||
: 'SIZE',
|
|
||||||
})}
|
|
||||||
</Info>
|
|
||||||
)}
|
)}
|
||||||
{duplicates.length === 0 ? (
|
{duplicates.length === 0 ? (
|
||||||
<VerticallyCentered>
|
<VerticallyCentered>
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
export type DeduplicateContextType = {
|
export type DeduplicateContextType = {
|
||||||
clubSameTimeFilesOnly: boolean;
|
|
||||||
setClubSameTimeFilesOnly: (clubSameTimeFilesOnly: boolean) => void;
|
|
||||||
fileSizeMap: Map<number, number>;
|
|
||||||
isOnDeduplicatePage: boolean;
|
|
||||||
collectionNameMap: Map<number, string>;
|
collectionNameMap: Map<number, string>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue