Commit 1efc9808 by G

handle filtering of transactions by references

parent b6aedca7
import { type Transaction, getTransactionsHistory } from "@/utils/requests/transactions"; import { type Transaction, getTransactionsHistory } from "@/utils/requests/transactions";
import { LOG } from "@logger"; import { LOG } from "@logger";
import { useQuery } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query";
import { useMemo } from "react"; import { useCallback, useMemo, useState } from "react";
const log = LOG.extend("useTransactionsHistory"); const log = LOG.extend("useTransactionsHistory");
const useTransactionsHistory = () => { const useTransactionsHistory = () => {
const [referenceFilter, setReferenceFilter] = useState<string>("");
log.verbose("useTransactionsHistory"); log.verbose("useTransactionsHistory");
const { data, isLoading, error, refetch } = useQuery({ const { data, isLoading, error, refetch } = useQuery({
...@@ -13,13 +15,24 @@ const useTransactionsHistory = () => { ...@@ -13,13 +15,24 @@ const useTransactionsHistory = () => {
queryFn: getTransactionsHistory, queryFn: getTransactionsHistory,
}); });
const transactionsHistory: Transaction[] = useMemo(() => data || [], [data]); const filterByReference = useCallback(
(reference: string) => {
if (!data?.length) return [];
return data.filter((transaction) => transaction.reference.includes(reference));
},
[data],
);
const transactionsHistory: Transaction[] = useMemo(() => {
if (!data) return [];
return filterByReference(referenceFilter);
}, [data, filterByReference, referenceFilter]);
return { return {
transactionsHistory, transactionsHistory,
isLoading, isLoading,
error, error,
refetch, refetch,
setReferenceFilter,
}; };
}; };
......
...@@ -11,20 +11,19 @@ const log = LOG.extend("TransactionHistoryScreen"); ...@@ -11,20 +11,19 @@ const log = LOG.extend("TransactionHistoryScreen");
const TransactionHistoryScreen = () => { const TransactionHistoryScreen = () => {
log.verbose("TransactionHistoryScreen"); log.verbose("TransactionHistoryScreen");
const { transactionsHistory: data, isLoading, error, refetch } = useTransactionsHistory(); const {
transactionsHistory: data,
// const { data, isLoading, error, refetch } = useQuery({ isLoading,
// queryKey: ["transactionsHistory"], error,
// queryFn: getTransactionsHistory, refetch,
// }); setReferenceFilter,
} = useTransactionsHistory();
console.info("Data", data);
return ( return (
<BackgroundWithBeasyIconAndWhiteContentArea> <BackgroundWithBeasyIconAndWhiteContentArea>
<> <>
<Box px={"m"} mt={"m"}> <Box px={"m"} mt={"m"}>
<Input label={"Reference"} /> <Input label={"Reference"} onChangeText={setReferenceFilter} />
</Box> </Box>
<ScrollView <ScrollView
refreshControl={<RefreshControl refreshing={isLoading} onRefresh={refetch} />} refreshControl={<RefreshControl refreshing={isLoading} onRefresh={refetch} />}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment