diff --git a/packages/desktop-client/src/components/schedules/DiscoverSchedules.js b/packages/desktop-client/src/components/schedules/DiscoverSchedules.js index c03c810651..4978e64bce 100644 --- a/packages/desktop-client/src/components/schedules/DiscoverSchedules.js +++ b/packages/desktop-client/src/components/schedules/DiscoverSchedules.js @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState } from 'react'; import { useHistory } from 'react-router-dom'; import q, { runQuery } from 'loot-core/src/client/query-helpers'; @@ -10,6 +10,7 @@ import useSelected, { useSelectedItems, SelectedProvider, } from '../../hooks/useSelected'; +import useSendPlatformRequest from '../../hooks/useSendPlatformRequest'; import { colors } from '../../style'; import { View, Stack, ButtonWithLoading, P } from '../common'; import { Page, usePageType } from '../Page'; @@ -73,7 +74,7 @@ function DiscoverSchedulesTable({ schedules, loading }) { 0} onSelect={e => dispatchSelected({ type: 'select-all', event: e })} @@ -109,18 +110,12 @@ function DiscoverSchedulesTable({ schedules, loading }) { export default function DiscoverSchedules() { let pageType = usePageType(); let history = useHistory(); - let [schedules, setSchedules] = useState(); + let { data: schedules = [], isLoading } = + useSendPlatformRequest('schedule/discover'); let [creating, setCreating] = useState(false); let selectedInst = useSelected('discover-schedules', schedules, []); - useEffect(() => { - async function run() { - setSchedules(await send('schedule/discover')); - } - run(); - }, []); - async function onCreate() { let selected = schedules.filter(s => selectedInst.items.has(s.id)); setCreating(true); @@ -165,10 +160,7 @@ export default function DiscoverSchedules() {

- + ( + name: K, + args?: Parameters[0], + options?: { catchErrors?: boolean }, +) { + const [data, setData] = useState(null); + const [isLoading, setIsLoading] = useState(null); + + useEffect(() => { + async function run() { + setIsLoading(true); + setData(await send(name, args, options)); + setIsLoading(false); + } + + run(); + }, [name, args, options]); + + return { + data, + isLoading, + }; +} diff --git a/upcoming-release-notes/1136.md b/upcoming-release-notes/1136.md new file mode 100644 index 0000000000..7fb79894ef --- /dev/null +++ b/upcoming-release-notes/1136.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [MatissJanis] +--- + +Fix "find schedules" page crashing if interction is made before loading data finishes