Skip to content

Commit 13f89bd

Browse files
chore: add flag to sort initial data
1 parent 6f5842f commit 13f89bd

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

src/hooks/useSearchResults.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,18 @@ import usePrevious from './usePrevious';
88
* It utilizes `useTransition` to allow the searchQuery to change rapidly, while more expensive renders that occur using
99
* the result of the filtering and sorting are de-prioritized, allowing them to happen in the background.
1010
*/
11-
function useSearchResults<TValue extends ListItem>(data: TValue[], filterData: (datum: TValue, searchInput: string) => boolean, sortData: (data: TValue[]) => TValue[] = (d) => d) {
11+
function useSearchResults<TValue extends ListItem>(
12+
data: TValue[],
13+
filterData: (datum: TValue, searchInput: string) => boolean,
14+
sortData: (data: TValue[]) => TValue[] = (d) => d,
15+
/**
16+
* Whether to sort data immediately on mount to prevent briefly displaying unsorted data,
17+
* since sorting is handled inside startTransition.
18+
*/
19+
shouldSortInitialData?: boolean,
20+
) {
1221
const [inputValue, setInputValue] = useState('');
13-
const [result, setResult] = useState(data);
22+
const [result, setResult] = useState(() => (shouldSortInitialData ? sortData(data) : data));
1423
const prevData = usePrevious(data);
1524
const [, startTransition] = useTransition();
1625
useEffect(() => {

src/pages/workspace/companyCards/WorkspaceCompanyCardsList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function WorkspaceCompanyCardsList({cardsList, policyID, handleAssignCard, isDis
5252

5353
const filterCard = useCallback((card: Card, searchInput: string) => filterCardsByPersonalDetails(card, searchInput, personalDetails), [personalDetails]);
5454
const sortCards = useCallback((cards: Card[]) => sortCardsByCardholderName(cards, personalDetails), [personalDetails]);
55-
const [inputValue, setInputValue, filteredSortedCards] = useSearchResults(allCards, filterCard, sortCards);
55+
const [inputValue, setInputValue, filteredSortedCards] = useSearchResults(allCards, filterCard, sortCards, true);
5656

5757
const renderItem = useCallback(
5858
({item, index}: ListRenderItemInfo<Card>) => {

0 commit comments

Comments
 (0)