@chayns-components/person-finder 5.0.19 → 5.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/PersonFinderProvider.js +2 -1
- package/lib/cjs/components/PersonFinderProvider.js.map +1 -1
- package/lib/cjs/utils/personFinder.js +1 -1
- package/lib/cjs/utils/personFinder.js.map +1 -1
- package/lib/esm/components/PersonFinderProvider.js +1 -1
- package/lib/esm/components/PersonFinderProvider.js.map +1 -1
- package/lib/esm/utils/personFinder.js +1 -1
- package/lib/esm/utils/personFinder.js.map +1 -1
- package/package.json +3 -3
|
@@ -244,7 +244,8 @@ const PersonFinderProvider = ({
|
|
|
244
244
|
const searchedUsers = [];
|
|
245
245
|
const entriesToSearch = entries ?? uacUsers;
|
|
246
246
|
entriesToSearch === null || entriesToSearch === void 0 || entriesToSearch.forEach(entry => {
|
|
247
|
-
|
|
247
|
+
var _entry$firstName, _entry$lastName;
|
|
248
|
+
if ((_entry$firstName = entry.firstName) !== null && _entry$firstName !== void 0 && _entry$firstName.toLowerCase().includes(search.toLowerCase()) || (_entry$lastName = entry.lastName) !== null && _entry$lastName !== void 0 && _entry$lastName.toLowerCase().includes(search.toLowerCase()) || [entry.firstName, entry.lastName].filter(Boolean).join(' ').toLowerCase().trim().includes(search.toLowerCase().trim()) || entry.id.toLowerCase().includes(search.toLowerCase())) {
|
|
248
249
|
searchedUsers.push(entry);
|
|
249
250
|
}
|
|
250
251
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonFinderProvider.js","names":["_react","_interopRequireWildcard","require","_lodash","_interopRequireDefault","_personFinder","_get","_post","_delete","_personFinder2","_uac","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","THROTTLE_INTERVAL","PersonFinderContext","exports","createContext","data","undefined","updateData","friends","addFriend","removeFriend","activeFilter","updateActiveFilter","search","updateSearch","loadMore","loadingState","updateLoadingState","tags","setTags","displayName","usePersonFinder","useContext","PersonFinderProvider","children","friendsPriority","filterTypes","defaultEntries","excludedEntryIds","shouldShowOwnUser","uacFilter","entries","setData","useState","setFriends","uacUsers","setUacUsers","setActiveFilter","setSearch","map","id","name","text","setLoadingState","PersonFinderFilterTypes","PERSON","LoadingState","None","SITE","dataRef","useRef","useCallback","filter","key","newData","prevState","appendData","_prevState$key","_prevState$key2","oldEntries","state","prev","value","Pending","current","Error","loadData","searchString","skipMap","skip","then","result","finally","Success","personId","postFriends","firstName","lastName","verificationState","isVerified","commonSites","type","deleteFriends","wasSuccessful","useEffect","includes","getFriends","latestArgsRef","latestHandledRequestRef","throttledRequest","throttle","args","requestTimestamp","Date","now","forEach","keyString","Priority","HIGH","friendIds","Set","serverFriendEntries","entry","serverFriendIds","missingFriends","_f$firstName","_f$lastName","toLowerCase","otherEntries","length","leading","trailing","searchData","tmpData","uacEntries","filteredEntries","count","searchLocal","searchedUsers","entriesToSearch","trim","push","active","UAC","cancel","getUsersByGroups","users","getUACGroups","uac","person","providerValue","useMemo","filterDataByKeys","createElement","Provider","_default"],"sources":["../../../src/components/PersonFinderProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport throttle from 'lodash.throttle';\nimport {\n DefaultEntry,\n LoadingState,\n LoadingStateMap,\n PersonEntry,\n PersonFinderData,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n ThrottledFunction,\n UACEntry,\n UACFilter,\n} from '../types/personFinder';\nimport { getFriends } from '../api/friends/get';\nimport { postFriends } from '../api/friends/post';\nimport { deleteFriends } from '../api/friends/delete';\nimport { filterDataByKeys, loadData } from '../utils/personFinder';\nimport { Tag } from '@chayns-components/core/lib/types/types/tagInput';\nimport { getUACGroups, getUsersByGroups } from '../utils/uac';\n\nconst THROTTLE_INTERVAL = 500;\n\ninterface IPersonFinderContext {\n // Data\n data?: { [key: string]: PersonFinderData };\n updateData?: (key: PersonFinderFilterTypes, personFinderData: PersonFinderData) => void;\n\n // Tags\n tags?: Tag[];\n setTags?: Dispatch<SetStateAction<Tag[]>>;\n\n // Friends\n friends?: PersonEntry[];\n addFriend?: (personId: string) => void;\n removeFriend?: (personId: string) => void;\n\n // Filter\n activeFilter?: PersonFinderFilterTypes[];\n updateActiveFilter?: (filter: PersonFinderFilterTypes[]) => void;\n\n // Search\n search?: string;\n updateSearch?: (value: string) => void;\n\n // Loading\n loadMore?: (key: PersonFinderFilterTypes) => void;\n loadingState?: LoadingStateMap;\n updateLoadingState?: (key: PersonFinderFilterTypes, state: LoadingState) => void;\n}\n\nexport const PersonFinderContext = createContext<IPersonFinderContext>({\n data: undefined,\n updateData: undefined,\n friends: undefined,\n addFriend: undefined,\n removeFriend: undefined,\n activeFilter: undefined,\n updateActiveFilter: undefined,\n search: undefined,\n updateSearch: undefined,\n loadMore: undefined,\n loadingState: undefined,\n updateLoadingState: undefined,\n tags: undefined,\n setTags: undefined,\n});\n\nPersonFinderContext.displayName = 'PersonFinderContext';\n\nexport const usePersonFinder = () => useContext(PersonFinderContext);\n\ntype PersonFinderProviderProps = {\n children: ReactNode;\n friendsPriority: Priority;\n filterTypes: PersonFinderFilterTypes[];\n defaultEntries?: DefaultEntry[];\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n uacFilter?: UACFilter[];\n entries?: PersonEntry[];\n};\n\nconst PersonFinderProvider: FC<PersonFinderProviderProps> = ({\n children,\n friendsPriority,\n filterTypes,\n defaultEntries,\n excludedEntryIds,\n shouldShowOwnUser = false,\n uacFilter,\n entries,\n}) => {\n const [data, setData] = useState<IPersonFinderContext['data']>();\n const [friends, setFriends] = useState<PersonEntry[]>();\n const [uacUsers, setUacUsers] = useState<PersonEntry[]>();\n const [activeFilter, setActiveFilter] = useState<IPersonFinderContext['activeFilter']>();\n const [search, setSearch] = useState('');\n const [tags, setTags] = useState<Tag[]>(\n defaultEntries?.map(({ id, name }) => ({ id, text: name })) ?? [],\n );\n const [loadingState, setLoadingState] = useState<LoadingStateMap>({\n [PersonFinderFilterTypes.PERSON]: LoadingState.None,\n [PersonFinderFilterTypes.SITE]: LoadingState.None,\n });\n\n const dataRef = useRef<IPersonFinderContext['data']>();\n\n const updateActiveFilter = useCallback((filter: IPersonFinderContext['activeFilter']) => {\n setActiveFilter(filter);\n }, []);\n\n const updateData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => ({ ...prevState, [key]: newData }));\n }, []);\n\n const appendData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => {\n const oldEntries = prevState && prevState[key]?.entries ? prevState[key]?.entries : [];\n\n return {\n ...prevState,\n [key]: {\n ...newData,\n entries: [...oldEntries, ...newData.entries],\n },\n };\n });\n }, []);\n\n const updateLoadingState = useCallback((key: PersonFinderFilterTypes, state: LoadingState) => {\n setLoadingState((prev) => ({\n ...prev,\n [key]: state,\n }));\n }, []);\n\n const updateSearch = useCallback((value: string) => {\n setSearch(value);\n }, []);\n\n const loadMore = useCallback(\n (key: PersonFinderFilterTypes) => {\n updateLoadingState(key, LoadingState.Pending);\n\n const current = data?.[key];\n\n if (!current) {\n updateLoadingState(key, LoadingState.Error);\n\n return;\n }\n\n void loadData({\n searchString: search ?? '',\n filter: [key],\n skipMap: { [key]: current.skip },\n })\n .then((result) => {\n const newData = result?.[key];\n\n if (newData) {\n appendData(key, newData);\n }\n })\n .finally(() => {\n updateLoadingState(key, LoadingState.Success);\n });\n },\n [updateLoadingState, data, search, appendData],\n );\n\n const addFriend = useCallback((personId: string) => {\n void postFriends(personId).then((result) => {\n if (result) {\n const { firstName, lastName, verificationState } = result;\n\n setFriends((prev) => [\n ...(prev ?? []),\n {\n id: personId,\n isVerified: verificationState === 1,\n commonSites: 0,\n firstName,\n lastName,\n type: PersonFinderFilterTypes.PERSON,\n },\n ]);\n }\n });\n }, []);\n\n const removeFriend = useCallback((personId: string) => {\n void deleteFriends(personId).then((wasSuccessful) => {\n if (wasSuccessful) {\n setFriends((prev) => prev?.filter(({ id }) => id !== personId));\n }\n });\n }, []);\n\n useEffect(() => {\n if (!filterTypes.includes(PersonFinderFilterTypes.PERSON)) {\n return;\n }\n\n void getFriends().then((result) => {\n if (result) {\n setFriends(\n result.map(({ personId, firstName, lastName, verificationState }) => ({\n lastName,\n firstName,\n id: personId,\n commonSites: 0,\n isVerified: verificationState === 1,\n type: PersonFinderFilterTypes.PERSON,\n })),\n );\n }\n });\n }, [filterTypes]);\n\n const latestArgsRef = useRef<{ search: string; filter: PersonFinderFilterTypes[] } | null>(\n null,\n );\n const latestHandledRequestRef = useRef<number>(0);\n\n const throttledRequest = useRef<ThrottledFunction<() => void>>(\n throttle(\n async () => {\n const args = latestArgsRef.current;\n\n if (!args) return;\n\n const { search: searchString, filter } = args;\n const requestTimestamp = Date.now();\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n });\n\n const result = await loadData({\n searchString,\n filter,\n skipMap: {},\n });\n\n if (requestTimestamp < latestHandledRequestRef.current) {\n return;\n }\n\n latestHandledRequestRef.current = requestTimestamp;\n\n if (!result) return;\n\n Object.entries(result).forEach(([keyString, value]) => {\n const key = keyString as PersonFinderFilterTypes;\n\n if (\n key === PersonFinderFilterTypes.PERSON &&\n friendsPriority === Priority.HIGH &&\n friends\n ) {\n const friendIds = new Set(friends.map((f) => f.id));\n const serverFriendEntries = value.entries.filter((entry) =>\n friendIds.has(entry.id as string),\n );\n const serverFriendIds = new Set(serverFriendEntries.map((f) => f.id));\n\n const missingFriends = friends\n .filter((f) => !serverFriendIds.has(f.id))\n .filter(\n (f) =>\n f.firstName\n ?.toLowerCase()\n .includes(searchString.toLowerCase()) ||\n f.lastName?.toLowerCase().includes(searchString.toLowerCase()),\n );\n\n const otherEntries = value.entries.filter(\n (entry) => !friendIds.has(entry.id as string),\n );\n\n updateData(key, {\n ...value,\n entries: [...serverFriendEntries, ...missingFriends, ...otherEntries],\n });\n } else {\n updateData(key, value);\n }\n\n updateLoadingState(\n key,\n value.entries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n });\n },\n THROTTLE_INTERVAL,\n { leading: false, trailing: true },\n ),\n ).current;\n\n useEffect(() => {\n dataRef.current = data;\n }, [data]);\n\n const searchData = useCallback(\n ({ filter }: { filter: PersonFinderFilterTypes[] }) => {\n const tmpData = dataRef.current;\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n\n if (tmpData && tmpData[key]) {\n // Add all Types that are not searched by a request\n const uacEntries = tmpData[key].entries as UACEntry[];\n\n const filteredEntries = uacEntries.filter(({ name }) =>\n name.toLowerCase().includes(search.toLowerCase()),\n );\n\n updateData(key, {\n entries: filteredEntries,\n searchString: search,\n count: filteredEntries.length,\n skip: filteredEntries.length,\n });\n\n updateLoadingState(\n key,\n filteredEntries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }\n });\n },\n [search, updateData, updateLoadingState],\n );\n\n const searchLocal = useCallback(() => {\n if (search.length < 3) {\n return;\n }\n\n updateLoadingState(PersonFinderFilterTypes.PERSON, LoadingState.Pending);\n\n const searchedUsers: PersonEntry[] = [];\n\n const entriesToSearch = entries ?? uacUsers;\n\n entriesToSearch?.forEach((entry) => {\n if (\n entry.firstName.toLowerCase().includes(search.toLowerCase()) ||\n entry.lastName.toLowerCase().includes(search.toLowerCase()) ||\n `${entry.firstName} ${entry.lastName}`\n .toLowerCase()\n .trim()\n .includes(search.toLowerCase().trim()) ||\n entry.id.toLowerCase().includes(search.toLowerCase())\n ) {\n searchedUsers.push(entry);\n }\n });\n\n updateData(PersonFinderFilterTypes.PERSON, {\n entries: searchedUsers,\n searchString: search,\n count: searchedUsers.length,\n skip: searchedUsers.length,\n });\n\n updateLoadingState(\n PersonFinderFilterTypes.PERSON,\n searchedUsers.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }, [entries, search, uacUsers, updateData, updateLoadingState]);\n\n useEffect(() => {\n if (!search) return;\n\n const active = activeFilter ?? filterTypes;\n\n if (uacFilter || entries) {\n searchLocal();\n } else if (active?.includes(PersonFinderFilterTypes.UAC)) {\n searchData({ filter: [PersonFinderFilterTypes.UAC] });\n } else {\n latestArgsRef.current = { search, filter: active };\n\n throttledRequest();\n }\n }, [\n filterTypes,\n search,\n activeFilter,\n friends,\n friendsPriority,\n updateData,\n updateLoadingState,\n throttledRequest,\n searchData,\n uacFilter,\n searchLocal,\n entries,\n ]);\n\n useEffect(\n () => () => {\n throttledRequest.cancel();\n },\n [throttledRequest],\n );\n\n // load initial data\n useEffect(() => {\n if (entries) {\n return;\n }\n\n if (uacFilter) {\n void getUsersByGroups(uacFilter).then((users) => {\n setUacUsers(users);\n });\n\n return;\n }\n\n if (filterTypes.includes(PersonFinderFilterTypes.UAC) && search === '') {\n void getUACGroups().then((result) => {\n setData({\n uac: {\n entries: result,\n searchString: '',\n skip: result.length,\n count: result.length,\n },\n });\n });\n }\n\n if (\n friendsPriority === Priority.HIGH &&\n filterTypes.includes(PersonFinderFilterTypes.PERSON) &&\n friends &&\n search === ''\n ) {\n setData({\n person: {\n entries: friends,\n searchString: '',\n skip: friends.length,\n count: friends.length,\n },\n });\n }\n }, [entries, filterTypes, friends, friendsPriority, search, uacFilter]);\n\n const providerValue = useMemo<IPersonFinderContext>(\n () => ({\n data: filterDataByKeys(data, activeFilter, {\n excludedEntryIds,\n shouldShowOwnUser: uacFilter ? false : shouldShowOwnUser,\n }),\n updateData,\n activeFilter,\n updateActiveFilter,\n friends,\n addFriend,\n removeFriend,\n search,\n updateSearch,\n loadMore,\n loadingState,\n updateLoadingState,\n setTags,\n tags,\n }),\n [\n activeFilter,\n addFriend,\n data,\n excludedEntryIds,\n friends,\n loadMore,\n loadingState,\n removeFriend,\n search,\n shouldShowOwnUser,\n tags,\n uacFilter,\n updateActiveFilter,\n updateData,\n updateLoadingState,\n updateSearch,\n ],\n );\n\n return (\n <PersonFinderContext.Provider value={providerValue}>\n {children}\n </PersonFinderContext.Provider>\n );\n};\n\nPersonFinderProvider.displayName = 'PersonFinderProvider';\n\nexport default PersonFinderProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PersonFinderProvider.js","names":["_react","_interopRequireWildcard","require","_lodash","_interopRequireDefault","_personFinder","_get","_post","_delete","_personFinder2","_uac","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","THROTTLE_INTERVAL","PersonFinderContext","exports","createContext","data","undefined","updateData","friends","addFriend","removeFriend","activeFilter","updateActiveFilter","search","updateSearch","loadMore","loadingState","updateLoadingState","tags","setTags","displayName","usePersonFinder","useContext","PersonFinderProvider","children","friendsPriority","filterTypes","defaultEntries","excludedEntryIds","shouldShowOwnUser","uacFilter","entries","setData","useState","setFriends","uacUsers","setUacUsers","setActiveFilter","setSearch","map","id","name","text","setLoadingState","PersonFinderFilterTypes","PERSON","LoadingState","None","SITE","dataRef","useRef","useCallback","filter","key","newData","prevState","appendData","_prevState$key","_prevState$key2","oldEntries","state","prev","value","Pending","current","Error","loadData","searchString","skipMap","skip","then","result","finally","Success","personId","postFriends","firstName","lastName","verificationState","isVerified","commonSites","type","deleteFriends","wasSuccessful","useEffect","includes","getFriends","latestArgsRef","latestHandledRequestRef","throttledRequest","throttle","args","requestTimestamp","Date","now","forEach","keyString","Priority","HIGH","friendIds","Set","serverFriendEntries","entry","serverFriendIds","missingFriends","_f$firstName","_f$lastName","toLowerCase","otherEntries","length","leading","trailing","searchData","tmpData","uacEntries","filteredEntries","count","searchLocal","searchedUsers","entriesToSearch","_entry$firstName","_entry$lastName","Boolean","join","trim","push","active","UAC","cancel","getUsersByGroups","users","getUACGroups","uac","person","providerValue","useMemo","filterDataByKeys","createElement","Provider","_default"],"sources":["../../../src/components/PersonFinderProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport throttle from 'lodash.throttle';\nimport {\n DefaultEntry,\n LoadingState,\n LoadingStateMap,\n PersonEntry,\n PersonFinderData,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n ThrottledFunction,\n UACEntry,\n UACFilter,\n} from '../types/personFinder';\nimport { getFriends } from '../api/friends/get';\nimport { postFriends } from '../api/friends/post';\nimport { deleteFriends } from '../api/friends/delete';\nimport { filterDataByKeys, loadData } from '../utils/personFinder';\nimport { Tag } from '@chayns-components/core/lib/types/types/tagInput';\nimport { getUACGroups, getUsersByGroups } from '../utils/uac';\n\nconst THROTTLE_INTERVAL = 500;\n\ninterface IPersonFinderContext {\n // Data\n data?: { [key: string]: PersonFinderData };\n updateData?: (key: PersonFinderFilterTypes, personFinderData: PersonFinderData) => void;\n\n // Tags\n tags?: Tag[];\n setTags?: Dispatch<SetStateAction<Tag[]>>;\n\n // Friends\n friends?: PersonEntry[];\n addFriend?: (personId: string) => void;\n removeFriend?: (personId: string) => void;\n\n // Filter\n activeFilter?: PersonFinderFilterTypes[];\n updateActiveFilter?: (filter: PersonFinderFilterTypes[]) => void;\n\n // Search\n search?: string;\n updateSearch?: (value: string) => void;\n\n // Loading\n loadMore?: (key: PersonFinderFilterTypes) => void;\n loadingState?: LoadingStateMap;\n updateLoadingState?: (key: PersonFinderFilterTypes, state: LoadingState) => void;\n}\n\nexport const PersonFinderContext = createContext<IPersonFinderContext>({\n data: undefined,\n updateData: undefined,\n friends: undefined,\n addFriend: undefined,\n removeFriend: undefined,\n activeFilter: undefined,\n updateActiveFilter: undefined,\n search: undefined,\n updateSearch: undefined,\n loadMore: undefined,\n loadingState: undefined,\n updateLoadingState: undefined,\n tags: undefined,\n setTags: undefined,\n});\n\nPersonFinderContext.displayName = 'PersonFinderContext';\n\nexport const usePersonFinder = () => useContext(PersonFinderContext);\n\ntype PersonFinderProviderProps = {\n children: ReactNode;\n friendsPriority: Priority;\n filterTypes: PersonFinderFilterTypes[];\n defaultEntries?: DefaultEntry[];\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n uacFilter?: UACFilter[];\n entries?: PersonEntry[];\n};\n\nconst PersonFinderProvider: FC<PersonFinderProviderProps> = ({\n children,\n friendsPriority,\n filterTypes,\n defaultEntries,\n excludedEntryIds,\n shouldShowOwnUser = false,\n uacFilter,\n entries,\n}) => {\n const [data, setData] = useState<IPersonFinderContext['data']>();\n const [friends, setFriends] = useState<PersonEntry[]>();\n const [uacUsers, setUacUsers] = useState<PersonEntry[]>();\n const [activeFilter, setActiveFilter] = useState<IPersonFinderContext['activeFilter']>();\n const [search, setSearch] = useState('');\n const [tags, setTags] = useState<Tag[]>(\n defaultEntries?.map(({ id, name }) => ({ id, text: name })) ?? [],\n );\n const [loadingState, setLoadingState] = useState<LoadingStateMap>({\n [PersonFinderFilterTypes.PERSON]: LoadingState.None,\n [PersonFinderFilterTypes.SITE]: LoadingState.None,\n });\n\n const dataRef = useRef<IPersonFinderContext['data']>();\n\n const updateActiveFilter = useCallback((filter: IPersonFinderContext['activeFilter']) => {\n setActiveFilter(filter);\n }, []);\n\n const updateData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => ({ ...prevState, [key]: newData }));\n }, []);\n\n const appendData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => {\n const oldEntries = prevState && prevState[key]?.entries ? prevState[key]?.entries : [];\n\n return {\n ...prevState,\n [key]: {\n ...newData,\n entries: [...oldEntries, ...newData.entries],\n },\n };\n });\n }, []);\n\n const updateLoadingState = useCallback((key: PersonFinderFilterTypes, state: LoadingState) => {\n setLoadingState((prev) => ({\n ...prev,\n [key]: state,\n }));\n }, []);\n\n const updateSearch = useCallback((value: string) => {\n setSearch(value);\n }, []);\n\n const loadMore = useCallback(\n (key: PersonFinderFilterTypes) => {\n updateLoadingState(key, LoadingState.Pending);\n\n const current = data?.[key];\n\n if (!current) {\n updateLoadingState(key, LoadingState.Error);\n\n return;\n }\n\n void loadData({\n searchString: search ?? '',\n filter: [key],\n skipMap: { [key]: current.skip },\n })\n .then((result) => {\n const newData = result?.[key];\n\n if (newData) {\n appendData(key, newData);\n }\n })\n .finally(() => {\n updateLoadingState(key, LoadingState.Success);\n });\n },\n [updateLoadingState, data, search, appendData],\n );\n\n const addFriend = useCallback((personId: string) => {\n void postFriends(personId).then((result) => {\n if (result) {\n const { firstName, lastName, verificationState } = result;\n\n setFriends((prev) => [\n ...(prev ?? []),\n {\n id: personId,\n isVerified: verificationState === 1,\n commonSites: 0,\n firstName,\n lastName,\n type: PersonFinderFilterTypes.PERSON,\n },\n ]);\n }\n });\n }, []);\n\n const removeFriend = useCallback((personId: string) => {\n void deleteFriends(personId).then((wasSuccessful) => {\n if (wasSuccessful) {\n setFriends((prev) => prev?.filter(({ id }) => id !== personId));\n }\n });\n }, []);\n\n useEffect(() => {\n if (!filterTypes.includes(PersonFinderFilterTypes.PERSON)) {\n return;\n }\n\n void getFriends().then((result) => {\n if (result) {\n setFriends(\n result.map(({ personId, firstName, lastName, verificationState }) => ({\n lastName,\n firstName,\n id: personId,\n commonSites: 0,\n isVerified: verificationState === 1,\n type: PersonFinderFilterTypes.PERSON,\n })),\n );\n }\n });\n }, [filterTypes]);\n\n const latestArgsRef = useRef<{ search: string; filter: PersonFinderFilterTypes[] } | null>(\n null,\n );\n const latestHandledRequestRef = useRef<number>(0);\n\n const throttledRequest = useRef<ThrottledFunction<() => void>>(\n throttle(\n async () => {\n const args = latestArgsRef.current;\n\n if (!args) return;\n\n const { search: searchString, filter } = args;\n const requestTimestamp = Date.now();\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n });\n\n const result = await loadData({\n searchString,\n filter,\n skipMap: {},\n });\n\n if (requestTimestamp < latestHandledRequestRef.current) {\n return;\n }\n\n latestHandledRequestRef.current = requestTimestamp;\n\n if (!result) return;\n\n Object.entries(result).forEach(([keyString, value]) => {\n const key = keyString as PersonFinderFilterTypes;\n\n if (\n key === PersonFinderFilterTypes.PERSON &&\n friendsPriority === Priority.HIGH &&\n friends\n ) {\n const friendIds = new Set(friends.map((f) => f.id));\n const serverFriendEntries = value.entries.filter((entry) =>\n friendIds.has(entry.id as string),\n );\n const serverFriendIds = new Set(serverFriendEntries.map((f) => f.id));\n\n const missingFriends = friends\n .filter((f) => !serverFriendIds.has(f.id))\n .filter(\n (f) =>\n f.firstName\n ?.toLowerCase()\n .includes(searchString.toLowerCase()) ||\n f.lastName?.toLowerCase().includes(searchString.toLowerCase()),\n );\n\n const otherEntries = value.entries.filter(\n (entry) => !friendIds.has(entry.id as string),\n );\n\n updateData(key, {\n ...value,\n entries: [...serverFriendEntries, ...missingFriends, ...otherEntries],\n });\n } else {\n updateData(key, value);\n }\n\n updateLoadingState(\n key,\n value.entries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n });\n },\n THROTTLE_INTERVAL,\n { leading: false, trailing: true },\n ),\n ).current;\n\n useEffect(() => {\n dataRef.current = data;\n }, [data]);\n\n const searchData = useCallback(\n ({ filter }: { filter: PersonFinderFilterTypes[] }) => {\n const tmpData = dataRef.current;\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n\n if (tmpData && tmpData[key]) {\n // Add all Types that are not searched by a request\n const uacEntries = tmpData[key].entries as UACEntry[];\n\n const filteredEntries = uacEntries.filter(({ name }) =>\n name.toLowerCase().includes(search.toLowerCase()),\n );\n\n updateData(key, {\n entries: filteredEntries,\n searchString: search,\n count: filteredEntries.length,\n skip: filteredEntries.length,\n });\n\n updateLoadingState(\n key,\n filteredEntries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }\n });\n },\n [search, updateData, updateLoadingState],\n );\n\n const searchLocal = useCallback(() => {\n if (search.length < 3) {\n return;\n }\n\n updateLoadingState(PersonFinderFilterTypes.PERSON, LoadingState.Pending);\n\n const searchedUsers: PersonEntry[] = [];\n\n const entriesToSearch = entries ?? uacUsers;\n\n entriesToSearch?.forEach((entry) => {\n if (\n entry.firstName?.toLowerCase().includes(search.toLowerCase()) ||\n entry.lastName?.toLowerCase().includes(search.toLowerCase()) ||\n [entry.firstName, entry.lastName]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n .trim()\n .includes(search.toLowerCase().trim()) ||\n entry.id.toLowerCase().includes(search.toLowerCase())\n ) {\n searchedUsers.push(entry);\n }\n });\n\n updateData(PersonFinderFilterTypes.PERSON, {\n entries: searchedUsers,\n searchString: search,\n count: searchedUsers.length,\n skip: searchedUsers.length,\n });\n\n updateLoadingState(\n PersonFinderFilterTypes.PERSON,\n searchedUsers.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }, [entries, search, uacUsers, updateData, updateLoadingState]);\n\n useEffect(() => {\n if (!search) return;\n\n const active = activeFilter ?? filterTypes;\n\n if (uacFilter || entries) {\n searchLocal();\n } else if (active?.includes(PersonFinderFilterTypes.UAC)) {\n searchData({ filter: [PersonFinderFilterTypes.UAC] });\n } else {\n latestArgsRef.current = { search, filter: active };\n\n throttledRequest();\n }\n }, [\n filterTypes,\n search,\n activeFilter,\n friends,\n friendsPriority,\n updateData,\n updateLoadingState,\n throttledRequest,\n searchData,\n uacFilter,\n searchLocal,\n entries,\n ]);\n\n useEffect(\n () => () => {\n throttledRequest.cancel();\n },\n [throttledRequest],\n );\n\n // load initial data\n useEffect(() => {\n if (entries) {\n return;\n }\n\n if (uacFilter) {\n void getUsersByGroups(uacFilter).then((users) => {\n setUacUsers(users);\n });\n\n return;\n }\n\n if (filterTypes.includes(PersonFinderFilterTypes.UAC) && search === '') {\n void getUACGroups().then((result) => {\n setData({\n uac: {\n entries: result,\n searchString: '',\n skip: result.length,\n count: result.length,\n },\n });\n });\n }\n\n if (\n friendsPriority === Priority.HIGH &&\n filterTypes.includes(PersonFinderFilterTypes.PERSON) &&\n friends &&\n search === ''\n ) {\n setData({\n person: {\n entries: friends,\n searchString: '',\n skip: friends.length,\n count: friends.length,\n },\n });\n }\n }, [entries, filterTypes, friends, friendsPriority, search, uacFilter]);\n\n const providerValue = useMemo<IPersonFinderContext>(\n () => ({\n data: filterDataByKeys(data, activeFilter, {\n excludedEntryIds,\n shouldShowOwnUser: uacFilter ? false : shouldShowOwnUser,\n }),\n updateData,\n activeFilter,\n updateActiveFilter,\n friends,\n addFriend,\n removeFriend,\n search,\n updateSearch,\n loadMore,\n loadingState,\n updateLoadingState,\n setTags,\n tags,\n }),\n [\n activeFilter,\n addFriend,\n data,\n excludedEntryIds,\n friends,\n loadMore,\n loadingState,\n removeFriend,\n search,\n shouldShowOwnUser,\n tags,\n uacFilter,\n updateActiveFilter,\n updateData,\n updateLoadingState,\n updateSearch,\n ],\n );\n\n return (\n <PersonFinderContext.Provider value={providerValue}>\n {children}\n </PersonFinderContext.Provider>\n );\n};\n\nPersonFinderProvider.displayName = 'PersonFinderProvider';\n\nexport default PersonFinderProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -57,7 +57,7 @@ const filterDataByKeys = (data = {}, keys = [], options = {}) => {
|
|
|
57
57
|
lastName: user.lastName ?? '',
|
|
58
58
|
type: _personFinder.PersonFinderFilterTypes.PERSON
|
|
59
59
|
};
|
|
60
|
-
const fullName =
|
|
60
|
+
const fullName = [ownUserEntry.firstName, ownUserEntry.lastName].filter(Boolean).join(' ').trim();
|
|
61
61
|
if (original.searchString.length < 3 || fullName.toLowerCase().includes(original.searchString.toLowerCase())) {
|
|
62
62
|
filteredEntry.entries = [ownUserEntry, ...filteredEntry.entries];
|
|
63
63
|
filteredEntry.count += 1; // Increment count to account for the own user
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personFinder.js","names":["_personFinder","require","_get","_get2","_convert","_chaynsApi","getGroupName","key","names","person","site","uac","exports","isSiteEntry","entry","filterDataByKeys","data","keys","options","filterSingle","filteredEntries","entries","excludedEntryIds","Array","isArray","length","filter","e","includes","id","excludedCount","count","Math","max","relevantKeys","Object","reduce","acc","original","searchString","skip","filteredEntry","shouldShowOwnUser","PersonFinderFilterTypes","PERSON","user","getUser","personId","ownUserEntry","commonSites","firstName","isVerified","lastName","type","fullName","trim","toLowerCase","capitalizeFirstLetter","str","charAt","toUpperCase","slice","destructureData","filterType","_data$filterType","_data$filterType2","_data$filterType3","_data$filterType4","loadData","skipMap","promises","map","_data$list","value","getPersons","search","list","convertPersonEntry","SITE","getSites","filteredList","siteId","convertSiteEntry","results","Promise","all","item"],"sources":["../../../src/utils/personFinder.ts"],"sourcesContent":["import {\n PersonEntry,\n PersonFinderData,\n PersonFinderDataMap,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n SiteEntry,\n} from '../types/personFinder';\nimport { getPersons } from '../api/person/get';\nimport { getSites } from '../api/site/get';\nimport { convertPersonEntry, convertSiteEntry } from './convert';\nimport { getUser } from 'chayns-api';\n\nexport const getGroupName = (key: string) => {\n const names: { [key: string]: string } = {\n person: 'Personen',\n site: 'Sites',\n uac: 'UAC Gruppen',\n };\n\n return names[key];\n};\n\nexport const isSiteEntry = (entry: PersonEntry | SiteEntry): entry is SiteEntry =>\n 'name' in entry && !('firstName' in entry);\n\ninterface FilterDataByKeysOptions {\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n}\n\nexport const filterDataByKeys = (\n data: { [key: string]: PersonFinderData } = {},\n keys: PersonFinderFilterTypes[] = [],\n options: FilterDataByKeysOptions = {},\n): { [key: string]: PersonFinderData } => {\n const filterSingle = (entry: PersonFinderData): PersonFinderData => {\n let filteredEntries = entry.entries;\n\n const { excludedEntryIds } = options;\n\n if (Array.isArray(excludedEntryIds) && excludedEntryIds.length > 0) {\n filteredEntries = filteredEntries.filter((e) => !excludedEntryIds.includes(e.id));\n }\n\n const excludedCount = entry.entries.length - filteredEntries.length;\n\n return {\n ...entry,\n entries: filteredEntries,\n count: Math.max(0, entry.count - excludedCount),\n };\n };\n\n const relevantKeys = keys.length > 0 ? keys : Object.keys(data);\n\n return relevantKeys.reduce((acc, key) => {\n const original = data[key] ?? { searchString: '', count: 0, skip: 0, entries: [] };\n\n const filteredEntry = filterSingle(original);\n\n if (options.shouldShowOwnUser && key === PersonFinderFilterTypes.PERSON) {\n const user = getUser();\n\n if (typeof user?.personId === 'string') {\n // Ensure that the own user is always included in the person filter\n const ownUserEntry: PersonEntry = {\n commonSites: 0,\n firstName: user.firstName ?? '',\n id: user.personId,\n isVerified: false,\n lastName: user.lastName ?? '',\n type: PersonFinderFilterTypes.PERSON,\n };\n\n const fullName = `${ownUserEntry.firstName} ${ownUserEntry.lastName}`.trim();\n\n if (\n original.searchString.length < 3 ||\n fullName.toLowerCase().includes(original.searchString.toLowerCase())\n ) {\n filteredEntry.entries = [ownUserEntry, ...filteredEntry.entries];\n filteredEntry.count += 1; // Increment count to account for the own user\n }\n }\n }\n\n return { ...acc, [key]: filteredEntry };\n }, {});\n};\n\nexport const capitalizeFirstLetter = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const destructureData = (\n data: Record<string, PersonFinderData> | undefined,\n filterType: string,\n) => ({\n count: data?.[filterType]?.count ?? 0,\n skip: data?.[filterType]?.skip ?? 0,\n searchString: data?.[filterType]?.searchString ?? '',\n entries: data?.[filterType]?.entries ?? [],\n});\n\ninterface LoadDataOptions {\n searchString: string;\n filter: PersonFinderFilterTypes[];\n skipMap: Partial<Record<PersonFinderFilterTypes, number>>;\n}\n\nexport const loadData = async ({\n skipMap,\n searchString,\n filter,\n}: LoadDataOptions): Promise<PersonFinderDataMap> => {\n const promises = filter.map(async (filterType) => {\n const skip = skipMap[filterType] ?? 0;\n\n if (filterType === PersonFinderFilterTypes.PERSON) {\n if (searchString.length <= 2) {\n return {\n key: PersonFinderFilterTypes.PERSON,\n value: {\n searchString,\n count: 0,\n skip: 0,\n entries: [],\n },\n };\n }\n\n const data = await getPersons({ search: searchString, skip });\n\n return {\n key: PersonFinderFilterTypes.PERSON,\n value: {\n searchString,\n count: data?.count ?? 0,\n skip: skip + (data?.list?.length ?? 0),\n entries: convertPersonEntry(data?.list ?? []),\n },\n };\n }\n\n if (filterType === PersonFinderFilterTypes.SITE) {\n if (searchString.length <= 2) {\n return {\n key: PersonFinderFilterTypes.SITE,\n value: {\n searchString,\n count: 0,\n skip: 0,\n entries: [],\n },\n };\n }\n\n const data = await getSites({ search: searchString, skip });\n\n const filteredList = data?.list.filter(({ siteId }) => siteId !== null);\n\n return {\n key: PersonFinderFilterTypes.SITE,\n value: {\n searchString,\n count: data?.count ?? 0,\n skip: skip + (filteredList?.length ?? 0),\n entries: convertSiteEntry(filteredList ?? []),\n },\n };\n }\n\n return null;\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce<PersonFinderDataMap>((acc, item) => {\n if (!item) return acc;\n\n return {\n ...acc,\n [item.key]: item.value,\n };\n }, {});\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"personFinder.js","names":["_personFinder","require","_get","_get2","_convert","_chaynsApi","getGroupName","key","names","person","site","uac","exports","isSiteEntry","entry","filterDataByKeys","data","keys","options","filterSingle","filteredEntries","entries","excludedEntryIds","Array","isArray","length","filter","e","includes","id","excludedCount","count","Math","max","relevantKeys","Object","reduce","acc","original","searchString","skip","filteredEntry","shouldShowOwnUser","PersonFinderFilterTypes","PERSON","user","getUser","personId","ownUserEntry","commonSites","firstName","isVerified","lastName","type","fullName","Boolean","join","trim","toLowerCase","capitalizeFirstLetter","str","charAt","toUpperCase","slice","destructureData","filterType","_data$filterType","_data$filterType2","_data$filterType3","_data$filterType4","loadData","skipMap","promises","map","_data$list","value","getPersons","search","list","convertPersonEntry","SITE","getSites","filteredList","siteId","convertSiteEntry","results","Promise","all","item"],"sources":["../../../src/utils/personFinder.ts"],"sourcesContent":["import {\n PersonEntry,\n PersonFinderData,\n PersonFinderDataMap,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n SiteEntry,\n} from '../types/personFinder';\nimport { getPersons } from '../api/person/get';\nimport { getSites } from '../api/site/get';\nimport { convertPersonEntry, convertSiteEntry } from './convert';\nimport { getUser } from 'chayns-api';\n\nexport const getGroupName = (key: string) => {\n const names: { [key: string]: string } = {\n person: 'Personen',\n site: 'Sites',\n uac: 'UAC Gruppen',\n };\n\n return names[key];\n};\n\nexport const isSiteEntry = (entry: PersonEntry | SiteEntry): entry is SiteEntry =>\n 'name' in entry && !('firstName' in entry);\n\ninterface FilterDataByKeysOptions {\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n}\n\nexport const filterDataByKeys = (\n data: { [key: string]: PersonFinderData } = {},\n keys: PersonFinderFilterTypes[] = [],\n options: FilterDataByKeysOptions = {},\n): { [key: string]: PersonFinderData } => {\n const filterSingle = (entry: PersonFinderData): PersonFinderData => {\n let filteredEntries = entry.entries;\n\n const { excludedEntryIds } = options;\n\n if (Array.isArray(excludedEntryIds) && excludedEntryIds.length > 0) {\n filteredEntries = filteredEntries.filter((e) => !excludedEntryIds.includes(e.id));\n }\n\n const excludedCount = entry.entries.length - filteredEntries.length;\n\n return {\n ...entry,\n entries: filteredEntries,\n count: Math.max(0, entry.count - excludedCount),\n };\n };\n\n const relevantKeys = keys.length > 0 ? keys : Object.keys(data);\n\n return relevantKeys.reduce((acc, key) => {\n const original = data[key] ?? { searchString: '', count: 0, skip: 0, entries: [] };\n\n const filteredEntry = filterSingle(original);\n\n if (options.shouldShowOwnUser && key === PersonFinderFilterTypes.PERSON) {\n const user = getUser();\n\n if (typeof user?.personId === 'string') {\n // Ensure that the own user is always included in the person filter\n const ownUserEntry: PersonEntry = {\n commonSites: 0,\n firstName: user.firstName ?? '',\n id: user.personId,\n isVerified: false,\n lastName: user.lastName ?? '',\n type: PersonFinderFilterTypes.PERSON,\n };\n\n const fullName = [ownUserEntry.firstName, ownUserEntry.lastName]\n .filter(Boolean)\n .join(' ')\n .trim();\n\n if (\n original.searchString.length < 3 ||\n fullName.toLowerCase().includes(original.searchString.toLowerCase())\n ) {\n filteredEntry.entries = [ownUserEntry, ...filteredEntry.entries];\n filteredEntry.count += 1; // Increment count to account for the own user\n }\n }\n }\n\n return { ...acc, [key]: filteredEntry };\n }, {});\n};\n\nexport const capitalizeFirstLetter = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const destructureData = (\n data: Record<string, PersonFinderData> | undefined,\n filterType: string,\n) => ({\n count: data?.[filterType]?.count ?? 0,\n skip: data?.[filterType]?.skip ?? 0,\n searchString: data?.[filterType]?.searchString ?? '',\n entries: data?.[filterType]?.entries ?? [],\n});\n\ninterface LoadDataOptions {\n searchString: string;\n filter: PersonFinderFilterTypes[];\n skipMap: Partial<Record<PersonFinderFilterTypes, number>>;\n}\n\nexport const loadData = async ({\n skipMap,\n searchString,\n filter,\n}: LoadDataOptions): Promise<PersonFinderDataMap> => {\n const promises = filter.map(async (filterType) => {\n const skip = skipMap[filterType] ?? 0;\n\n if (filterType === PersonFinderFilterTypes.PERSON) {\n if (searchString.length <= 2) {\n return {\n key: PersonFinderFilterTypes.PERSON,\n value: {\n searchString,\n count: 0,\n skip: 0,\n entries: [],\n },\n };\n }\n\n const data = await getPersons({ search: searchString, skip });\n\n return {\n key: PersonFinderFilterTypes.PERSON,\n value: {\n searchString,\n count: data?.count ?? 0,\n skip: skip + (data?.list?.length ?? 0),\n entries: convertPersonEntry(data?.list ?? []),\n },\n };\n }\n\n if (filterType === PersonFinderFilterTypes.SITE) {\n if (searchString.length <= 2) {\n return {\n key: PersonFinderFilterTypes.SITE,\n value: {\n searchString,\n count: 0,\n skip: 0,\n entries: [],\n },\n };\n }\n\n const data = await getSites({ search: searchString, skip });\n\n const filteredList = data?.list.filter(({ siteId }) => siteId !== null);\n\n return {\n key: PersonFinderFilterTypes.SITE,\n value: {\n searchString,\n count: data?.count ?? 0,\n skip: skip + (filteredList?.length ?? 0),\n entries: convertSiteEntry(filteredList ?? []),\n },\n };\n }\n\n return null;\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce<PersonFinderDataMap>((acc, item) => {\n if (!item) return acc;\n\n return {\n ...acc,\n [item.key]: item.value,\n };\n }, {});\n};\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAQA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAEO,MAAMK,YAAY,GAAIC,GAAW,IAAK;EACzC,MAAMC,KAAgC,GAAG;IACrCC,MAAM,EAAE,UAAU;IAClBC,IAAI,EAAE,OAAO;IACbC,GAAG,EAAE;EACT,CAAC;EAED,OAAOH,KAAK,CAACD,GAAG,CAAC;AACrB,CAAC;AAACK,OAAA,CAAAN,YAAA,GAAAA,YAAA;AAEK,MAAMO,WAAW,GAAIC,KAA8B,IACtD,MAAM,IAAIA,KAAK,IAAI,EAAE,WAAW,IAAIA,KAAK,CAAC;AAACF,OAAA,CAAAC,WAAA,GAAAA,WAAA;AAOxC,MAAME,gBAAgB,GAAGA,CAC5BC,IAAyC,GAAG,CAAC,CAAC,EAC9CC,IAA+B,GAAG,EAAE,EACpCC,OAAgC,GAAG,CAAC,CAAC,KACC;EACtC,MAAMC,YAAY,GAAIL,KAAuB,IAAuB;IAChE,IAAIM,eAAe,GAAGN,KAAK,CAACO,OAAO;IAEnC,MAAM;MAAEC;IAAiB,CAAC,GAAGJ,OAAO;IAEpC,IAAIK,KAAK,CAACC,OAAO,CAACF,gBAAgB,CAAC,IAAIA,gBAAgB,CAACG,MAAM,GAAG,CAAC,EAAE;MAChEL,eAAe,GAAGA,eAAe,CAACM,MAAM,CAAEC,CAAC,IAAK,CAACL,gBAAgB,CAACM,QAAQ,CAACD,CAAC,CAACE,EAAE,CAAC,CAAC;IACrF;IAEA,MAAMC,aAAa,GAAGhB,KAAK,CAACO,OAAO,CAACI,MAAM,GAAGL,eAAe,CAACK,MAAM;IAEnE,OAAO;MACH,GAAGX,KAAK;MACRO,OAAO,EAAED,eAAe;MACxBW,KAAK,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEnB,KAAK,CAACiB,KAAK,GAAGD,aAAa;IAClD,CAAC;EACL,CAAC;EAED,MAAMI,YAAY,GAAGjB,IAAI,CAACQ,MAAM,GAAG,CAAC,GAAGR,IAAI,GAAGkB,MAAM,CAAClB,IAAI,CAACD,IAAI,CAAC;EAE/D,OAAOkB,YAAY,CAACE,MAAM,CAAC,CAACC,GAAG,EAAE9B,GAAG,KAAK;IACrC,MAAM+B,QAAQ,GAAGtB,IAAI,CAACT,GAAG,CAAC,IAAI;MAAEgC,YAAY,EAAE,EAAE;MAAER,KAAK,EAAE,CAAC;MAAES,IAAI,EAAE,CAAC;MAAEnB,OAAO,EAAE;IAAG,CAAC;IAElF,MAAMoB,aAAa,GAAGtB,YAAY,CAACmB,QAAQ,CAAC;IAE5C,IAAIpB,OAAO,CAACwB,iBAAiB,IAAInC,GAAG,KAAKoC,qCAAuB,CAACC,MAAM,EAAE;MACrE,MAAMC,IAAI,GAAG,IAAAC,kBAAO,EAAC,CAAC;MAEtB,IAAI,QAAOD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,QAAQ,MAAK,QAAQ,EAAE;QACpC;QACA,MAAMC,YAAyB,GAAG;UAC9BC,WAAW,EAAE,CAAC;UACdC,SAAS,EAAEL,IAAI,CAACK,SAAS,IAAI,EAAE;UAC/BrB,EAAE,EAAEgB,IAAI,CAACE,QAAQ;UACjBI,UAAU,EAAE,KAAK;UACjBC,QAAQ,EAAEP,IAAI,CAACO,QAAQ,IAAI,EAAE;UAC7BC,IAAI,EAAEV,qCAAuB,CAACC;QAClC,CAAC;QAED,MAAMU,QAAQ,GAAG,CAACN,YAAY,CAACE,SAAS,EAAEF,YAAY,CAACI,QAAQ,CAAC,CAC3D1B,MAAM,CAAC6B,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC,CACTC,IAAI,CAAC,CAAC;QAEX,IACInB,QAAQ,CAACC,YAAY,CAACd,MAAM,GAAG,CAAC,IAChC6B,QAAQ,CAACI,WAAW,CAAC,CAAC,CAAC9B,QAAQ,CAACU,QAAQ,CAACC,YAAY,CAACmB,WAAW,CAAC,CAAC,CAAC,EACtE;UACEjB,aAAa,CAACpB,OAAO,GAAG,CAAC2B,YAAY,EAAE,GAAGP,aAAa,CAACpB,OAAO,CAAC;UAChEoB,aAAa,CAACV,KAAK,IAAI,CAAC,CAAC,CAAC;QAC9B;MACJ;IACJ;IAEA,OAAO;MAAE,GAAGM,GAAG;MAAE,CAAC9B,GAAG,GAAGkC;IAAc,CAAC;EAC3C,CAAC,EAAE,CAAC,CAAC,CAAC;AACV,CAAC;AAAC7B,OAAA,CAAAG,gBAAA,GAAAA,gBAAA;AAEK,MAAM4C,qBAAqB,GAAIC,GAAW,IAAKA,GAAG,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGF,GAAG,CAACG,KAAK,CAAC,CAAC,CAAC;AAACnD,OAAA,CAAA+C,qBAAA,GAAAA,qBAAA;AAE1F,MAAMK,eAAe,GAAGA,CAC3BhD,IAAkD,EAClDiD,UAAkB;EAAA,IAAAC,gBAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA;EAAA,OAChB;IACFtC,KAAK,EAAE,CAAAf,IAAI,aAAJA,IAAI,gBAAAkD,gBAAA,GAAJlD,IAAI,CAAGiD,UAAU,CAAC,cAAAC,gBAAA,uBAAlBA,gBAAA,CAAoBnC,KAAK,KAAI,CAAC;IACrCS,IAAI,EAAE,CAAAxB,IAAI,aAAJA,IAAI,gBAAAmD,iBAAA,GAAJnD,IAAI,CAAGiD,UAAU,CAAC,cAAAE,iBAAA,uBAAlBA,iBAAA,CAAoB3B,IAAI,KAAI,CAAC;IACnCD,YAAY,EAAE,CAAAvB,IAAI,aAAJA,IAAI,gBAAAoD,iBAAA,GAAJpD,IAAI,CAAGiD,UAAU,CAAC,cAAAG,iBAAA,uBAAlBA,iBAAA,CAAoB7B,YAAY,KAAI,EAAE;IACpDlB,OAAO,EAAE,CAAAL,IAAI,aAAJA,IAAI,gBAAAqD,iBAAA,GAAJrD,IAAI,CAAGiD,UAAU,CAAC,cAAAI,iBAAA,uBAAlBA,iBAAA,CAAoBhD,OAAO,KAAI;EAC5C,CAAC;AAAA,CAAC;AAACT,OAAA,CAAAoD,eAAA,GAAAA,eAAA;AAQI,MAAMM,QAAQ,GAAG,MAAAA,CAAO;EAC3BC,OAAO;EACPhC,YAAY;EACZb;AACa,CAAC,KAAmC;EACjD,MAAM8C,QAAQ,GAAG9C,MAAM,CAAC+C,GAAG,CAAC,MAAOR,UAAU,IAAK;IAC9C,MAAMzB,IAAI,GAAG+B,OAAO,CAACN,UAAU,CAAC,IAAI,CAAC;IAErC,IAAIA,UAAU,KAAKtB,qCAAuB,CAACC,MAAM,EAAE;MAAA,IAAA8B,UAAA;MAC/C,IAAInC,YAAY,CAACd,MAAM,IAAI,CAAC,EAAE;QAC1B,OAAO;UACHlB,GAAG,EAAEoC,qCAAuB,CAACC,MAAM;UACnC+B,KAAK,EAAE;YACHpC,YAAY;YACZR,KAAK,EAAE,CAAC;YACRS,IAAI,EAAE,CAAC;YACPnB,OAAO,EAAE;UACb;QACJ,CAAC;MACL;MAEA,MAAML,IAAI,GAAG,MAAM,IAAA4D,eAAU,EAAC;QAAEC,MAAM,EAAEtC,YAAY;QAAEC;MAAK,CAAC,CAAC;MAE7D,OAAO;QACHjC,GAAG,EAAEoC,qCAAuB,CAACC,MAAM;QACnC+B,KAAK,EAAE;UACHpC,YAAY;UACZR,KAAK,EAAE,CAAAf,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEe,KAAK,KAAI,CAAC;UACvBS,IAAI,EAAEA,IAAI,IAAI,CAAAxB,IAAI,aAAJA,IAAI,gBAAA0D,UAAA,GAAJ1D,IAAI,CAAE8D,IAAI,cAAAJ,UAAA,uBAAVA,UAAA,CAAYjD,MAAM,KAAI,CAAC,CAAC;UACtCJ,OAAO,EAAE,IAAA0D,2BAAkB,EAAC,CAAA/D,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE8D,IAAI,KAAI,EAAE;QAChD;MACJ,CAAC;IACL;IAEA,IAAIb,UAAU,KAAKtB,qCAAuB,CAACqC,IAAI,EAAE;MAC7C,IAAIzC,YAAY,CAACd,MAAM,IAAI,CAAC,EAAE;QAC1B,OAAO;UACHlB,GAAG,EAAEoC,qCAAuB,CAACqC,IAAI;UACjCL,KAAK,EAAE;YACHpC,YAAY;YACZR,KAAK,EAAE,CAAC;YACRS,IAAI,EAAE,CAAC;YACPnB,OAAO,EAAE;UACb;QACJ,CAAC;MACL;MAEA,MAAML,IAAI,GAAG,MAAM,IAAAiE,cAAQ,EAAC;QAAEJ,MAAM,EAAEtC,YAAY;QAAEC;MAAK,CAAC,CAAC;MAE3D,MAAM0C,YAAY,GAAGlE,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE8D,IAAI,CAACpD,MAAM,CAAC,CAAC;QAAEyD;MAAO,CAAC,KAAKA,MAAM,KAAK,IAAI,CAAC;MAEvE,OAAO;QACH5E,GAAG,EAAEoC,qCAAuB,CAACqC,IAAI;QACjCL,KAAK,EAAE;UACHpC,YAAY;UACZR,KAAK,EAAE,CAAAf,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEe,KAAK,KAAI,CAAC;UACvBS,IAAI,EAAEA,IAAI,IAAI,CAAA0C,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEzD,MAAM,KAAI,CAAC,CAAC;UACxCJ,OAAO,EAAE,IAAA+D,yBAAgB,EAACF,YAAY,IAAI,EAAE;QAChD;MACJ,CAAC;IACL;IAEA,OAAO,IAAI;EACf,CAAC,CAAC;EAEF,MAAMG,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAACf,QAAQ,CAAC;EAE3C,OAAOa,OAAO,CAACjD,MAAM,CAAsB,CAACC,GAAG,EAAEmD,IAAI,KAAK;IACtD,IAAI,CAACA,IAAI,EAAE,OAAOnD,GAAG;IAErB,OAAO;MACH,GAAGA,GAAG;MACN,CAACmD,IAAI,CAACjF,GAAG,GAAGiF,IAAI,CAACb;IACrB,CAAC;EACL,CAAC,EAAE,CAAC,CAAC,CAAC;AACV,CAAC;AAAC/D,OAAA,CAAA0D,QAAA,GAAAA,QAAA","ignoreList":[]}
|
|
@@ -231,7 +231,7 @@ const PersonFinderProvider = ({
|
|
|
231
231
|
const searchedUsers = [];
|
|
232
232
|
const entriesToSearch = entries ?? uacUsers;
|
|
233
233
|
entriesToSearch?.forEach(entry => {
|
|
234
|
-
if (entry.firstName
|
|
234
|
+
if (entry.firstName?.toLowerCase().includes(search.toLowerCase()) || entry.lastName?.toLowerCase().includes(search.toLowerCase()) || [entry.firstName, entry.lastName].filter(Boolean).join(' ').toLowerCase().trim().includes(search.toLowerCase().trim()) || entry.id.toLowerCase().includes(search.toLowerCase())) {
|
|
235
235
|
searchedUsers.push(entry);
|
|
236
236
|
}
|
|
237
237
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonFinderProvider.js","names":["React","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","throttle","LoadingState","PersonFinderFilterTypes","Priority","getFriends","postFriends","deleteFriends","filterDataByKeys","loadData","getUACGroups","getUsersByGroups","THROTTLE_INTERVAL","PersonFinderContext","data","undefined","updateData","friends","addFriend","removeFriend","activeFilter","updateActiveFilter","search","updateSearch","loadMore","loadingState","updateLoadingState","tags","setTags","displayName","usePersonFinder","PersonFinderProvider","children","friendsPriority","filterTypes","defaultEntries","excludedEntryIds","shouldShowOwnUser","uacFilter","entries","setData","setFriends","uacUsers","setUacUsers","setActiveFilter","setSearch","map","id","name","text","setLoadingState","PERSON","None","SITE","dataRef","filter","key","newData","prevState","appendData","oldEntries","state","prev","value","Pending","current","Error","searchString","skipMap","skip","then","result","finally","Success","personId","firstName","lastName","verificationState","isVerified","commonSites","type","wasSuccessful","includes","latestArgsRef","latestHandledRequestRef","throttledRequest","args","requestTimestamp","Date","now","forEach","Object","keyString","HIGH","friendIds","Set","f","serverFriendEntries","entry","has","serverFriendIds","missingFriends","toLowerCase","otherEntries","length","leading","trailing","searchData","tmpData","uacEntries","filteredEntries","count","searchLocal","searchedUsers","entriesToSearch","trim","push","active","UAC","cancel","users","uac","person","providerValue","createElement","Provider"],"sources":["../../../src/components/PersonFinderProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport throttle from 'lodash.throttle';\nimport {\n DefaultEntry,\n LoadingState,\n LoadingStateMap,\n PersonEntry,\n PersonFinderData,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n ThrottledFunction,\n UACEntry,\n UACFilter,\n} from '../types/personFinder';\nimport { getFriends } from '../api/friends/get';\nimport { postFriends } from '../api/friends/post';\nimport { deleteFriends } from '../api/friends/delete';\nimport { filterDataByKeys, loadData } from '../utils/personFinder';\nimport { Tag } from '@chayns-components/core/lib/types/types/tagInput';\nimport { getUACGroups, getUsersByGroups } from '../utils/uac';\n\nconst THROTTLE_INTERVAL = 500;\n\ninterface IPersonFinderContext {\n // Data\n data?: { [key: string]: PersonFinderData };\n updateData?: (key: PersonFinderFilterTypes, personFinderData: PersonFinderData) => void;\n\n // Tags\n tags?: Tag[];\n setTags?: Dispatch<SetStateAction<Tag[]>>;\n\n // Friends\n friends?: PersonEntry[];\n addFriend?: (personId: string) => void;\n removeFriend?: (personId: string) => void;\n\n // Filter\n activeFilter?: PersonFinderFilterTypes[];\n updateActiveFilter?: (filter: PersonFinderFilterTypes[]) => void;\n\n // Search\n search?: string;\n updateSearch?: (value: string) => void;\n\n // Loading\n loadMore?: (key: PersonFinderFilterTypes) => void;\n loadingState?: LoadingStateMap;\n updateLoadingState?: (key: PersonFinderFilterTypes, state: LoadingState) => void;\n}\n\nexport const PersonFinderContext = createContext<IPersonFinderContext>({\n data: undefined,\n updateData: undefined,\n friends: undefined,\n addFriend: undefined,\n removeFriend: undefined,\n activeFilter: undefined,\n updateActiveFilter: undefined,\n search: undefined,\n updateSearch: undefined,\n loadMore: undefined,\n loadingState: undefined,\n updateLoadingState: undefined,\n tags: undefined,\n setTags: undefined,\n});\n\nPersonFinderContext.displayName = 'PersonFinderContext';\n\nexport const usePersonFinder = () => useContext(PersonFinderContext);\n\ntype PersonFinderProviderProps = {\n children: ReactNode;\n friendsPriority: Priority;\n filterTypes: PersonFinderFilterTypes[];\n defaultEntries?: DefaultEntry[];\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n uacFilter?: UACFilter[];\n entries?: PersonEntry[];\n};\n\nconst PersonFinderProvider: FC<PersonFinderProviderProps> = ({\n children,\n friendsPriority,\n filterTypes,\n defaultEntries,\n excludedEntryIds,\n shouldShowOwnUser = false,\n uacFilter,\n entries,\n}) => {\n const [data, setData] = useState<IPersonFinderContext['data']>();\n const [friends, setFriends] = useState<PersonEntry[]>();\n const [uacUsers, setUacUsers] = useState<PersonEntry[]>();\n const [activeFilter, setActiveFilter] = useState<IPersonFinderContext['activeFilter']>();\n const [search, setSearch] = useState('');\n const [tags, setTags] = useState<Tag[]>(\n defaultEntries?.map(({ id, name }) => ({ id, text: name })) ?? [],\n );\n const [loadingState, setLoadingState] = useState<LoadingStateMap>({\n [PersonFinderFilterTypes.PERSON]: LoadingState.None,\n [PersonFinderFilterTypes.SITE]: LoadingState.None,\n });\n\n const dataRef = useRef<IPersonFinderContext['data']>();\n\n const updateActiveFilter = useCallback((filter: IPersonFinderContext['activeFilter']) => {\n setActiveFilter(filter);\n }, []);\n\n const updateData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => ({ ...prevState, [key]: newData }));\n }, []);\n\n const appendData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => {\n const oldEntries = prevState && prevState[key]?.entries ? prevState[key]?.entries : [];\n\n return {\n ...prevState,\n [key]: {\n ...newData,\n entries: [...oldEntries, ...newData.entries],\n },\n };\n });\n }, []);\n\n const updateLoadingState = useCallback((key: PersonFinderFilterTypes, state: LoadingState) => {\n setLoadingState((prev) => ({\n ...prev,\n [key]: state,\n }));\n }, []);\n\n const updateSearch = useCallback((value: string) => {\n setSearch(value);\n }, []);\n\n const loadMore = useCallback(\n (key: PersonFinderFilterTypes) => {\n updateLoadingState(key, LoadingState.Pending);\n\n const current = data?.[key];\n\n if (!current) {\n updateLoadingState(key, LoadingState.Error);\n\n return;\n }\n\n void loadData({\n searchString: search ?? '',\n filter: [key],\n skipMap: { [key]: current.skip },\n })\n .then((result) => {\n const newData = result?.[key];\n\n if (newData) {\n appendData(key, newData);\n }\n })\n .finally(() => {\n updateLoadingState(key, LoadingState.Success);\n });\n },\n [updateLoadingState, data, search, appendData],\n );\n\n const addFriend = useCallback((personId: string) => {\n void postFriends(personId).then((result) => {\n if (result) {\n const { firstName, lastName, verificationState } = result;\n\n setFriends((prev) => [\n ...(prev ?? []),\n {\n id: personId,\n isVerified: verificationState === 1,\n commonSites: 0,\n firstName,\n lastName,\n type: PersonFinderFilterTypes.PERSON,\n },\n ]);\n }\n });\n }, []);\n\n const removeFriend = useCallback((personId: string) => {\n void deleteFriends(personId).then((wasSuccessful) => {\n if (wasSuccessful) {\n setFriends((prev) => prev?.filter(({ id }) => id !== personId));\n }\n });\n }, []);\n\n useEffect(() => {\n if (!filterTypes.includes(PersonFinderFilterTypes.PERSON)) {\n return;\n }\n\n void getFriends().then((result) => {\n if (result) {\n setFriends(\n result.map(({ personId, firstName, lastName, verificationState }) => ({\n lastName,\n firstName,\n id: personId,\n commonSites: 0,\n isVerified: verificationState === 1,\n type: PersonFinderFilterTypes.PERSON,\n })),\n );\n }\n });\n }, [filterTypes]);\n\n const latestArgsRef = useRef<{ search: string; filter: PersonFinderFilterTypes[] } | null>(\n null,\n );\n const latestHandledRequestRef = useRef<number>(0);\n\n const throttledRequest = useRef<ThrottledFunction<() => void>>(\n throttle(\n async () => {\n const args = latestArgsRef.current;\n\n if (!args) return;\n\n const { search: searchString, filter } = args;\n const requestTimestamp = Date.now();\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n });\n\n const result = await loadData({\n searchString,\n filter,\n skipMap: {},\n });\n\n if (requestTimestamp < latestHandledRequestRef.current) {\n return;\n }\n\n latestHandledRequestRef.current = requestTimestamp;\n\n if (!result) return;\n\n Object.entries(result).forEach(([keyString, value]) => {\n const key = keyString as PersonFinderFilterTypes;\n\n if (\n key === PersonFinderFilterTypes.PERSON &&\n friendsPriority === Priority.HIGH &&\n friends\n ) {\n const friendIds = new Set(friends.map((f) => f.id));\n const serverFriendEntries = value.entries.filter((entry) =>\n friendIds.has(entry.id as string),\n );\n const serverFriendIds = new Set(serverFriendEntries.map((f) => f.id));\n\n const missingFriends = friends\n .filter((f) => !serverFriendIds.has(f.id))\n .filter(\n (f) =>\n f.firstName\n ?.toLowerCase()\n .includes(searchString.toLowerCase()) ||\n f.lastName?.toLowerCase().includes(searchString.toLowerCase()),\n );\n\n const otherEntries = value.entries.filter(\n (entry) => !friendIds.has(entry.id as string),\n );\n\n updateData(key, {\n ...value,\n entries: [...serverFriendEntries, ...missingFriends, ...otherEntries],\n });\n } else {\n updateData(key, value);\n }\n\n updateLoadingState(\n key,\n value.entries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n });\n },\n THROTTLE_INTERVAL,\n { leading: false, trailing: true },\n ),\n ).current;\n\n useEffect(() => {\n dataRef.current = data;\n }, [data]);\n\n const searchData = useCallback(\n ({ filter }: { filter: PersonFinderFilterTypes[] }) => {\n const tmpData = dataRef.current;\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n\n if (tmpData && tmpData[key]) {\n // Add all Types that are not searched by a request\n const uacEntries = tmpData[key].entries as UACEntry[];\n\n const filteredEntries = uacEntries.filter(({ name }) =>\n name.toLowerCase().includes(search.toLowerCase()),\n );\n\n updateData(key, {\n entries: filteredEntries,\n searchString: search,\n count: filteredEntries.length,\n skip: filteredEntries.length,\n });\n\n updateLoadingState(\n key,\n filteredEntries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }\n });\n },\n [search, updateData, updateLoadingState],\n );\n\n const searchLocal = useCallback(() => {\n if (search.length < 3) {\n return;\n }\n\n updateLoadingState(PersonFinderFilterTypes.PERSON, LoadingState.Pending);\n\n const searchedUsers: PersonEntry[] = [];\n\n const entriesToSearch = entries ?? uacUsers;\n\n entriesToSearch?.forEach((entry) => {\n if (\n entry.firstName.toLowerCase().includes(search.toLowerCase()) ||\n entry.lastName.toLowerCase().includes(search.toLowerCase()) ||\n `${entry.firstName} ${entry.lastName}`\n .toLowerCase()\n .trim()\n .includes(search.toLowerCase().trim()) ||\n entry.id.toLowerCase().includes(search.toLowerCase())\n ) {\n searchedUsers.push(entry);\n }\n });\n\n updateData(PersonFinderFilterTypes.PERSON, {\n entries: searchedUsers,\n searchString: search,\n count: searchedUsers.length,\n skip: searchedUsers.length,\n });\n\n updateLoadingState(\n PersonFinderFilterTypes.PERSON,\n searchedUsers.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }, [entries, search, uacUsers, updateData, updateLoadingState]);\n\n useEffect(() => {\n if (!search) return;\n\n const active = activeFilter ?? filterTypes;\n\n if (uacFilter || entries) {\n searchLocal();\n } else if (active?.includes(PersonFinderFilterTypes.UAC)) {\n searchData({ filter: [PersonFinderFilterTypes.UAC] });\n } else {\n latestArgsRef.current = { search, filter: active };\n\n throttledRequest();\n }\n }, [\n filterTypes,\n search,\n activeFilter,\n friends,\n friendsPriority,\n updateData,\n updateLoadingState,\n throttledRequest,\n searchData,\n uacFilter,\n searchLocal,\n entries,\n ]);\n\n useEffect(\n () => () => {\n throttledRequest.cancel();\n },\n [throttledRequest],\n );\n\n // load initial data\n useEffect(() => {\n if (entries) {\n return;\n }\n\n if (uacFilter) {\n void getUsersByGroups(uacFilter).then((users) => {\n setUacUsers(users);\n });\n\n return;\n }\n\n if (filterTypes.includes(PersonFinderFilterTypes.UAC) && search === '') {\n void getUACGroups().then((result) => {\n setData({\n uac: {\n entries: result,\n searchString: '',\n skip: result.length,\n count: result.length,\n },\n });\n });\n }\n\n if (\n friendsPriority === Priority.HIGH &&\n filterTypes.includes(PersonFinderFilterTypes.PERSON) &&\n friends &&\n search === ''\n ) {\n setData({\n person: {\n entries: friends,\n searchString: '',\n skip: friends.length,\n count: friends.length,\n },\n });\n }\n }, [entries, filterTypes, friends, friendsPriority, search, uacFilter]);\n\n const providerValue = useMemo<IPersonFinderContext>(\n () => ({\n data: filterDataByKeys(data, activeFilter, {\n excludedEntryIds,\n shouldShowOwnUser: uacFilter ? false : shouldShowOwnUser,\n }),\n updateData,\n activeFilter,\n updateActiveFilter,\n friends,\n addFriend,\n removeFriend,\n search,\n updateSearch,\n loadMore,\n loadingState,\n updateLoadingState,\n setTags,\n tags,\n }),\n [\n activeFilter,\n addFriend,\n data,\n excludedEntryIds,\n friends,\n loadMore,\n loadingState,\n removeFriend,\n search,\n shouldShowOwnUser,\n tags,\n uacFilter,\n updateActiveFilter,\n updateData,\n updateLoadingState,\n updateSearch,\n ],\n );\n\n return (\n <PersonFinderContext.Provider value={providerValue}>\n {children}\n </PersonFinderContext.Provider>\n );\n};\n\nPersonFinderProvider.displayName = 'PersonFinderProvider';\n\nexport default PersonFinderProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PersonFinderProvider.js","names":["React","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","throttle","LoadingState","PersonFinderFilterTypes","Priority","getFriends","postFriends","deleteFriends","filterDataByKeys","loadData","getUACGroups","getUsersByGroups","THROTTLE_INTERVAL","PersonFinderContext","data","undefined","updateData","friends","addFriend","removeFriend","activeFilter","updateActiveFilter","search","updateSearch","loadMore","loadingState","updateLoadingState","tags","setTags","displayName","usePersonFinder","PersonFinderProvider","children","friendsPriority","filterTypes","defaultEntries","excludedEntryIds","shouldShowOwnUser","uacFilter","entries","setData","setFriends","uacUsers","setUacUsers","setActiveFilter","setSearch","map","id","name","text","setLoadingState","PERSON","None","SITE","dataRef","filter","key","newData","prevState","appendData","oldEntries","state","prev","value","Pending","current","Error","searchString","skipMap","skip","then","result","finally","Success","personId","firstName","lastName","verificationState","isVerified","commonSites","type","wasSuccessful","includes","latestArgsRef","latestHandledRequestRef","throttledRequest","args","requestTimestamp","Date","now","forEach","Object","keyString","HIGH","friendIds","Set","f","serverFriendEntries","entry","has","serverFriendIds","missingFriends","toLowerCase","otherEntries","length","leading","trailing","searchData","tmpData","uacEntries","filteredEntries","count","searchLocal","searchedUsers","entriesToSearch","Boolean","join","trim","push","active","UAC","cancel","users","uac","person","providerValue","createElement","Provider"],"sources":["../../../src/components/PersonFinderProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport throttle from 'lodash.throttle';\nimport {\n DefaultEntry,\n LoadingState,\n LoadingStateMap,\n PersonEntry,\n PersonFinderData,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n ThrottledFunction,\n UACEntry,\n UACFilter,\n} from '../types/personFinder';\nimport { getFriends } from '../api/friends/get';\nimport { postFriends } from '../api/friends/post';\nimport { deleteFriends } from '../api/friends/delete';\nimport { filterDataByKeys, loadData } from '../utils/personFinder';\nimport { Tag } from '@chayns-components/core/lib/types/types/tagInput';\nimport { getUACGroups, getUsersByGroups } from '../utils/uac';\n\nconst THROTTLE_INTERVAL = 500;\n\ninterface IPersonFinderContext {\n // Data\n data?: { [key: string]: PersonFinderData };\n updateData?: (key: PersonFinderFilterTypes, personFinderData: PersonFinderData) => void;\n\n // Tags\n tags?: Tag[];\n setTags?: Dispatch<SetStateAction<Tag[]>>;\n\n // Friends\n friends?: PersonEntry[];\n addFriend?: (personId: string) => void;\n removeFriend?: (personId: string) => void;\n\n // Filter\n activeFilter?: PersonFinderFilterTypes[];\n updateActiveFilter?: (filter: PersonFinderFilterTypes[]) => void;\n\n // Search\n search?: string;\n updateSearch?: (value: string) => void;\n\n // Loading\n loadMore?: (key: PersonFinderFilterTypes) => void;\n loadingState?: LoadingStateMap;\n updateLoadingState?: (key: PersonFinderFilterTypes, state: LoadingState) => void;\n}\n\nexport const PersonFinderContext = createContext<IPersonFinderContext>({\n data: undefined,\n updateData: undefined,\n friends: undefined,\n addFriend: undefined,\n removeFriend: undefined,\n activeFilter: undefined,\n updateActiveFilter: undefined,\n search: undefined,\n updateSearch: undefined,\n loadMore: undefined,\n loadingState: undefined,\n updateLoadingState: undefined,\n tags: undefined,\n setTags: undefined,\n});\n\nPersonFinderContext.displayName = 'PersonFinderContext';\n\nexport const usePersonFinder = () => useContext(PersonFinderContext);\n\ntype PersonFinderProviderProps = {\n children: ReactNode;\n friendsPriority: Priority;\n filterTypes: PersonFinderFilterTypes[];\n defaultEntries?: DefaultEntry[];\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n uacFilter?: UACFilter[];\n entries?: PersonEntry[];\n};\n\nconst PersonFinderProvider: FC<PersonFinderProviderProps> = ({\n children,\n friendsPriority,\n filterTypes,\n defaultEntries,\n excludedEntryIds,\n shouldShowOwnUser = false,\n uacFilter,\n entries,\n}) => {\n const [data, setData] = useState<IPersonFinderContext['data']>();\n const [friends, setFriends] = useState<PersonEntry[]>();\n const [uacUsers, setUacUsers] = useState<PersonEntry[]>();\n const [activeFilter, setActiveFilter] = useState<IPersonFinderContext['activeFilter']>();\n const [search, setSearch] = useState('');\n const [tags, setTags] = useState<Tag[]>(\n defaultEntries?.map(({ id, name }) => ({ id, text: name })) ?? [],\n );\n const [loadingState, setLoadingState] = useState<LoadingStateMap>({\n [PersonFinderFilterTypes.PERSON]: LoadingState.None,\n [PersonFinderFilterTypes.SITE]: LoadingState.None,\n });\n\n const dataRef = useRef<IPersonFinderContext['data']>();\n\n const updateActiveFilter = useCallback((filter: IPersonFinderContext['activeFilter']) => {\n setActiveFilter(filter);\n }, []);\n\n const updateData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => ({ ...prevState, [key]: newData }));\n }, []);\n\n const appendData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => {\n const oldEntries = prevState && prevState[key]?.entries ? prevState[key]?.entries : [];\n\n return {\n ...prevState,\n [key]: {\n ...newData,\n entries: [...oldEntries, ...newData.entries],\n },\n };\n });\n }, []);\n\n const updateLoadingState = useCallback((key: PersonFinderFilterTypes, state: LoadingState) => {\n setLoadingState((prev) => ({\n ...prev,\n [key]: state,\n }));\n }, []);\n\n const updateSearch = useCallback((value: string) => {\n setSearch(value);\n }, []);\n\n const loadMore = useCallback(\n (key: PersonFinderFilterTypes) => {\n updateLoadingState(key, LoadingState.Pending);\n\n const current = data?.[key];\n\n if (!current) {\n updateLoadingState(key, LoadingState.Error);\n\n return;\n }\n\n void loadData({\n searchString: search ?? '',\n filter: [key],\n skipMap: { [key]: current.skip },\n })\n .then((result) => {\n const newData = result?.[key];\n\n if (newData) {\n appendData(key, newData);\n }\n })\n .finally(() => {\n updateLoadingState(key, LoadingState.Success);\n });\n },\n [updateLoadingState, data, search, appendData],\n );\n\n const addFriend = useCallback((personId: string) => {\n void postFriends(personId).then((result) => {\n if (result) {\n const { firstName, lastName, verificationState } = result;\n\n setFriends((prev) => [\n ...(prev ?? []),\n {\n id: personId,\n isVerified: verificationState === 1,\n commonSites: 0,\n firstName,\n lastName,\n type: PersonFinderFilterTypes.PERSON,\n },\n ]);\n }\n });\n }, []);\n\n const removeFriend = useCallback((personId: string) => {\n void deleteFriends(personId).then((wasSuccessful) => {\n if (wasSuccessful) {\n setFriends((prev) => prev?.filter(({ id }) => id !== personId));\n }\n });\n }, []);\n\n useEffect(() => {\n if (!filterTypes.includes(PersonFinderFilterTypes.PERSON)) {\n return;\n }\n\n void getFriends().then((result) => {\n if (result) {\n setFriends(\n result.map(({ personId, firstName, lastName, verificationState }) => ({\n lastName,\n firstName,\n id: personId,\n commonSites: 0,\n isVerified: verificationState === 1,\n type: PersonFinderFilterTypes.PERSON,\n })),\n );\n }\n });\n }, [filterTypes]);\n\n const latestArgsRef = useRef<{ search: string; filter: PersonFinderFilterTypes[] } | null>(\n null,\n );\n const latestHandledRequestRef = useRef<number>(0);\n\n const throttledRequest = useRef<ThrottledFunction<() => void>>(\n throttle(\n async () => {\n const args = latestArgsRef.current;\n\n if (!args) return;\n\n const { search: searchString, filter } = args;\n const requestTimestamp = Date.now();\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n });\n\n const result = await loadData({\n searchString,\n filter,\n skipMap: {},\n });\n\n if (requestTimestamp < latestHandledRequestRef.current) {\n return;\n }\n\n latestHandledRequestRef.current = requestTimestamp;\n\n if (!result) return;\n\n Object.entries(result).forEach(([keyString, value]) => {\n const key = keyString as PersonFinderFilterTypes;\n\n if (\n key === PersonFinderFilterTypes.PERSON &&\n friendsPriority === Priority.HIGH &&\n friends\n ) {\n const friendIds = new Set(friends.map((f) => f.id));\n const serverFriendEntries = value.entries.filter((entry) =>\n friendIds.has(entry.id as string),\n );\n const serverFriendIds = new Set(serverFriendEntries.map((f) => f.id));\n\n const missingFriends = friends\n .filter((f) => !serverFriendIds.has(f.id))\n .filter(\n (f) =>\n f.firstName\n ?.toLowerCase()\n .includes(searchString.toLowerCase()) ||\n f.lastName?.toLowerCase().includes(searchString.toLowerCase()),\n );\n\n const otherEntries = value.entries.filter(\n (entry) => !friendIds.has(entry.id as string),\n );\n\n updateData(key, {\n ...value,\n entries: [...serverFriendEntries, ...missingFriends, ...otherEntries],\n });\n } else {\n updateData(key, value);\n }\n\n updateLoadingState(\n key,\n value.entries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n });\n },\n THROTTLE_INTERVAL,\n { leading: false, trailing: true },\n ),\n ).current;\n\n useEffect(() => {\n dataRef.current = data;\n }, [data]);\n\n const searchData = useCallback(\n ({ filter }: { filter: PersonFinderFilterTypes[] }) => {\n const tmpData = dataRef.current;\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n\n if (tmpData && tmpData[key]) {\n // Add all Types that are not searched by a request\n const uacEntries = tmpData[key].entries as UACEntry[];\n\n const filteredEntries = uacEntries.filter(({ name }) =>\n name.toLowerCase().includes(search.toLowerCase()),\n );\n\n updateData(key, {\n entries: filteredEntries,\n searchString: search,\n count: filteredEntries.length,\n skip: filteredEntries.length,\n });\n\n updateLoadingState(\n key,\n filteredEntries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }\n });\n },\n [search, updateData, updateLoadingState],\n );\n\n const searchLocal = useCallback(() => {\n if (search.length < 3) {\n return;\n }\n\n updateLoadingState(PersonFinderFilterTypes.PERSON, LoadingState.Pending);\n\n const searchedUsers: PersonEntry[] = [];\n\n const entriesToSearch = entries ?? uacUsers;\n\n entriesToSearch?.forEach((entry) => {\n if (\n entry.firstName?.toLowerCase().includes(search.toLowerCase()) ||\n entry.lastName?.toLowerCase().includes(search.toLowerCase()) ||\n [entry.firstName, entry.lastName]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n .trim()\n .includes(search.toLowerCase().trim()) ||\n entry.id.toLowerCase().includes(search.toLowerCase())\n ) {\n searchedUsers.push(entry);\n }\n });\n\n updateData(PersonFinderFilterTypes.PERSON, {\n entries: searchedUsers,\n searchString: search,\n count: searchedUsers.length,\n skip: searchedUsers.length,\n });\n\n updateLoadingState(\n PersonFinderFilterTypes.PERSON,\n searchedUsers.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }, [entries, search, uacUsers, updateData, updateLoadingState]);\n\n useEffect(() => {\n if (!search) return;\n\n const active = activeFilter ?? filterTypes;\n\n if (uacFilter || entries) {\n searchLocal();\n } else if (active?.includes(PersonFinderFilterTypes.UAC)) {\n searchData({ filter: [PersonFinderFilterTypes.UAC] });\n } else {\n latestArgsRef.current = { search, filter: active };\n\n throttledRequest();\n }\n }, [\n filterTypes,\n search,\n activeFilter,\n friends,\n friendsPriority,\n updateData,\n updateLoadingState,\n throttledRequest,\n searchData,\n uacFilter,\n searchLocal,\n entries,\n ]);\n\n useEffect(\n () => () => {\n throttledRequest.cancel();\n },\n [throttledRequest],\n );\n\n // load initial data\n useEffect(() => {\n if (entries) {\n return;\n }\n\n if (uacFilter) {\n void getUsersByGroups(uacFilter).then((users) => {\n setUacUsers(users);\n });\n\n return;\n }\n\n if (filterTypes.includes(PersonFinderFilterTypes.UAC) && search === '') {\n void getUACGroups().then((result) => {\n setData({\n uac: {\n entries: result,\n searchString: '',\n skip: result.length,\n count: result.length,\n },\n });\n });\n }\n\n if (\n friendsPriority === Priority.HIGH &&\n filterTypes.includes(PersonFinderFilterTypes.PERSON) &&\n friends &&\n search === ''\n ) {\n setData({\n person: {\n entries: friends,\n searchString: '',\n skip: friends.length,\n count: friends.length,\n },\n });\n }\n }, [entries, filterTypes, friends, friendsPriority, search, uacFilter]);\n\n const providerValue = useMemo<IPersonFinderContext>(\n () => ({\n data: filterDataByKeys(data, activeFilter, {\n excludedEntryIds,\n shouldShowOwnUser: uacFilter ? false : shouldShowOwnUser,\n }),\n updateData,\n activeFilter,\n updateActiveFilter,\n friends,\n addFriend,\n removeFriend,\n search,\n updateSearch,\n loadMore,\n loadingState,\n updateLoadingState,\n setTags,\n tags,\n }),\n [\n activeFilter,\n addFriend,\n data,\n excludedEntryIds,\n friends,\n loadMore,\n loadingState,\n removeFriend,\n search,\n shouldShowOwnUser,\n tags,\n uacFilter,\n updateActiveFilter,\n updateData,\n updateLoadingState,\n updateSearch,\n ],\n );\n\n return (\n <PersonFinderContext.Provider value={providerValue}>\n {children}\n </PersonFinderContext.Provider>\n );\n};\n\nPersonFinderProvider.displayName = 'PersonFinderProvider';\n\nexport default PersonFinderProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -49,7 +49,7 @@ export const filterDataByKeys = (data = {}, keys = [], options = {}) => {
|
|
|
49
49
|
lastName: user.lastName ?? '',
|
|
50
50
|
type: PersonFinderFilterTypes.PERSON
|
|
51
51
|
};
|
|
52
|
-
const fullName =
|
|
52
|
+
const fullName = [ownUserEntry.firstName, ownUserEntry.lastName].filter(Boolean).join(' ').trim();
|
|
53
53
|
if (original.searchString.length < 3 || fullName.toLowerCase().includes(original.searchString.toLowerCase())) {
|
|
54
54
|
filteredEntry.entries = [ownUserEntry, ...filteredEntry.entries];
|
|
55
55
|
filteredEntry.count += 1; // Increment count to account for the own user
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personFinder.js","names":["PersonFinderFilterTypes","getPersons","getSites","convertPersonEntry","convertSiteEntry","getUser","getGroupName","key","names","person","site","uac","isSiteEntry","entry","filterDataByKeys","data","keys","options","filterSingle","filteredEntries","entries","excludedEntryIds","Array","isArray","length","filter","e","includes","id","excludedCount","count","Math","max","relevantKeys","Object","reduce","acc","original","searchString","skip","filteredEntry","shouldShowOwnUser","PERSON","user","personId","ownUserEntry","commonSites","firstName","isVerified","lastName","type","fullName","trim","toLowerCase","capitalizeFirstLetter","str","charAt","toUpperCase","slice","destructureData","filterType","loadData","skipMap","promises","map","value","search","list","SITE","filteredList","siteId","results","Promise","all","item"],"sources":["../../../src/utils/personFinder.ts"],"sourcesContent":["import {\n PersonEntry,\n PersonFinderData,\n PersonFinderDataMap,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n SiteEntry,\n} from '../types/personFinder';\nimport { getPersons } from '../api/person/get';\nimport { getSites } from '../api/site/get';\nimport { convertPersonEntry, convertSiteEntry } from './convert';\nimport { getUser } from 'chayns-api';\n\nexport const getGroupName = (key: string) => {\n const names: { [key: string]: string } = {\n person: 'Personen',\n site: 'Sites',\n uac: 'UAC Gruppen',\n };\n\n return names[key];\n};\n\nexport const isSiteEntry = (entry: PersonEntry | SiteEntry): entry is SiteEntry =>\n 'name' in entry && !('firstName' in entry);\n\ninterface FilterDataByKeysOptions {\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n}\n\nexport const filterDataByKeys = (\n data: { [key: string]: PersonFinderData } = {},\n keys: PersonFinderFilterTypes[] = [],\n options: FilterDataByKeysOptions = {},\n): { [key: string]: PersonFinderData } => {\n const filterSingle = (entry: PersonFinderData): PersonFinderData => {\n let filteredEntries = entry.entries;\n\n const { excludedEntryIds } = options;\n\n if (Array.isArray(excludedEntryIds) && excludedEntryIds.length > 0) {\n filteredEntries = filteredEntries.filter((e) => !excludedEntryIds.includes(e.id));\n }\n\n const excludedCount = entry.entries.length - filteredEntries.length;\n\n return {\n ...entry,\n entries: filteredEntries,\n count: Math.max(0, entry.count - excludedCount),\n };\n };\n\n const relevantKeys = keys.length > 0 ? keys : Object.keys(data);\n\n return relevantKeys.reduce((acc, key) => {\n const original = data[key] ?? { searchString: '', count: 0, skip: 0, entries: [] };\n\n const filteredEntry = filterSingle(original);\n\n if (options.shouldShowOwnUser && key === PersonFinderFilterTypes.PERSON) {\n const user = getUser();\n\n if (typeof user?.personId === 'string') {\n // Ensure that the own user is always included in the person filter\n const ownUserEntry: PersonEntry = {\n commonSites: 0,\n firstName: user.firstName ?? '',\n id: user.personId,\n isVerified: false,\n lastName: user.lastName ?? '',\n type: PersonFinderFilterTypes.PERSON,\n };\n\n const fullName = `${ownUserEntry.firstName} ${ownUserEntry.lastName}`.trim();\n\n if (\n original.searchString.length < 3 ||\n fullName.toLowerCase().includes(original.searchString.toLowerCase())\n ) {\n filteredEntry.entries = [ownUserEntry, ...filteredEntry.entries];\n filteredEntry.count += 1; // Increment count to account for the own user\n }\n }\n }\n\n return { ...acc, [key]: filteredEntry };\n }, {});\n};\n\nexport const capitalizeFirstLetter = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const destructureData = (\n data: Record<string, PersonFinderData> | undefined,\n filterType: string,\n) => ({\n count: data?.[filterType]?.count ?? 0,\n skip: data?.[filterType]?.skip ?? 0,\n searchString: data?.[filterType]?.searchString ?? '',\n entries: data?.[filterType]?.entries ?? [],\n});\n\ninterface LoadDataOptions {\n searchString: string;\n filter: PersonFinderFilterTypes[];\n skipMap: Partial<Record<PersonFinderFilterTypes, number>>;\n}\n\nexport const loadData = async ({\n skipMap,\n searchString,\n filter,\n}: LoadDataOptions): Promise<PersonFinderDataMap> => {\n const promises = filter.map(async (filterType) => {\n const skip = skipMap[filterType] ?? 0;\n\n if (filterType === PersonFinderFilterTypes.PERSON) {\n if (searchString.length <= 2) {\n return {\n key: PersonFinderFilterTypes.PERSON,\n value: {\n searchString,\n count: 0,\n skip: 0,\n entries: [],\n },\n };\n }\n\n const data = await getPersons({ search: searchString, skip });\n\n return {\n key: PersonFinderFilterTypes.PERSON,\n value: {\n searchString,\n count: data?.count ?? 0,\n skip: skip + (data?.list?.length ?? 0),\n entries: convertPersonEntry(data?.list ?? []),\n },\n };\n }\n\n if (filterType === PersonFinderFilterTypes.SITE) {\n if (searchString.length <= 2) {\n return {\n key: PersonFinderFilterTypes.SITE,\n value: {\n searchString,\n count: 0,\n skip: 0,\n entries: [],\n },\n };\n }\n\n const data = await getSites({ search: searchString, skip });\n\n const filteredList = data?.list.filter(({ siteId }) => siteId !== null);\n\n return {\n key: PersonFinderFilterTypes.SITE,\n value: {\n searchString,\n count: data?.count ?? 0,\n skip: skip + (filteredList?.length ?? 0),\n entries: convertSiteEntry(filteredList ?? []),\n },\n };\n }\n\n return null;\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce<PersonFinderDataMap>((acc, item) => {\n if (!item) return acc;\n\n return {\n ...acc,\n [item.key]: item.value,\n };\n }, {});\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"personFinder.js","names":["PersonFinderFilterTypes","getPersons","getSites","convertPersonEntry","convertSiteEntry","getUser","getGroupName","key","names","person","site","uac","isSiteEntry","entry","filterDataByKeys","data","keys","options","filterSingle","filteredEntries","entries","excludedEntryIds","Array","isArray","length","filter","e","includes","id","excludedCount","count","Math","max","relevantKeys","Object","reduce","acc","original","searchString","skip","filteredEntry","shouldShowOwnUser","PERSON","user","personId","ownUserEntry","commonSites","firstName","isVerified","lastName","type","fullName","Boolean","join","trim","toLowerCase","capitalizeFirstLetter","str","charAt","toUpperCase","slice","destructureData","filterType","loadData","skipMap","promises","map","value","search","list","SITE","filteredList","siteId","results","Promise","all","item"],"sources":["../../../src/utils/personFinder.ts"],"sourcesContent":["import {\n PersonEntry,\n PersonFinderData,\n PersonFinderDataMap,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n SiteEntry,\n} from '../types/personFinder';\nimport { getPersons } from '../api/person/get';\nimport { getSites } from '../api/site/get';\nimport { convertPersonEntry, convertSiteEntry } from './convert';\nimport { getUser } from 'chayns-api';\n\nexport const getGroupName = (key: string) => {\n const names: { [key: string]: string } = {\n person: 'Personen',\n site: 'Sites',\n uac: 'UAC Gruppen',\n };\n\n return names[key];\n};\n\nexport const isSiteEntry = (entry: PersonEntry | SiteEntry): entry is SiteEntry =>\n 'name' in entry && !('firstName' in entry);\n\ninterface FilterDataByKeysOptions {\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n}\n\nexport const filterDataByKeys = (\n data: { [key: string]: PersonFinderData } = {},\n keys: PersonFinderFilterTypes[] = [],\n options: FilterDataByKeysOptions = {},\n): { [key: string]: PersonFinderData } => {\n const filterSingle = (entry: PersonFinderData): PersonFinderData => {\n let filteredEntries = entry.entries;\n\n const { excludedEntryIds } = options;\n\n if (Array.isArray(excludedEntryIds) && excludedEntryIds.length > 0) {\n filteredEntries = filteredEntries.filter((e) => !excludedEntryIds.includes(e.id));\n }\n\n const excludedCount = entry.entries.length - filteredEntries.length;\n\n return {\n ...entry,\n entries: filteredEntries,\n count: Math.max(0, entry.count - excludedCount),\n };\n };\n\n const relevantKeys = keys.length > 0 ? keys : Object.keys(data);\n\n return relevantKeys.reduce((acc, key) => {\n const original = data[key] ?? { searchString: '', count: 0, skip: 0, entries: [] };\n\n const filteredEntry = filterSingle(original);\n\n if (options.shouldShowOwnUser && key === PersonFinderFilterTypes.PERSON) {\n const user = getUser();\n\n if (typeof user?.personId === 'string') {\n // Ensure that the own user is always included in the person filter\n const ownUserEntry: PersonEntry = {\n commonSites: 0,\n firstName: user.firstName ?? '',\n id: user.personId,\n isVerified: false,\n lastName: user.lastName ?? '',\n type: PersonFinderFilterTypes.PERSON,\n };\n\n const fullName = [ownUserEntry.firstName, ownUserEntry.lastName]\n .filter(Boolean)\n .join(' ')\n .trim();\n\n if (\n original.searchString.length < 3 ||\n fullName.toLowerCase().includes(original.searchString.toLowerCase())\n ) {\n filteredEntry.entries = [ownUserEntry, ...filteredEntry.entries];\n filteredEntry.count += 1; // Increment count to account for the own user\n }\n }\n }\n\n return { ...acc, [key]: filteredEntry };\n }, {});\n};\n\nexport const capitalizeFirstLetter = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const destructureData = (\n data: Record<string, PersonFinderData> | undefined,\n filterType: string,\n) => ({\n count: data?.[filterType]?.count ?? 0,\n skip: data?.[filterType]?.skip ?? 0,\n searchString: data?.[filterType]?.searchString ?? '',\n entries: data?.[filterType]?.entries ?? [],\n});\n\ninterface LoadDataOptions {\n searchString: string;\n filter: PersonFinderFilterTypes[];\n skipMap: Partial<Record<PersonFinderFilterTypes, number>>;\n}\n\nexport const loadData = async ({\n skipMap,\n searchString,\n filter,\n}: LoadDataOptions): Promise<PersonFinderDataMap> => {\n const promises = filter.map(async (filterType) => {\n const skip = skipMap[filterType] ?? 0;\n\n if (filterType === PersonFinderFilterTypes.PERSON) {\n if (searchString.length <= 2) {\n return {\n key: PersonFinderFilterTypes.PERSON,\n value: {\n searchString,\n count: 0,\n skip: 0,\n entries: [],\n },\n };\n }\n\n const data = await getPersons({ search: searchString, skip });\n\n return {\n key: PersonFinderFilterTypes.PERSON,\n value: {\n searchString,\n count: data?.count ?? 0,\n skip: skip + (data?.list?.length ?? 0),\n entries: convertPersonEntry(data?.list ?? []),\n },\n };\n }\n\n if (filterType === PersonFinderFilterTypes.SITE) {\n if (searchString.length <= 2) {\n return {\n key: PersonFinderFilterTypes.SITE,\n value: {\n searchString,\n count: 0,\n skip: 0,\n entries: [],\n },\n };\n }\n\n const data = await getSites({ search: searchString, skip });\n\n const filteredList = data?.list.filter(({ siteId }) => siteId !== null);\n\n return {\n key: PersonFinderFilterTypes.SITE,\n value: {\n searchString,\n count: data?.count ?? 0,\n skip: skip + (filteredList?.length ?? 0),\n entries: convertSiteEntry(filteredList ?? []),\n },\n };\n }\n\n return null;\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce<PersonFinderDataMap>((acc, item) => {\n if (!item) return acc;\n\n return {\n ...acc,\n [item.key]: item.value,\n };\n }, {});\n};\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/person-finder",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.24",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"typescript": "^5.9.3"
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
|
-
"@chayns-components/core": "^5.0.
|
|
74
|
+
"@chayns-components/core": "^5.0.24",
|
|
75
75
|
"@chayns/uac-service": "~0.0.62",
|
|
76
76
|
"lodash.throttle": "^4.1.1",
|
|
77
77
|
"uuid": "^10.0.0"
|
|
@@ -86,5 +86,5 @@
|
|
|
86
86
|
"publishConfig": {
|
|
87
87
|
"access": "public"
|
|
88
88
|
},
|
|
89
|
-
"gitHead": "
|
|
89
|
+
"gitHead": "b9ab91825d63be8a824757ec2f50632d289276b9"
|
|
90
90
|
}
|