All files / libs/payout-calculation/statements/views/list/src/lib StatementsListView.context.ts

0% Statements 0/40
0% Branches 0/1
0% Functions 0/1
0% Lines 0/40

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 41                                                                                 
import { createContext, useContext, type Dispatch, type SetStateAction } from 'react';

import {
  type CalculationType,
  type PaymentsOfPeriod,
  type UserStatementListFilters,
  type UserStatementsFacets,
} from '@amalia/core/types';
import { assert } from '@amalia/ext/typescript';
import { type MultiPayoutCategory, type useCalculation } from '@amalia/payout-calculation/statements/components';
import { type Period, type PeriodFrequencyEnum } from '@amalia/payout-definition/periods/types';

export type StatementListViewContextInterface = ReturnType<typeof useCalculation> & {
  statementListFilters: UserStatementListFilters;
  setStatementListFilters: Dispatch<SetStateAction<UserStatementListFilters>>;
  searchValue: string;
  setSearchValue: Dispatch<SetStateAction<string>>;

  validUserStatementsCount?: number;
  totalUserStatementsCount?: number;
  statementsListFacets?: UserStatementsFacets;
  hasFiltersApplied: boolean;

  paymentCategory: MultiPayoutCategory;
  setPaymentCategory: Dispatch<SetStateAction<MultiPayoutCategory>>;
  paymentsOfPeriod?: PaymentsOfPeriod;
  isPaymentsLoading: boolean;

  period?: Period;
  calculationType: CalculationType;
  frequency: PeriodFrequencyEnum;
};

export const StatementListViewContext = createContext<StatementListViewContextInterface | null>(null);

export const useStatementListViewContext = () => {
  const context = useContext(StatementListViewContext);
  assert(context, 'useStatementListViewContext must be used within a StatementListViewContext');
  return context;
};