From 6253aaa015a835b20244f3b45c633560637fadae Mon Sep 17 00:00:00 2001 From: Jed Fox <git@jedfox.com> Date: Thu, 25 May 2023 16:50:55 -0400 Subject: [PATCH] Use the useLiveQuery hook in a couple more places (#1061) --- .../src/components/NotesButton.tsx | 2 +- .../src/client/data-hooks/accounts.tsx | 22 ++++--------------- .../src/client/data-hooks/payees.tsx | 22 ++++--------------- packages/loot-core/src/client/query-hooks.tsx | 2 +- upcoming-release-notes/1061.md | 6 +++++ 5 files changed, 16 insertions(+), 38 deletions(-) create mode 100644 upcoming-release-notes/1061.md diff --git a/packages/desktop-client/src/components/NotesButton.tsx b/packages/desktop-client/src/components/NotesButton.tsx index b1956532b..5939540b0 100644 --- a/packages/desktop-client/src/components/NotesButton.tsx +++ b/packages/desktop-client/src/components/NotesButton.tsx @@ -82,7 +82,7 @@ export default function NotesButton({ }: NotesButtonProps) { let [hover, setHover] = useState(false); let tooltip = useTooltip(); - let { data } = useLiveQuery( + let data = useLiveQuery( useMemo(() => q('notes').filter({ id }).select('*'), [id]), ); let note = data && data.length > 0 ? data[0].note : null; diff --git a/packages/loot-core/src/client/data-hooks/accounts.tsx b/packages/loot-core/src/client/data-hooks/accounts.tsx index d282d7315..945450b18 100644 --- a/packages/loot-core/src/client/data-hooks/accounts.tsx +++ b/packages/loot-core/src/client/data-hooks/accounts.tsx @@ -1,25 +1,11 @@ -import React, { createContext, useEffect, useState, useContext } from 'react'; +import React, { createContext, useContext } from 'react'; -import q, { liveQuery } from 'loot-core/src/client/query-helpers'; +import q from 'loot-core/src/client/query-helpers'; +import { useLiveQuery } from 'loot-core/src/client/query-hooks'; import { getAccountsById } from 'loot-core/src/client/reducers/queries'; export function useAccounts() { - let [data, setData] = useState(null); - - useEffect(() => { - let query = liveQuery(q('accounts').select('*'), async accounts => { - if (query) { - setData(accounts); - } - }); - - return () => { - query.unsubscribe(); - query = null; - }; - }, []); - - return data; + return useLiveQuery(q('accounts').select('*')); } let AccountsContext = createContext(null); diff --git a/packages/loot-core/src/client/data-hooks/payees.tsx b/packages/loot-core/src/client/data-hooks/payees.tsx index da2feb476..25cfc73ec 100644 --- a/packages/loot-core/src/client/data-hooks/payees.tsx +++ b/packages/loot-core/src/client/data-hooks/payees.tsx @@ -1,25 +1,11 @@ -import React, { createContext, useEffect, useState, useContext } from 'react'; +import React, { createContext, useContext } from 'react'; -import q, { liveQuery } from 'loot-core/src/client/query-helpers'; +import q from 'loot-core/src/client/query-helpers'; +import { useLiveQuery } from 'loot-core/src/client/query-hooks'; import { getPayeesById } from 'loot-core/src/client/reducers/queries'; export function usePayees() { - let [data, setData] = useState([]); - - useEffect(() => { - let query = liveQuery(q('payees').select('*'), async payees => { - if (query) { - setData(payees); - } - }); - - return () => { - query.unsubscribe(); - query = null; - }; - }, []); - - return data; + return useLiveQuery(q('payees').select('*')); } let PayeesContext = createContext(null); diff --git a/packages/loot-core/src/client/query-hooks.tsx b/packages/loot-core/src/client/query-hooks.tsx index 252514087..fbde12e7f 100644 --- a/packages/loot-core/src/client/query-hooks.tsx +++ b/packages/loot-core/src/client/query-hooks.tsx @@ -90,5 +90,5 @@ export function useLiveQuery(query, opts?) { }; }, [query]); - return { data }; + return data; } diff --git a/upcoming-release-notes/1061.md b/upcoming-release-notes/1061.md new file mode 100644 index 000000000..bf4079fa6 --- /dev/null +++ b/upcoming-release-notes/1061.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [j-f1] +--- + +Use the `useLiveQuery` hook in a couple more places -- GitLab