feat(mobile): MIKRO POLISH-3 optimistisk favoritmarkering med rollback
This commit is contained in:
@@ -88,14 +88,14 @@ export default function RecipeScreen() {
|
||||
api(`/v1/recipes/${id}/favorite`, { method: isFavorite ? "DELETE" : "POST" }),
|
||||
onMutate: async (isFavorite: boolean) => {
|
||||
await queryClient.cancelQueries({ queryKey: ["recipe", id] });
|
||||
const previous = queryClient.getQueryData<RecipeDetail>(["recipe", id]);
|
||||
const prev = queryClient.getQueryData<RecipeDetail>(["recipe", id]);
|
||||
queryClient.setQueryData<RecipeDetail>(["recipe", id], (old) =>
|
||||
old ? { ...old, isFavorite: !isFavorite } : old,
|
||||
);
|
||||
return { previous };
|
||||
return { prev };
|
||||
},
|
||||
onError: (err, _isFavorite, context) => {
|
||||
if (context?.previous) queryClient.setQueryData(["recipe", id], context.previous);
|
||||
onError: (err, _vars, ctx) => {
|
||||
if (ctx?.prev) queryClient.setQueryData(["recipe", id], ctx.prev);
|
||||
Alert.alert(t("common.oops"), err instanceof Error ? err.message : t("common.error"));
|
||||
},
|
||||
onSettled: () => void queryClient.invalidateQueries({ queryKey: ["recipe", id] }),
|
||||
|
||||
Reference in New Issue
Block a user