Merge pull request #245 from ente-io/master

release
This commit is contained in:
abhinavkgrd 2021-11-20 16:19:21 +05:30 committed by GitHub
commit 918c5320f3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 24 deletions

View file

@ -50,6 +50,7 @@ import { LoadingOverlay } from 'components/LoadingOverlay';
import PhotoFrame from 'components/PhotoFrame'; import PhotoFrame from 'components/PhotoFrame';
import { import {
changeFilesVisibility, changeFilesVisibility,
getNonTrashedUniqueUserFiles,
getSelectedFiles, getSelectedFiles,
mergeMetadata, mergeMetadata,
sortFiles, sortFiles,
@ -581,7 +582,7 @@ export default function Gallery() {
loadingBar={loadingBar} loadingBar={loadingBar}
isFirstFetch={isFirstFetch} isFirstFetch={isFirstFetch}
collections={collections} collections={collections}
files={files} files={getNonTrashedUniqueUserFiles(files)}
setActiveCollection={setActiveCollection} setActiveCollection={setActiveCollection}
setSearch={updateSearch} setSearch={updateSearch}
searchStats={searchStats} searchStats={searchStats}

View file

@ -5,8 +5,7 @@ import { DateValue, Suggestion, SuggestionType } from 'components/SearchBar';
import HTTPService from './HTTPService'; import HTTPService from './HTTPService';
import { Collection } from './collectionService'; import { Collection } from './collectionService';
import { File } from './fileService'; import { File } from './fileService';
import { User } from './userService'; import { logError } from 'utils/sentry';
import { getData, LS_KEYS } from 'utils/storage/localStorage';
const ENDPOINT = getEndpoint(); const ENDPOINT = getEndpoint();
const DIGITS = new Set(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']); 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( export async function searchLocation(
searchPhrase: string searchPhrase: string
): Promise<LocationSearchResponse[]> { ): Promise<LocationSearchResponse[]> {
const resp = await HTTPService.get( try {
`${ENDPOINT}/search/location`, const resp = await HTTPService.get(
{ `${ENDPOINT}/search/location`,
query: searchPhrase, {
limit: 4, query: searchPhrase,
}, limit: 4,
{ },
'X-Auth-Token': getToken(), {
} 'X-Auth-Token': getToken(),
); }
return resp.data.results; );
return resp.data.results ?? [];
} catch (e) {
logError(e, 'location search failed');
}
return [];
} }
export function getHolidaySuggestion(searchPhrase: string): Suggestion[] { export function getHolidaySuggestion(searchPhrase: string): Suggestion[] {
@ -99,7 +103,7 @@ export function getYearSuggestion(searchPhrase: string): Suggestion[] {
]; ];
} }
} catch (e) { } catch (e) {
// ignore logError(e, 'getYearSuggestion failed');
} }
} }
return []; return [];
@ -115,8 +119,6 @@ export function searchCollection(
} }
export function searchFiles(searchPhrase: string, files: File[]) { export function searchFiles(searchPhrase: string, files: File[]) {
const user: User = getData(LS_KEYS.USER) ?? {};
const idSet = new Set();
return files return files
.map((file, idx) => ({ .map((file, idx) => ({
title: file.metadata.title, title: file.metadata.title,
@ -125,13 +127,6 @@ export function searchFiles(searchPhrase: string, files: File[]) {
ownerID: file.ownerID, ownerID: file.ownerID,
id: file.id, 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)) .filter(({ title }) => title.toLowerCase().includes(searchPhrase))
.slice(0, 4); .slice(0, 4);
} }

View file

@ -444,3 +444,25 @@ export async function getFileFromURL(fileURL: string) {
const fileFile = new globalThis.File([fileBlob], 'temp'); const fileFile = new globalThis.File([fileBlob], 'temp');
return fileFile; 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)
)
);
}