added remove from favourite logic

This commit is contained in:
Abhinav-grd 2021-01-20 18:34:27 +05:30
parent 6ea5c4ec2e
commit 9f1aabb103
2 changed files with 24 additions and 5 deletions

View file

@ -4,7 +4,7 @@ import PhotoswipeUIDefault from 'photoswipe/dist/photoswipe-ui-default';
import classnames from 'classnames';
import events from './events';
import FavButton from 'components/FavButton';
import { addToFavorites } from 'services/collectionService';
import { addToFavorites, removeFromFavorites } from 'services/collectionService';
import { file } from 'services/fileService';
interface Iprops {
@ -109,16 +109,18 @@ function PhotoSwipe(props: Iprops) {
return false;
}
const onFavClick = (file) => {
const onFavClick = async (file) => {
const { favItemIds, refetchData, setFavItemIds } = props;
if (!isInFav(file)) {
favItemIds.add(file.id);
await addToFavorites(file);
console.log("added to Favorites");
setIsFav(true);
setFavItemIds(favItemIds);
}
else {
favItemIds.delete(file.id);
await removeFromFavorites(file)
console.log("removed from Favorites");
setIsFav(false);
setFavItemIds(favItemIds);

View file

@ -119,7 +119,7 @@ export const getFavItemIds = async (files: file[]): Promise<Set<number>> => {
let favCollection: collection = (await localForage.getItem<collection>('fav-collection'))[0];
if (!favCollection)
return new Set();
return new Set(files.filter(file => file.collectionID === Number(favCollection.id)).map((file): number => file.id));
}
@ -165,12 +165,17 @@ export const addToFavorites = async (file: file) => {
await addtoCollection(favCollection, [file])
}
export const removeFromFavorites = async (file: file) => {
let favCollection: collection = (await localForage.getItem<collection>('fav-collection'))[0];
await removeFromCollection(favCollection, [file])
}
const addtoCollection = async (collection: collection, files: file[]) => {
const params = new Object();
const worker = await new CryptoWorker();
const token = getToken();
params["collectionID"] = collection.id;
const newFiles: file[] = await Promise.all(files.map(async file => {
await Promise.all(files.map(async file => {
file.collectionID = Number(collection.id);
const newEncryptedKey: keyEncryptionResult = await worker.encryptToB64(file.key, collection.key);
file.encryptedKey = newEncryptedKey.encryptedData;
@ -186,5 +191,17 @@ const addtoCollection = async (collection: collection, files: file[]) => {
return file;
}));
await HTTPService.post(`${ENDPOINT}/collections/add-files`, params, { token });
}
const removeFromCollection = async (collection: collection, files: file[]) => {
const params = new Object();
const token = getToken();
params["collectionID"] = collection.id;
await Promise.all(files.map(async file => {
if (params["fileIDs"] == undefined) {
params["fileIDs"] = [];
}
params["fileIDs"].push(file.id);
}));
await HTTPService.post(`${ENDPOINT}/collections/remove-files`, params, { token });
}