Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { useMemo } from 'react';
import {
type ScheduleStatuses,
useCachedSchedules,
} from 'loot-core/client/data-hooks/schedules';
import { type ScheduleEntity } from 'loot-core/types/models';
export function usePreviewTransactions() {
const scheduleData = useCachedSchedules();
return useMemo(() => {
if (!scheduleData) {
return [];
}
const schedules =
scheduleData.schedules.filter(s =>
isForPreview(s, scheduleData.statuses),
) || [];
return schedules.map(schedule => ({
id: 'preview/' + schedule.id,
payee: schedule._payee,
account: schedule._account,
amount: schedule._amount,
date: schedule.next_date,
notes: scheduleData.statuses.get(schedule.id),
schedule: schedule.id,
}));
}, [scheduleData]);
}
function isForPreview(schedule: ScheduleEntity, statuses: ScheduleStatuses) {
const status = statuses.get(schedule.id);
return (
!schedule.completed &&
(status === 'due' || status === 'upcoming' || status === 'missed')
);
}