Merge pull request #956 from ente-io/caption-search
add caption search support
This commit is contained in:
commit
338e40e100
|
@ -99,6 +99,9 @@ export default function SearchInput(props: Iprops) {
|
|||
case SuggestionType.FILE_NAME:
|
||||
search = { files: selectedOption.value as number[] };
|
||||
break;
|
||||
case SuggestionType.FILE_CAPTION:
|
||||
search = { files: selectedOption.value as number[] };
|
||||
break;
|
||||
case SuggestionType.PERSON:
|
||||
search = { person: selectedOption.value as Person };
|
||||
break;
|
||||
|
|
|
@ -44,7 +44,8 @@ export const getAutoCompleteSuggestions =
|
|||
...getYearSuggestion(searchPhrase),
|
||||
...getDateSuggestion(searchPhrase),
|
||||
...getCollectionSuggestion(searchPhrase, collections),
|
||||
getFileSuggestion(searchPhrase, files),
|
||||
getFileNameSuggestion(searchPhrase, files),
|
||||
getFileCaptionSuggestion(searchPhrase, files),
|
||||
...(await getThingSuggestion(searchPhrase)),
|
||||
...(await getWordSuggestion(searchPhrase)),
|
||||
];
|
||||
|
@ -191,11 +192,11 @@ function getCollectionSuggestion(
|
|||
);
|
||||
}
|
||||
|
||||
function getFileSuggestion(
|
||||
function getFileNameSuggestion(
|
||||
searchPhrase: string,
|
||||
files: EnteFile[]
|
||||
): Suggestion {
|
||||
const matchedFiles = searchFiles(searchPhrase, files);
|
||||
const matchedFiles = searchFilesByName(searchPhrase, files);
|
||||
return {
|
||||
type: SuggestionType.FILE_NAME,
|
||||
value: matchedFiles.map((file) => file.id),
|
||||
|
@ -203,6 +204,18 @@ function getFileSuggestion(
|
|||
};
|
||||
}
|
||||
|
||||
function getFileCaptionSuggestion(
|
||||
searchPhrase: string,
|
||||
files: EnteFile[]
|
||||
): Suggestion {
|
||||
const matchedFiles = searchFilesByCaption(searchPhrase, files);
|
||||
return {
|
||||
type: SuggestionType.FILE_CAPTION,
|
||||
value: matchedFiles.map((file) => file.id),
|
||||
label: searchPhrase,
|
||||
};
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
async function getLocationSuggestions(searchPhrase: string) {
|
||||
const locationResults = await searchLocation(searchPhrase);
|
||||
|
@ -252,7 +265,7 @@ function searchCollection(
|
|||
);
|
||||
}
|
||||
|
||||
function searchFiles(searchPhrase: string, files: EnteFile[]) {
|
||||
function searchFilesByName(searchPhrase: string, files: EnteFile[]) {
|
||||
const user = getData(LS_KEYS.USER) as User;
|
||||
if (!user) return [];
|
||||
return files.filter(
|
||||
|
@ -262,6 +275,19 @@ function searchFiles(searchPhrase: string, files: EnteFile[]) {
|
|||
);
|
||||
}
|
||||
|
||||
function searchFilesByCaption(searchPhrase: string, files: EnteFile[]) {
|
||||
const user = getData(LS_KEYS.USER) as User;
|
||||
if (!user) return [];
|
||||
return files.filter(
|
||||
(file) =>
|
||||
file.ownerID === user.id &&
|
||||
file.pubMagicMetadata &&
|
||||
file.pubMagicMetadata.data.caption
|
||||
?.toLowerCase()
|
||||
.includes(searchPhrase)
|
||||
);
|
||||
}
|
||||
|
||||
function parseHumanDate(humanDate: string): DateValue[] {
|
||||
const date = chrono.parseDate(humanDate);
|
||||
const date1 = chrono.parseDate(`${humanDate} 1`);
|
||||
|
@ -366,6 +392,9 @@ function convertSuggestionToSearchQuery(option: Suggestion): Search {
|
|||
case SuggestionType.FILE_NAME:
|
||||
return { files: option.value as number[] };
|
||||
|
||||
case SuggestionType.FILE_CAPTION:
|
||||
return { files: option.value as number[] };
|
||||
|
||||
case SuggestionType.PERSON:
|
||||
return { person: option.value as Person };
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ export enum SuggestionType {
|
|||
INDEX_STATUS,
|
||||
THING,
|
||||
TEXT,
|
||||
FILE_CAPTION,
|
||||
}
|
||||
|
||||
export interface DateValue {
|
||||
|
|
|
@ -419,6 +419,10 @@ const englishConstants = {
|
|||
return 'Date';
|
||||
case SuggestionType.FILE_NAME:
|
||||
return 'File name';
|
||||
case SuggestionType.THING:
|
||||
return 'Content';
|
||||
case SuggestionType.FILE_CAPTION:
|
||||
return 'Caption';
|
||||
}
|
||||
},
|
||||
PHOTO_COUNT: (count: number) =>
|
||||
|
|
Loading…
Reference in a new issue