Skip to content
Snippets Groups Projects
usePreviewTransactions.ts 1.02 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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')
      );
    }