fix: show error message for update reward program
This commit is contained in:
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder="Select a reward" />
|
||||
|
||||
@@ -21,8 +21,8 @@ export const RewardProgramsTable = () => {
|
||||
<UpdateRewardProgram
|
||||
open={open}
|
||||
setOpen={setOpen}
|
||||
selectedReward={selectedRewardProgram}
|
||||
setSelectedReward={setSelectedRewardProgram}
|
||||
selectedRewardProgram={selectedRewardProgram}
|
||||
setSelectedRewardProgram={setSelectedRewardProgram}
|
||||
/>
|
||||
{/* <UpdateRewardProgram component here /> */}
|
||||
|
||||
|
||||
@@ -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 (
|
||||
<Dialog open={open} onOpenChange={setOpen}>
|
||||
<DialogContent className="w-[500px]">
|
||||
<DialogTitle>Update Reward Programs</DialogTitle>
|
||||
<WarningBox>
|
||||
Existing customers with this coupon will not be affected
|
||||
</WarningBox>
|
||||
<DialogTitle>Update Reward Program</DialogTitle>
|
||||
{/* <WarningBox>
|
||||
Existing customers with this reward program will not be affected
|
||||
</WarningBox> */}
|
||||
|
||||
{selectedReward && (
|
||||
{selectedRewardProgram && (
|
||||
<RewardProgramConfig
|
||||
rewardProgram={selectedReward}
|
||||
setRewardProgram={setSelectedReward}
|
||||
rewardProgram={selectedRewardProgram}
|
||||
setRewardProgram={setSelectedRewardProgram}
|
||||
isUpdate={true}
|
||||
/>
|
||||
)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user