From d39dd17ef2084118edd7f6cd03bfe86223b6013f Mon Sep 17 00:00:00 2001 From: Matt Fiddaman Date: Sun, 19 Jan 2025 15:08:47 +0000 Subject: [PATCH 1/3] fix infinite loop when schedule moved before weekend --- packages/loot-core/src/client/data-hooks/transactions.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/loot-core/src/client/data-hooks/transactions.ts b/packages/loot-core/src/client/data-hooks/transactions.ts index 5c3bc32e3a1..fa18cedbaaf 100644 --- a/packages/loot-core/src/client/data-hooks/transactions.ts +++ b/packages/loot-core/src/client/data-hooks/transactions.ts @@ -176,12 +176,19 @@ export function usePreviewTransactions(): UsePreviewTransactionsResult { const dates: string[] = []; let day = d.startOfDay(parseDate(schedule.next_date)); + let i = 0; if (isRecurring) { - while (day <= upcomingPeriodEnd) { + while (day <= upcomingPeriodEnd && i < 400) { + i++; const nextDate = getNextDate(dateConditions, day); if (parseDate(nextDate) > upcomingPeriodEnd) break; + if (dates.includes(nextDate)) { + day = parseDate(addDays(day, 1)); + continue; + } + dates.push(nextDate); day = parseDate(addDays(nextDate, 1)); } From aa94d8d9b3581757b54f4f1306d1c844904c5773 Mon Sep 17 00:00:00 2001 From: Matt Fiddaman Date: Sun, 19 Jan 2025 15:10:01 +0000 Subject: [PATCH 2/3] note --- upcoming-release-notes/4196.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 upcoming-release-notes/4196.md diff --git a/upcoming-release-notes/4196.md b/upcoming-release-notes/4196.md new file mode 100644 index 00000000000..2ce58800b8f --- /dev/null +++ b/upcoming-release-notes/4196.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [matt-fidd] +--- + +Fix app hanging when schedule moved before weekend From d99f4d1db5816f1652f04aee34cf9fdf2901b578 Mon Sep 17 00:00:00 2001 From: Matt Fiddaman Date: Sun, 19 Jan 2025 15:40:37 +0000 Subject: [PATCH 3/3] remove testing --- packages/loot-core/src/client/data-hooks/transactions.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/loot-core/src/client/data-hooks/transactions.ts b/packages/loot-core/src/client/data-hooks/transactions.ts index fa18cedbaaf..8c76510a45f 100644 --- a/packages/loot-core/src/client/data-hooks/transactions.ts +++ b/packages/loot-core/src/client/data-hooks/transactions.ts @@ -176,10 +176,8 @@ export function usePreviewTransactions(): UsePreviewTransactionsResult { const dates: string[] = []; let day = d.startOfDay(parseDate(schedule.next_date)); - let i = 0; if (isRecurring) { - while (day <= upcomingPeriodEnd && i < 400) { - i++; + while (day <= upcomingPeriodEnd) { const nextDate = getNextDate(dateConditions, day); if (parseDate(nextDate) > upcomingPeriodEnd) break;