feat(mobile): MIKRO POLISH-3 optimistisk favoritmarkering med rollback

This commit is contained in:
Sven (AAMOS AI)
2026-08-17 21:38:48 +07:00
parent 653f94de86
commit 6fe1955c9f
+4 -4
View File
@@ -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] }),