Complete useFilteredSearchQuery refactoring (#1531)
Complete useFilteredSearchQuery ref actoring
This commit is contained in:
@ -41,11 +41,7 @@ export function ActivityAssigneePicker({
|
|||||||
queryHook: useSearchUserQuery,
|
queryHook: useSearchUserQuery,
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
fieldName: 'firstName',
|
fieldNames: ['firstName', 'lastName'],
|
||||||
filter: relationPickerSearchFilter,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
fieldName: 'lastName',
|
|
||||||
filter: relationPickerSearchFilter,
|
filter: relationPickerSearchFilter,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@ -16,7 +16,7 @@ export function useFilteredSearchCompanyQuery({
|
|||||||
queryHook: useSearchCompanyQuery,
|
queryHook: useSearchCompanyQuery,
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
fieldName: 'name',
|
fieldNames: ['name'],
|
||||||
filter: searchFilter,
|
filter: searchFilter,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@ -31,19 +31,24 @@ export function PeoplePicker({
|
|||||||
relationPickerSearchFilterScopedState,
|
relationPickerSearchFilterScopedState,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const queryFilters = [
|
||||||
|
{
|
||||||
|
fieldNames: ['firstName', 'lastName'],
|
||||||
|
filter: relationPickerSearchFilter,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
if (companyId) {
|
||||||
|
queryFilters.push({
|
||||||
|
fieldNames: ['companyId'],
|
||||||
|
filter: companyId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const people = useFilteredSearchEntityQuery({
|
const people = useFilteredSearchEntityQuery({
|
||||||
queryHook: useSearchPeopleQuery,
|
queryHook: useSearchPeopleQuery,
|
||||||
selectedIds: [personId ?? ''],
|
selectedIds: [personId ?? ''],
|
||||||
filters: [
|
filters: queryFilters,
|
||||||
{
|
|
||||||
fieldName: 'firstName',
|
|
||||||
filter: relationPickerSearchFilter,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
fieldName: 'lastName',
|
|
||||||
filter: relationPickerSearchFilter,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
mappingFunction: (person) => ({
|
mappingFunction: (person) => ({
|
||||||
entityType: Entity.Person,
|
entityType: Entity.Person,
|
||||||
id: person.id,
|
id: person.id,
|
||||||
|
|||||||
@ -16,11 +16,7 @@ export function useFilteredSearchPeopleQuery({
|
|||||||
queryHook: useSearchPeopleQuery,
|
queryHook: useSearchPeopleQuery,
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
fieldName: 'firstName',
|
fieldNames: ['firstName', 'lastName'],
|
||||||
filter: searchFilter,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
fieldName: 'lastName',
|
|
||||||
filter: searchFilter,
|
filter: searchFilter,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@ -26,7 +26,7 @@ type ExtractEntityTypeFromQueryResponse<T> = T extends {
|
|||||||
? U
|
? U
|
||||||
: never;
|
: never;
|
||||||
|
|
||||||
type SearchFilter = { fieldName: string; filter: string | number };
|
type SearchFilter = { fieldNames: string[]; filter: string | number };
|
||||||
|
|
||||||
const DEFAULT_SEARCH_REQUEST_LIMIT = 10;
|
const DEFAULT_SEARCH_REQUEST_LIMIT = 10;
|
||||||
|
|
||||||
@ -87,12 +87,18 @@ export function useFilteredSearchEntityQuery<
|
|||||||
} as QueryVariables,
|
} as QueryVariables,
|
||||||
});
|
});
|
||||||
|
|
||||||
const searchFilterByField = filters.map(({ fieldName, filter }) => ({
|
const searchFilter = filters.map(({ fieldNames, filter }) => {
|
||||||
[fieldName]: {
|
return {
|
||||||
contains: `%${filter}%`,
|
OR: fieldNames.map((fieldName) => ({
|
||||||
mode: QueryMode.Insensitive,
|
[fieldName]: {
|
||||||
},
|
contains: `%${filter}%`,
|
||||||
}));
|
mode: QueryMode.Insensitive,
|
||||||
|
},
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(searchFilter);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
loading: filteredSelectedEntitiesLoading,
|
loading: filteredSelectedEntitiesLoading,
|
||||||
@ -102,7 +108,7 @@ export function useFilteredSearchEntityQuery<
|
|||||||
where: {
|
where: {
|
||||||
AND: [
|
AND: [
|
||||||
{
|
{
|
||||||
OR: searchFilterByField,
|
AND: searchFilter,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: {
|
id: {
|
||||||
@ -117,30 +123,13 @@ export function useFilteredSearchEntityQuery<
|
|||||||
} as QueryVariables,
|
} as QueryVariables,
|
||||||
});
|
});
|
||||||
|
|
||||||
const filterEntitesBy = filterByFields
|
|
||||||
? filterByFields.map((field) => {
|
|
||||||
const extractedValues: Record<string, any> = {};
|
|
||||||
|
|
||||||
for (const key in field) {
|
|
||||||
extractedValues[key] = {
|
|
||||||
equals: field[key],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return extractedValues;
|
|
||||||
})
|
|
||||||
: [];
|
|
||||||
|
|
||||||
const { loading: entitiesToSelectLoading, data: entitiesToSelectData } =
|
const { loading: entitiesToSelectLoading, data: entitiesToSelectData } =
|
||||||
queryHook({
|
queryHook({
|
||||||
variables: {
|
variables: {
|
||||||
where: {
|
where: {
|
||||||
AND: [
|
AND: [
|
||||||
{
|
{
|
||||||
OR: filterEntitesBy,
|
AND: searchFilter,
|
||||||
},
|
|
||||||
{
|
|
||||||
OR: searchFilterByField,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: {
|
id: {
|
||||||
|
|||||||
@ -28,11 +28,7 @@ export function FilterDropdownUserSearchSelect({
|
|||||||
queryHook: useSearchUserQuery,
|
queryHook: useSearchUserQuery,
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
fieldName: 'firstName',
|
fieldNames: ['firstName', 'lastName'],
|
||||||
filter: filterDropdownSearchInput,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
fieldName: 'lastName',
|
|
||||||
filter: filterDropdownSearchInput,
|
filter: filterDropdownSearchInput,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@ -31,11 +31,7 @@ export function UserPicker({
|
|||||||
queryHook: useSearchUserQuery,
|
queryHook: useSearchUserQuery,
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
fieldName: 'firstName',
|
fieldNames: ['firstName', 'lastName'],
|
||||||
filter: relationPickerSearchFilter,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
fieldName: 'lastName',
|
|
||||||
filter: relationPickerSearchFilter,
|
filter: relationPickerSearchFilter,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user