fix(LOY-39): refetch rewards when redeemed

update expiration date text

possible to redeem rewards with coupon code
This commit is contained in:
Christian Andolf
2024-12-18 17:43:19 +01:00
parent c701c067b4
commit 633d259ce0
13 changed files with 181 additions and 117 deletions
@@ -1,9 +1,11 @@
"use client"
import { createContext, useCallback, useContext, useState } from "react"
import { createContext, useCallback, useContext } from "react"
import { trpc } from "@/lib/trpc/client"
import useLang from "@/hooks/useLang"
import type { RedeemFlowContext } from "@/types/components/myPages/myPage/accountPage"
import type { RewardWithRedeem } from "@/server/routers/contentstack/reward/output"
@@ -14,18 +16,22 @@ export const RedeemContext = createContext<RedeemFlowContext>({
export default function useRedeemFlow(reward: RewardWithRedeem) {
const { redeemStep, setRedeemStep } = useContext(RedeemContext)
const lang = useLang()
const update = trpc.contentstack.rewards.redeem.useMutation<{
rewards: RewardWithRedeem[]
}>()
const utils = trpc.useUtils()
const onRedeem = useCallback(() => {
if (reward?.id) {
update.mutate(
{ rewardId: reward.id },
{ rewardId: reward.id, couponCode: reward.couponCode },
{
onSuccess() {
setRedeemStep("redeemed")
utils.contentstack.rewards.current.invalidate({ lang })
},
onError(error) {
console.error("Failed to redeem", error)
@@ -33,7 +39,7 @@ export default function useRedeemFlow(reward: RewardWithRedeem) {
}
)
}
}, [reward, update, setRedeemStep])
}, [reward, update, setRedeemStep, utils.contentstack.rewards, lang])
return {
onRedeem,