import { Recipe, RecipeData } from "@spendcook/api"; import { createAction } from "typesafe-actions"; import { normalize, NormalizedSchema } from "normalizr"; import { Entities, recipeSchema, recipesSchema } from "../entities"; export const fetchRecipesRequest = createAction("recipes/fetch/pending"); export const fetchRecipesFulfill = createAction( "recipes/fetch/fulfilled", (action) => (recipes: Recipe[]) => { const { result, entities, }: NormalizedSchema = normalize(recipes, recipesSchema); return action(result, { entities }); } ); export const postRecipeRequest = createAction( "recipes/post/pending", (action) => (payload: RecipeData) => action(payload) ); export const postRecipeFulfill = createAction( "recipes/post/fulfilled", (action) => (recipe: Recipe) => { const { result, entities, }: NormalizedSchema = normalize(recipe, recipeSchema); return action(result, { entities }); } );