update DedicatedSearchWorker to keep files list locally

This commit is contained in:
Abhinav 2024-01-23 20:09:59 +05:30
parent 142f485a4a
commit 42e3905864
4 changed files with 23 additions and 15 deletions

View file

@ -79,7 +79,7 @@ export default function SearchInput(props: Iprops) {
}, []);
async function refreshDefaultOptions() {
const defaultOptions = await getDefaultOptions(props.files);
const defaultOptions = await getDefaultOptions();
setDefaultOptions(defaultOptions);
}

View file

@ -363,6 +363,14 @@ export default function Gallery() {
};
}, []);
useEffect(() => {
const main = async () => {
const searchWorker = await ComlinkSearchWorker.getInstance();
searchWorker.setFiles(files);
};
main();
}, [files]);
useEffect(() => {
if (!user || !files || !collections || !hiddenFiles || !trashedFiles) {
return;
@ -492,9 +500,7 @@ export default function Gallery() {
let filteredFiles: EnteFile[] = [];
if (isInSearchMode) {
filteredFiles = getUniqueFiles(
await searchWorker.search(files, search)
);
filteredFiles = getUniqueFiles(await searchWorker.search(search));
} else {
filteredFiles = getUniqueFiles(
(isInHiddenSection ? hiddenFiles : files).filter((item) => {

View file

@ -34,13 +34,10 @@ const DIGITS = new Set(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']);
const CLIP_SCORE_THRESHOLD = 0.23;
export const getDefaultOptions = async (files: EnteFile[]) => {
export const getDefaultOptions = async () => {
return [
await getIndexStatusSuggestion(),
...(await convertSuggestionsToOptions(
await getAllPeopleSuggestion(),
files
)),
...(await convertSuggestionsToOptions(await getAllPeopleSuggestion())),
].filter((t) => !!t);
};
@ -66,7 +63,7 @@ export const getAutoCompleteSuggestions =
...(await getThingSuggestion(searchPhrase)),
].filter((suggestion) => !!suggestion);
return convertSuggestionsToOptions(suggestions, files);
return convertSuggestionsToOptions(suggestions);
} catch (e) {
logError(e, 'getAutoCompleteSuggestions failed');
return [];
@ -74,15 +71,14 @@ export const getAutoCompleteSuggestions =
};
async function convertSuggestionsToOptions(
suggestions: Suggestion[],
files: EnteFile[]
suggestions: Suggestion[]
): Promise<SearchOption[]> {
const searchWorker = await ComlinkSearchWorker.getInstance();
const previewImageAppendedOptions: SearchOption[] = await Promise.all(
suggestions.map(async (suggestion) => {
const searchQuery = convertSuggestionToSearchQuery(suggestion);
const resultFiles = getUniqueFiles(
await searchWorker.search(files, searchQuery)
await searchWorker.search(searchQuery)
);
if (searchQuery?.clip) {

View file

@ -8,8 +8,14 @@ import { isSameDayAnyYear } from 'utils/search';
import { Search } from 'types/search';
export class DedicatedSearchWorker {
async search(files: EnteFile[], search: Search) {
return files.filter((file) => {
private files: EnteFile[] = [];
setFiles(files: EnteFile[]) {
this.files = files;
}
search(search: Search) {
return this.files.filter((file) => {
return isSearchedFile(file, search);
});
}