All files / brand-store/utils getPolicies.ts

7.69% Statements 1/13
0% Branches 0/6
0% Functions 0/3
7.69% Lines 1/13

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 42 43 44 45 46 47 48 49 50 51 52                        11x                                                                              
import { Dispatch, SetStateAction } from "react";
import { SetterOrUpdater } from "recoil";
import type { Model as ModelType, Policy } from "../types/shared";
 
type Options = {
  models: ModelType[];
  id: string | undefined;
  setPolicies: SetterOrUpdater<Policy[]>;
  signal?: AbortSignal;
  setEnableTableActions?: Dispatch<SetStateAction<boolean>>;
};
 
const getPolicies = async ({
  models,
  id,
  setPolicies,
  signal,
  setEnableTableActions,
}: Options) => {
  const data = await Promise.all(
    models.map((model) => {
      return fetch(`/admin/store/${id}/models/${model.name}/policies`, {
        signal,
      });
    }),
  );
 
  const allPolicies = await Promise.all(
    data.map(async (res) => {
      if (!res.ok) {
        return [];
      }
 
      const policies = await res.json();
 
      if (!policies.success) {
        return [];
      }
 
      return policies.data;
    }),
  );
 
  setPolicies(allPolicies.flat());
 
  if (setEnableTableActions) {
    setEnableTableActions(true);
  }
};
 
export default getPolicies;