From 7b1b2cd278231d49f228928830d77b8a47a00383 Mon Sep 17 00:00:00 2001 From: John Yeo Date: Mon, 22 Sep 2025 13:12:39 +0100 Subject: [PATCH] fix: show error message for update reward program --- .../api/rewards/rewardProgramRouter.ts | 7 ++-- .../products/RewardProgramService.tsx | 13 +------- .../reward-programs/RewardProgramConfig.tsx | 3 ++ .../reward-programs/RewardProgramsTable.tsx | 4 +-- .../reward-programs/UpdateRewardPrograms.tsx | 32 +++++++++---------- 5 files changed, 26 insertions(+), 33 deletions(-) diff --git a/server/src/internal/api/rewards/rewardProgramRouter.ts b/server/src/internal/api/rewards/rewardProgramRouter.ts index 8243c473f..2edbb5ea9 100644 --- a/server/src/internal/api/rewards/rewardProgramRouter.ts +++ b/server/src/internal/api/rewards/rewardProgramRouter.ts @@ -136,7 +136,7 @@ rewardProgramRouter.put("/:id", (req, res) => env, }); - console.log("Existing program:", existingProgram); + // console.log("Existing program:", existingProgram); if (!existingProgram) { throw new RecaseError({ @@ -155,7 +155,7 @@ rewardProgramRouter.put("/:id", (req, res) => env, }); - console.log("Updating program to:", rewardProgram); + // console.log("Updating program to:", rewardProgram); if ( rewardProgram.when == RewardTriggerEvent.Checkout && @@ -163,7 +163,8 @@ rewardProgramRouter.put("/:id", (req, res) => rewardProgram.product_ids!.length == 0) ) { throw new RecaseError({ - message: "If redeem on checkout, must specify at least one product", + message: + "When `Redeem On` is set to `Checkout`, must specify at least one product", code: ErrCode.InvalidRequest, statusCode: 400, }); diff --git a/vite/src/services/products/RewardProgramService.tsx b/vite/src/services/products/RewardProgramService.tsx index baa83690f..c06a56364 100644 --- a/vite/src/services/products/RewardProgramService.tsx +++ b/vite/src/services/products/RewardProgramService.tsx @@ -32,17 +32,6 @@ export class RewardProgramService { internalId: string; data: RewardProgram; }) { - try { - const res = await axiosInstance.put( - `/v1/reward_programs/${internalId}`, - data - ); - return res.data; - } catch (err: any) { - // maybe rethrow as your RecaseError or wrap - throw new Error( - err.response?.data?.message || "Failed to update reward program" - ); - } + await axiosInstance.put(`/v1/reward_programs/${internalId}`, data); } } diff --git a/vite/src/views/products/rewards/reward-programs/RewardProgramConfig.tsx b/vite/src/views/products/rewards/reward-programs/RewardProgramConfig.tsx index 340b5954f..25704edcf 100644 --- a/vite/src/views/products/rewards/reward-programs/RewardProgramConfig.tsx +++ b/vite/src/views/products/rewards/reward-programs/RewardProgramConfig.tsx @@ -38,9 +38,11 @@ import { useProductsQuery } from "@/hooks/queries/useProductsQuery"; export const RewardProgramConfig = ({ rewardProgram, setRewardProgram, + isUpdate, }: { rewardProgram: RewardProgram; setRewardProgram: (rewardProgram: RewardProgram) => void; + isUpdate?: boolean; }) => { const { rewards } = useRewardsQuery(); @@ -63,6 +65,7 @@ export const RewardProgramConfig = ({ onValueChange={(value) => setRewardProgram({ ...rewardProgram, internal_reward_id: value }) } + // disabled={isUpdate} > diff --git a/vite/src/views/products/rewards/reward-programs/RewardProgramsTable.tsx b/vite/src/views/products/rewards/reward-programs/RewardProgramsTable.tsx index f22b8d145..1bab00956 100644 --- a/vite/src/views/products/rewards/reward-programs/RewardProgramsTable.tsx +++ b/vite/src/views/products/rewards/reward-programs/RewardProgramsTable.tsx @@ -21,8 +21,8 @@ export const RewardProgramsTable = () => { {/* */} diff --git a/vite/src/views/products/rewards/reward-programs/UpdateRewardPrograms.tsx b/vite/src/views/products/rewards/reward-programs/UpdateRewardPrograms.tsx index 00b4f4ee1..9108fd48a 100644 --- a/vite/src/views/products/rewards/reward-programs/UpdateRewardPrograms.tsx +++ b/vite/src/views/products/rewards/reward-programs/UpdateRewardPrograms.tsx @@ -8,9 +8,8 @@ import { import { Button } from "@/components/ui/button"; import { useAxiosInstance } from "@/services/useAxiosInstance"; import { toast } from "sonner"; -import { Reward } from "@autumn/shared"; +import { RewardProgram } from "@autumn/shared"; import { useEnv } from "@/utils/envUtils"; -import { RewardService } from "@/services/products/RewardService"; import { getBackendErr } from "@/utils/genUtils"; import { WarningBox } from "@/components/general/modal-components/WarningBox"; import { useRewardsQuery } from "@/hooks/queries/useRewardsQuery"; @@ -20,13 +19,13 @@ import { RewardProgramService } from "@/services/products/RewardProgramService"; function UpdateRewardProgram({ open, setOpen, - selectedReward, - setSelectedReward, + selectedRewardProgram, + setSelectedRewardProgram, }: { open: boolean; setOpen: (open: boolean) => void; - selectedReward: Reward | null; - setSelectedReward: (reward: Reward) => void; + selectedRewardProgram: RewardProgram | null; + setSelectedRewardProgram: (reward: RewardProgram) => void; }) { const [updateLoading, setUpdateLoading] = useState(false); const { refetch } = useRewardsQuery(); @@ -39,14 +38,14 @@ function UpdateRewardProgram({ try { await RewardProgramService.updateReward({ axiosInstance, - internalId: selectedReward!.internal_id, - data: selectedReward!, + internalId: selectedRewardProgram!.internal_id, + data: selectedRewardProgram!, }); toast.success("Reward updated successfully"); await refetch(); setOpen(false); } catch (error) { - toast.error(getBackendErr(error, "Failed to update coupon")); + toast.error(getBackendErr(error, "Failed to update reward program")); } setUpdateLoading(false); }; @@ -54,15 +53,16 @@ function UpdateRewardProgram({ return ( - Update Reward Programs - - Existing customers with this coupon will not be affected - + Update Reward Program + {/* + Existing customers with this reward program will not be affected + */} - {selectedReward && ( + {selectedRewardProgram && ( )}