commit
918c5320f3
|
@ -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}
|
||||
|
|
|
@ -5,8 +5,7 @@ import { DateValue, Suggestion, SuggestionType } from 'components/SearchBar';
|
|||
import HTTPService from './HTTPService';
|
||||
import { Collection } from './collectionService';
|
||||
import { File } from './fileService';
|
||||
import { User } from './userService';
|
||||
import { getData, LS_KEYS } from 'utils/storage/localStorage';
|
||||
import { logError } from 'utils/sentry';
|
||||
|
||||
const ENDPOINT = getEndpoint();
|
||||
const DIGITS = new Set(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']);
|
||||
|
@ -45,17 +44,22 @@ export function parseHumanDate(humanDate: string): DateValue[] {
|
|||
export async function searchLocation(
|
||||
searchPhrase: string
|
||||
): Promise<LocationSearchResponse[]> {
|
||||
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 +103,7 @@ export function getYearSuggestion(searchPhrase: string): Suggestion[] {
|
|||
];
|
||||
}
|
||||
} catch (e) {
|
||||
// ignore
|
||||
logError(e, 'getYearSuggestion failed');
|
||||
}
|
||||
}
|
||||
return [];
|
||||
|
@ -115,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,
|
||||
|
@ -125,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);
|
||||
}
|
||||
|
|
|
@ -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<number>();
|
||||
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)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue