From 8929f235e7d285d36b4c3bb96c1d0c261c72f27e Mon Sep 17 00:00:00 2001 From: Abhinav Date: Sat, 20 Nov 2021 12:06:25 +0530 Subject: [PATCH 1/2] improve error handling --- src/services/searchService.ts | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/services/searchService.ts b/src/services/searchService.ts index 34c5c06b9..463e50c2e 100644 --- a/src/services/searchService.ts +++ b/src/services/searchService.ts @@ -5,6 +5,7 @@ import { DateValue, Suggestion, SuggestionType } from 'components/SearchBar'; import HTTPService from './HTTPService'; import { Collection } from './collectionService'; import { File } from './fileService'; +import { logError } from 'utils/sentry'; import { User } from './userService'; import { getData, LS_KEYS } from 'utils/storage/localStorage'; @@ -45,17 +46,22 @@ export function parseHumanDate(humanDate: string): DateValue[] { export async function searchLocation( searchPhrase: string ): Promise { - const resp = await HTTPService.get( - `${ENDPOINT}/search/location`, - { - query: searchPhrase, - limit: 4, - }, - { - 'X-Auth-Token': getToken(), - } - ); - return resp.data.results; + try { + const resp = await HTTPService.get( + `${ENDPOINT}/search/location`, + { + query: searchPhrase, + limit: 4, + }, + { + 'X-Auth-Token': getToken(), + } + ); + return resp.data.results ?? []; + } catch (e) { + logError(e, 'location search failed'); + } + return []; } export function getHolidaySuggestion(searchPhrase: string): Suggestion[] { @@ -99,7 +105,7 @@ export function getYearSuggestion(searchPhrase: string): Suggestion[] { ]; } } catch (e) { - // ignore + logError(e, 'getYearSuggestion failed'); } } return []; From e13787df7af5b52d3a6785aa11a1dc3b8c3c0213 Mon Sep 17 00:00:00 2001 From: Abhinav Date: Sat, 20 Nov 2021 12:07:19 +0530 Subject: [PATCH 2/2] only pass non trashed file user files for search --- src/pages/gallery/index.tsx | 3 ++- src/services/searchService.ts | 11 ----------- src/utils/file/index.ts | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/pages/gallery/index.tsx b/src/pages/gallery/index.tsx index 554affbed..57ae25e43 100644 --- a/src/pages/gallery/index.tsx +++ b/src/pages/gallery/index.tsx @@ -50,6 +50,7 @@ import { LoadingOverlay } from 'components/LoadingOverlay'; import PhotoFrame from 'components/PhotoFrame'; import { changeFilesVisibility, + getNonTrashedUniqueUserFiles, getSelectedFiles, mergeMetadata, sortFiles, @@ -581,7 +582,7 @@ export default function Gallery() { loadingBar={loadingBar} isFirstFetch={isFirstFetch} collections={collections} - files={files} + files={getNonTrashedUniqueUserFiles(files)} setActiveCollection={setActiveCollection} setSearch={updateSearch} searchStats={searchStats} diff --git a/src/services/searchService.ts b/src/services/searchService.ts index 463e50c2e..7d41fed8a 100644 --- a/src/services/searchService.ts +++ b/src/services/searchService.ts @@ -6,8 +6,6 @@ import HTTPService from './HTTPService'; import { Collection } from './collectionService'; import { File } from './fileService'; import { logError } from 'utils/sentry'; -import { User } from './userService'; -import { getData, LS_KEYS } from 'utils/storage/localStorage'; const ENDPOINT = getEndpoint(); const DIGITS = new Set(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']); @@ -121,8 +119,6 @@ export function searchCollection( } export function searchFiles(searchPhrase: string, files: File[]) { - const user: User = getData(LS_KEYS.USER) ?? {}; - const idSet = new Set(); return files .map((file, idx) => ({ title: file.metadata.title, @@ -131,13 +127,6 @@ export function searchFiles(searchPhrase: string, files: File[]) { ownerID: file.ownerID, id: file.id, })) - .filter((file) => { - if (file.ownerID === user.id && !idSet.has(file.id)) { - idSet.add(file.id); - return true; - } - return false; - }) .filter(({ title }) => title.toLowerCase().includes(searchPhrase)) .slice(0, 4); } diff --git a/src/utils/file/index.ts b/src/utils/file/index.ts index 258984c94..1e3c66953 100644 --- a/src/utils/file/index.ts +++ b/src/utils/file/index.ts @@ -444,3 +444,25 @@ export async function getFileFromURL(fileURL: string) { const fileFile = new globalThis.File([fileBlob], 'temp'); return fileFile; } + +export function getUniqueFiles(files: File[]) { + const idSet = new Set(); + return files.filter((file) => { + if (!idSet.has(file.id)) { + idSet.add(file.id); + return true; + } else { + return false; + } + }); +} +export function getNonTrashedUniqueUserFiles(files: File[]) { + const user: User = getData(LS_KEYS.USER) ?? {}; + return getUniqueFiles( + files.filter( + (file) => + (typeof file.isTrashed === 'undefined' || !file.isTrashed) && + (!user.id || file.ownerID === user.id) + ) + ); +}