commit
4c27fa547e
4 changed files with 40 additions and 39 deletions
|
@ -52,8 +52,8 @@ interface Props {
|
|||
selected: SelectedState | ((selected: SelectedState) => SelectedState)
|
||||
) => void;
|
||||
selected: SelectedState;
|
||||
deletedFileIds?: Set<number>;
|
||||
setDeletedFileIds?: (value: Set<number>) => void;
|
||||
tempDeletedFileIds?: Set<number>;
|
||||
setTempDeletedFileIds?: (value: Set<number>) => void;
|
||||
activeCollectionID: number;
|
||||
enableDownload?: boolean;
|
||||
fileToCollectionsMap: Map<number, number[]>;
|
||||
|
@ -71,8 +71,8 @@ const PhotoFrame = ({
|
|||
favItemIds,
|
||||
setSelected,
|
||||
selected,
|
||||
deletedFileIds,
|
||||
setDeletedFileIds,
|
||||
tempDeletedFileIds,
|
||||
setTempDeletedFileIds,
|
||||
activeCollectionID,
|
||||
enableDownload,
|
||||
fileToCollectionsMap,
|
||||
|
@ -594,8 +594,8 @@ const PhotoFrame = ({
|
|||
gettingData={getSlideData}
|
||||
getConvertedItem={getConvertedItem}
|
||||
favItemIds={favItemIds}
|
||||
deletedFileIds={deletedFileIds}
|
||||
setDeletedFileIds={setDeletedFileIds}
|
||||
tempDeletedFileIds={tempDeletedFileIds}
|
||||
setTempDeletedFileIds={setTempDeletedFileIds}
|
||||
isTrashCollection={activeCollectionID === TRASH_SECTION}
|
||||
isInHiddenSection={isInHiddenSection}
|
||||
enableDownload={enableDownload}
|
||||
|
|
|
@ -85,8 +85,8 @@ interface Iprops {
|
|||
id?: string;
|
||||
className?: string;
|
||||
favItemIds: Set<number>;
|
||||
deletedFileIds: Set<number>;
|
||||
setDeletedFileIds?: (value: Set<number>) => void;
|
||||
tempDeletedFileIds: Set<number>;
|
||||
setTempDeletedFileIds?: (value: Set<number>) => void;
|
||||
isTrashCollection: boolean;
|
||||
isInHiddenSection: boolean;
|
||||
enableDownload: boolean;
|
||||
|
@ -491,13 +491,13 @@ function PhotoViewer(props: Iprops) {
|
|||
};
|
||||
|
||||
const trashFile = async (file: EnteFile) => {
|
||||
const { deletedFileIds, setDeletedFileIds } = props;
|
||||
const { tempDeletedFileIds, setTempDeletedFileIds } = props;
|
||||
try {
|
||||
appContext.startLoading();
|
||||
await trashFiles([file]);
|
||||
appContext.finishLoading();
|
||||
deletedFileIds.add(file.id);
|
||||
setDeletedFileIds(new Set(deletedFileIds));
|
||||
tempDeletedFileIds.add(file.id);
|
||||
setTempDeletedFileIds(new Set(tempDeletedFileIds));
|
||||
updateItems(props.items.filter((item) => item.id !== file.id));
|
||||
needUpdate.current = true;
|
||||
} catch (e) {
|
||||
|
|
|
@ -225,10 +225,11 @@ export default function Gallery() {
|
|||
const syncInProgress = useRef(true);
|
||||
const syncInterval = useRef<NodeJS.Timeout>();
|
||||
const resync = useRef<{ force: boolean; silent: boolean }>();
|
||||
const [deletedFileIds, setDeletedFileIds] = useState<Set<number>>(
|
||||
// tempDeletedFileIds and tempHiddenFileIds are used to keep track of files that are deleted/hidden in the current session but not yet synced with the server.
|
||||
const [tempDeletedFileIds, setTempDeletedFileIds] = useState<Set<number>>(
|
||||
new Set<number>()
|
||||
);
|
||||
const [hiddenFileIds, setHiddenFileIds] = useState<Set<number>>(
|
||||
const [tempHiddenFileIds, setTempHiddenFileIds] = useState<Set<number>>(
|
||||
new Set<number>()
|
||||
);
|
||||
const { startLoading, finishLoading, setDialogMessage, ...appContext } =
|
||||
|
@ -480,17 +481,17 @@ export default function Gallery() {
|
|||
if (activeCollectionID === TRASH_SECTION && !isInSearchMode) {
|
||||
return getUniqueFiles([
|
||||
...trashedFiles,
|
||||
...files.filter((file) => deletedFileIds?.has(file.id)),
|
||||
...files.filter((file) => tempDeletedFileIds?.has(file.id)),
|
||||
]);
|
||||
}
|
||||
|
||||
const filteredFiles = getUniqueFiles(
|
||||
(isInHiddenSection ? hiddenFiles : files).filter((item) => {
|
||||
if (deletedFileIds?.has(item.id)) {
|
||||
if (tempDeletedFileIds?.has(item.id)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isInHiddenSection && hiddenFileIds?.has(item.id)) {
|
||||
if (!isInHiddenSection && tempHiddenFileIds?.has(item.id)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -606,8 +607,8 @@ export default function Gallery() {
|
|||
files,
|
||||
trashedFiles,
|
||||
hiddenFiles,
|
||||
deletedFileIds,
|
||||
hiddenFileIds,
|
||||
tempDeletedFileIds,
|
||||
tempHiddenFileIds,
|
||||
search,
|
||||
activeCollectionID,
|
||||
archivedCollections,
|
||||
|
@ -737,8 +738,8 @@ export default function Gallery() {
|
|||
logError(e, 'syncWithRemote failed');
|
||||
}
|
||||
} finally {
|
||||
setDeletedFileIds(new Set());
|
||||
setHiddenFileIds(new Set());
|
||||
setTempDeletedFileIds(new Set());
|
||||
setTempHiddenFileIds(new Set());
|
||||
!silent && finishLoading();
|
||||
}
|
||||
syncInProgress.current = false;
|
||||
|
@ -879,8 +880,8 @@ export default function Gallery() {
|
|||
await handleFileOps(
|
||||
ops,
|
||||
toProcessFiles,
|
||||
setDeletedFileIds,
|
||||
setHiddenFileIds,
|
||||
setTempDeletedFileIds,
|
||||
setTempHiddenFileIds,
|
||||
setFixCreationTimeAttributes
|
||||
);
|
||||
}
|
||||
|
@ -1113,8 +1114,8 @@ export default function Gallery() {
|
|||
favItemIds={favItemIds}
|
||||
setSelected={setSelected}
|
||||
selected={selected}
|
||||
deletedFileIds={deletedFileIds}
|
||||
setDeletedFileIds={setDeletedFileIds}
|
||||
tempDeletedFileIds={tempDeletedFileIds}
|
||||
setTempDeletedFileIds={setTempDeletedFileIds}
|
||||
setIsPhotoSwipeOpen={setIsPhotoSwipeOpen}
|
||||
activeCollectionID={activeCollectionID}
|
||||
enableDownload={true}
|
||||
|
|
|
@ -857,11 +857,11 @@ export const shouldShowAvatar = (file: EnteFile, user: User) => {
|
|||
export const handleFileOps = async (
|
||||
ops: FILE_OPS_TYPE,
|
||||
files: EnteFile[],
|
||||
setDeletedFileIds: (
|
||||
deletedFileIds: Set<number> | ((prev: Set<number>) => Set<number>)
|
||||
setTempDeletedFileIds: (
|
||||
tempDeletedFileIds: Set<number> | ((prev: Set<number>) => Set<number>)
|
||||
) => void,
|
||||
setHiddenFileIds: (
|
||||
hiddenFileIds: Set<number> | ((prev: Set<number>) => Set<number>)
|
||||
setTempHiddenFileIds: (
|
||||
tempHiddenFileIds: Set<number> | ((prev: Set<number>) => Set<number>)
|
||||
) => void,
|
||||
setFixCreationTimeAttributes: (
|
||||
fixCreationTimeAttributes:
|
||||
|
@ -873,13 +873,13 @@ export const handleFileOps = async (
|
|||
) => {
|
||||
switch (ops) {
|
||||
case FILE_OPS_TYPE.TRASH:
|
||||
await deleteFileHelper(files, false, setDeletedFileIds);
|
||||
await deleteFileHelper(files, false, setTempDeletedFileIds);
|
||||
break;
|
||||
case FILE_OPS_TYPE.DELETE_PERMANENTLY:
|
||||
await deleteFileHelper(files, true, setDeletedFileIds);
|
||||
await deleteFileHelper(files, true, setTempDeletedFileIds);
|
||||
break;
|
||||
case FILE_OPS_TYPE.HIDE:
|
||||
await hideFilesHelper(files, setHiddenFileIds);
|
||||
await hideFilesHelper(files, setTempHiddenFileIds);
|
||||
break;
|
||||
case FILE_OPS_TYPE.DOWNLOAD:
|
||||
await downloadFiles(files);
|
||||
|
@ -899,12 +899,12 @@ export const handleFileOps = async (
|
|||
const deleteFileHelper = async (
|
||||
selectedFiles: EnteFile[],
|
||||
permanent: boolean,
|
||||
setDeletedFileIds: (
|
||||
deletedFileIds: Set<number> | ((prev: Set<number>) => Set<number>)
|
||||
setTempDeletedFileIds: (
|
||||
tempDeletedFileIds: Set<number> | ((prev: Set<number>) => Set<number>)
|
||||
) => void
|
||||
) => {
|
||||
try {
|
||||
setDeletedFileIds((deletedFileIds) => {
|
||||
setTempDeletedFileIds((deletedFileIds) => {
|
||||
selectedFiles.forEach((file) => deletedFileIds.add(file.id));
|
||||
return new Set(deletedFileIds);
|
||||
});
|
||||
|
@ -914,25 +914,25 @@ const deleteFileHelper = async (
|
|||
await trashFiles(selectedFiles);
|
||||
}
|
||||
} catch (e) {
|
||||
setDeletedFileIds(new Set());
|
||||
setTempDeletedFileIds(new Set());
|
||||
throw e;
|
||||
}
|
||||
};
|
||||
|
||||
const hideFilesHelper = async (
|
||||
selectedFiles: EnteFile[],
|
||||
setHiddenFileIds: (
|
||||
hiddenFileIds: Set<number> | ((prev: Set<number>) => Set<number>)
|
||||
setTempHiddenFileIds: (
|
||||
tempHiddenFileIds: Set<number> | ((prev: Set<number>) => Set<number>)
|
||||
) => void
|
||||
) => {
|
||||
try {
|
||||
setHiddenFileIds((hiddenFileIds) => {
|
||||
setTempHiddenFileIds((hiddenFileIds) => {
|
||||
selectedFiles.forEach((file) => hiddenFileIds.add(file.id));
|
||||
return new Set(hiddenFileIds);
|
||||
});
|
||||
await moveToHiddenCollection(selectedFiles);
|
||||
} catch (e) {
|
||||
setHiddenFileIds(new Set());
|
||||
setTempHiddenFileIds(new Set());
|
||||
throw e;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue