All files / libs/tenants/users/profile/components/src/lib/table/cells/status useStatusOptions.ts

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

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                                                     
import { useMemo } from 'react';
import { useIntl } from 'react-intl';

import { type SelectOption } from '@allshares/studio-design-system';
import { UserStatus } from '@amalia/tenants/users/types';

import { UserStatusLabels } from '../../../status/status.messages';

const statusOrder = [UserStatus.INACTIVE, UserStatus.INVITED, UserStatus.ACTIVE, UserStatus.DEACTIVATED];

export type StatusOption = SelectOption<UserStatus>;

export const useStatusOptions = (): StatusOption[] => {
  const { formatMessage } = useIntl();

  return useMemo(
    () =>
      Object.values(UserStatus)
        .toSorted((a, b) => statusOrder.indexOf(a) - statusOrder.indexOf(b))
        .map((status) => ({
          value: status,
          label: formatMessage(UserStatusLabels[status]),
        })),
    [formatMessage],
  );
};