upates delete file to trash file

This commit is contained in:
abhinav-grd 2021-09-28 12:39:59 +05:30
parent 5ae24449f5
commit 44f01d128c
3 changed files with 25 additions and 17 deletions

View file

@ -10,10 +10,10 @@ import { clearKeys, getKey, SESSION_KEYS } from 'utils/storage/sessionStorage';
import {
File,
getLocalFiles,
deleteFiles,
syncFiles,
updateMagicMetadata,
VISIBILITY_STATE,
trashFiles,
} from 'services/fileService';
import styled from 'styled-components';
import LoadingBar from 'react-top-loading-bar';
@ -49,7 +49,7 @@ import { LoadingOverlay } from 'components/LoadingOverlay';
import PhotoFrame from 'components/PhotoFrame';
import {
changeFilesVisibility,
getSelectedFileIds,
getSelectedFiles,
sortFilesIntoCollections,
} from 'utils/file';
import SearchBar, { DateValue } from 'components/SearchBar';
@ -413,10 +413,9 @@ export default function Gallery() {
const deleteFileHelper = async () => {
loadingBar.current?.continuousStart();
try {
const fileIds = getSelectedFileIds(selected);
await deleteFiles(fileIds);
setDeleted([...deleted, ...fileIds]);
clearSelection();
const selectedFiles = getSelectedFiles(selected, files);
await trashFiles(selectedFiles);
setDeleted([...deleted, ...selectedFiles.map((file) => file.id)]);
} catch (e) {
switch (e.status?.toString()) {
case ServerErrorCodes.FORBIDDEN:

View file

@ -86,6 +86,14 @@ export const NEW_MAGIC_METADATA: MagicMetadata = {
count: 0,
};
interface TrashRequest {
items: TrashRequestItems[];
}
interface TrashRequestItems {
fileID: number;
collectionID: number;
}
export const getLocalFiles = async () => {
const files: Array<File> = (await localForage.getItem<File[]>(FILES)) || [];
return files;
@ -232,22 +240,23 @@ const removeDeletedCollectionFiles = async (
return files;
};
export const deleteFiles = async (filesToDelete: number[]) => {
export const trashFiles = async (filesToTrash: File[]) => {
try {
const token = getToken();
if (!token) {
return;
}
await HTTPService.post(
`${ENDPOINT}/files/delete`,
{ fileIDs: filesToDelete },
null,
{
const trashRequest: TrashRequest = {
items: filesToTrash.map((file) => ({
fileID: file.id,
collectionID: file.collectionID,
})),
};
await HTTPService.post(`${ENDPOINT}/files/trash`, trashRequest, null, {
'X-Auth-Token': token,
}
);
});
} catch (e) {
logError(e, 'delete failed');
logError(e, 'trash file failed');
throw e;
}
};

View file

@ -54,7 +54,7 @@ export function sortFilesIntoCollections(files: File[]) {
return collectionWiseFiles;
}
export function getSelectedFileIds(selectedFiles: SelectedState) {
function getSelectedFileIds(selectedFiles: SelectedState) {
const filesIDs: number[] = [];
for (const [key, val] of Object.entries(selectedFiles)) {
if (typeof val === 'boolean' && val) {