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