diff --git a/packages/desktop-client/src/components/ManageRules.tsx b/packages/desktop-client/src/components/ManageRules.tsx index 765f176d0d..e6f2e33a8d 100644 --- a/packages/desktop-client/src/components/ManageRules.tsx +++ b/packages/desktop-client/src/components/ManageRules.tsx @@ -21,7 +21,11 @@ import { getNormalisedString } from 'loot-core/shared/normalisation'; import { q } from 'loot-core/shared/query'; import { mapField, friendlyOp } from 'loot-core/shared/rules'; import { describeSchedule } from 'loot-core/shared/schedules'; -import { type RuleEntity, type NewRuleEntity } from 'loot-core/types/models'; +import { + type RuleEntity, + type NewRuleEntity, + type ScheduleEntity, +} from 'loot-core/types/models'; import { InfiniteScrollWrapper } from './common/InfiniteScrollWrapper'; import { Link } from './common/Link'; @@ -45,12 +49,7 @@ export type FilterData = { payees?: Array<{ id: string; name: string }>; categories?: Array<{ id: string; name: string }>; accounts?: Array<{ id: string; name: string }>; - schedules?: readonly { - id: string; - rule: string; - _payee: string; - completed: boolean; - }[]; + schedules?: readonly ScheduleEntity[]; }; export function mapValue( @@ -98,10 +97,12 @@ export function ruleToString(rule: RuleEntity, data: FilterData) { const schedule = data.schedules?.find(s => s.id === String(action.value)); return [ friendlyOp(action.op), - describeSchedule( - schedule, - data.payees?.find(p => p.id === schedule?._payee), - ), + schedule + ? describeSchedule( + schedule, + data.payees?.find(p => p.id === schedule._payee), + ) + : '-', ]; } else if (action.op === 'prepend-notes' || action.op === 'append-notes') { const noteValue = String(action.value || ''); diff --git a/packages/loot-core/src/shared/schedules.ts b/packages/loot-core/src/shared/schedules.ts index c524d981c5..0862f7194b 100644 --- a/packages/loot-core/src/shared/schedules.ts +++ b/packages/loot-core/src/shared/schedules.ts @@ -4,6 +4,8 @@ import * as d from 'date-fns'; import { Locale } from 'date-fns'; import { t } from 'i18next'; +import { type PayeeEntity, type ScheduleEntity } from 'loot-core/types/models'; + import { Condition } from '../server/rules'; import * as monthUtils from './months'; @@ -394,7 +396,10 @@ export function getScheduledAmount( return inverse ? -Math.round(avg) : Math.round(avg); } -export function describeSchedule(schedule, payee) { +export function describeSchedule( + schedule: ScheduleEntity, + payee?: PayeeEntity, +) { if (payee) { return `${payee.name} (${schedule.next_date})`; } else { diff --git a/upcoming-release-notes/5600.md b/upcoming-release-notes/5600.md new file mode 100644 index 0000000000..710c0c908e --- /dev/null +++ b/upcoming-release-notes/5600.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [MatissJanis] +--- + +Add missing conditional for describing schedules in rules page