Skip to content

Commit

Permalink
♻️ (reports) improve useReports data fetching hook to return loading …
Browse files Browse the repository at this point in the history
…state (#3198)
  • Loading branch information
MatissJanis authored Aug 6, 2024
1 parent d2bbe6a commit a2e434a
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export function ReportAutocomplete({
embedded,
...props
}: ReportAutocompleteProps) {
const reports = useReports() || [];
const { data: reports } = useReports();

return (
<Autocomplete
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { NetWorthCard } from './reports/NetWorthCard';
import { SpendingCard } from './reports/SpendingCard';

export function Overview() {
const customReports = useReports();
const { data: customReports } = useReports();
const { isNarrowWidth } = useResponsive();

const location = useLocation();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export function SaveReport({
savedStatus,
onReportChange,
}: SaveReportProps) {
const listReports = useReports();
const { data: listReports } = useReports();
const triggerRef = useRef(null);
const [deleteMenuOpen, setDeleteMenuOpen] = useState(false);
const [nameMenuOpen, setNameMenuOpen] = useState(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export function GenericInput({
onChange,
}) {
const { grouped: categoryGroups } = useCategories();
const savedReports = useReports();
const { data: savedReports } = useReports();
const saved = useSelector(state => state.queries.saved);
const dateFormat = useDateFormat() || 'MM/dd/yyyy';

Expand Down
15 changes: 11 additions & 4 deletions packages/loot-core/src/client/data-hooks/reports.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@ function toJS(rows: CustomReportData[]) {
return reports;
}

export function useReports(): CustomReportEntity[] {
const reports: CustomReportEntity[] = toJS(
useLiveQuery(() => q('custom_reports').select('*'), []) || [],
export function useReports() {
const queryData = useLiveQuery<CustomReportData[]>(
() => q('custom_reports').select('*'),
[],
);

// Sort reports by alphabetical order
Expand All @@ -51,5 +52,11 @@ export function useReports(): CustomReportEntity[] {
);
}

return useMemo(() => sort(reports), [reports]);
return useMemo(
() => ({
isLoading: queryData === null,
data: sort(toJS(queryData || [])),
}),
[queryData],
);
}
6 changes: 6 additions & 0 deletions upcoming-release-notes/3198.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
category: Maintenance
authors: [MatissJanis]
---

Reports: improve `useReports` data fetching hook to return the loading state.

0 comments on commit a2e434a

Please sign in to comment.