-
Joel Jeremy Marquez authored
* Mobile category transactions * Release notes * Fix typo * Fix typecheck error * Handle null location state * VRT * Fix account search * Update test * Search placeholder * vrt * Add month to page title * Cleanup * Fix AccountName component * Replace ButtonLink with Link * Fix typecheck * Code review update
Joel Jeremy Marquez authored* Mobile category transactions * Release notes * Fix typo * Fix typecheck error * Handle null location state * VRT * Fix account search * Update test * Search placeholder * vrt * Add month to page title * Cleanup * Fix AccountName component * Replace ButtonLink with Link * Fix typecheck * Code review update
usePreviewTransactions.ts 1.02 KiB
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')
);
}