From 9f1aabb1037ed8075bc045a8fc48a80116e6320a Mon Sep 17 00:00:00 2001 From: Abhinav-grd Date: Wed, 20 Jan 2021 18:34:27 +0530 Subject: [PATCH] added remove from favourite logic --- src/components/PhotoSwipe/PhotoSwipe.tsx | 6 ++++-- src/services/collectionService.ts | 23 ++++++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/components/PhotoSwipe/PhotoSwipe.tsx b/src/components/PhotoSwipe/PhotoSwipe.tsx index d3769ad04..559485269 100644 --- a/src/components/PhotoSwipe/PhotoSwipe.tsx +++ b/src/components/PhotoSwipe/PhotoSwipe.tsx @@ -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); diff --git a/src/services/collectionService.ts b/src/services/collectionService.ts index ceceab254..a8cca76f6 100644 --- a/src/services/collectionService.ts +++ b/src/services/collectionService.ts @@ -119,7 +119,7 @@ export const getFavItemIds = async (files: file[]): Promise> => { let favCollection: collection = (await localForage.getItem('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('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 }); +} +