fix: show error message for update reward program
This commit is contained in:
@@ -136,7 +136,7 @@ rewardProgramRouter.put("/:id", (req, res) =>
|
|||||||
env,
|
env,
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("Existing program:", existingProgram);
|
// console.log("Existing program:", existingProgram);
|
||||||
|
|
||||||
if (!existingProgram) {
|
if (!existingProgram) {
|
||||||
throw new RecaseError({
|
throw new RecaseError({
|
||||||
@@ -155,7 +155,7 @@ rewardProgramRouter.put("/:id", (req, res) =>
|
|||||||
env,
|
env,
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("Updating program to:", rewardProgram);
|
// console.log("Updating program to:", rewardProgram);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
rewardProgram.when == RewardTriggerEvent.Checkout &&
|
rewardProgram.when == RewardTriggerEvent.Checkout &&
|
||||||
@@ -163,7 +163,8 @@ rewardProgramRouter.put("/:id", (req, res) =>
|
|||||||
rewardProgram.product_ids!.length == 0)
|
rewardProgram.product_ids!.length == 0)
|
||||||
) {
|
) {
|
||||||
throw new RecaseError({
|
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,
|
code: ErrCode.InvalidRequest,
|
||||||
statusCode: 400,
|
statusCode: 400,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -32,17 +32,6 @@ export class RewardProgramService {
|
|||||||
internalId: string;
|
internalId: string;
|
||||||
data: RewardProgram;
|
data: RewardProgram;
|
||||||
}) {
|
}) {
|
||||||
try {
|
await axiosInstance.put(`/v1/reward_programs/${internalId}`, data);
|
||||||
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"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,9 +38,11 @@ import { useProductsQuery } from "@/hooks/queries/useProductsQuery";
|
|||||||
export const RewardProgramConfig = ({
|
export const RewardProgramConfig = ({
|
||||||
rewardProgram,
|
rewardProgram,
|
||||||
setRewardProgram,
|
setRewardProgram,
|
||||||
|
isUpdate,
|
||||||
}: {
|
}: {
|
||||||
rewardProgram: RewardProgram;
|
rewardProgram: RewardProgram;
|
||||||
setRewardProgram: (rewardProgram: RewardProgram) => void;
|
setRewardProgram: (rewardProgram: RewardProgram) => void;
|
||||||
|
isUpdate?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const { rewards } = useRewardsQuery();
|
const { rewards } = useRewardsQuery();
|
||||||
|
|
||||||
@@ -63,6 +65,7 @@ export const RewardProgramConfig = ({
|
|||||||
onValueChange={(value) =>
|
onValueChange={(value) =>
|
||||||
setRewardProgram({ ...rewardProgram, internal_reward_id: value })
|
setRewardProgram({ ...rewardProgram, internal_reward_id: value })
|
||||||
}
|
}
|
||||||
|
// disabled={isUpdate}
|
||||||
>
|
>
|
||||||
<SelectTrigger>
|
<SelectTrigger>
|
||||||
<SelectValue placeholder="Select a reward" />
|
<SelectValue placeholder="Select a reward" />
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ export const RewardProgramsTable = () => {
|
|||||||
<UpdateRewardProgram
|
<UpdateRewardProgram
|
||||||
open={open}
|
open={open}
|
||||||
setOpen={setOpen}
|
setOpen={setOpen}
|
||||||
selectedReward={selectedRewardProgram}
|
selectedRewardProgram={selectedRewardProgram}
|
||||||
setSelectedReward={setSelectedRewardProgram}
|
setSelectedRewardProgram={setSelectedRewardProgram}
|
||||||
/>
|
/>
|
||||||
{/* <UpdateRewardProgram component here /> */}
|
{/* <UpdateRewardProgram component here /> */}
|
||||||
|
|
||||||
|
|||||||
@@ -8,9 +8,8 @@ import {
|
|||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { useAxiosInstance } from "@/services/useAxiosInstance";
|
import { useAxiosInstance } from "@/services/useAxiosInstance";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { Reward } from "@autumn/shared";
|
import { RewardProgram } from "@autumn/shared";
|
||||||
import { useEnv } from "@/utils/envUtils";
|
import { useEnv } from "@/utils/envUtils";
|
||||||
import { RewardService } from "@/services/products/RewardService";
|
|
||||||
import { getBackendErr } from "@/utils/genUtils";
|
import { getBackendErr } from "@/utils/genUtils";
|
||||||
import { WarningBox } from "@/components/general/modal-components/WarningBox";
|
import { WarningBox } from "@/components/general/modal-components/WarningBox";
|
||||||
import { useRewardsQuery } from "@/hooks/queries/useRewardsQuery";
|
import { useRewardsQuery } from "@/hooks/queries/useRewardsQuery";
|
||||||
@@ -20,13 +19,13 @@ import { RewardProgramService } from "@/services/products/RewardProgramService";
|
|||||||
function UpdateRewardProgram({
|
function UpdateRewardProgram({
|
||||||
open,
|
open,
|
||||||
setOpen,
|
setOpen,
|
||||||
selectedReward,
|
selectedRewardProgram,
|
||||||
setSelectedReward,
|
setSelectedRewardProgram,
|
||||||
}: {
|
}: {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
setOpen: (open: boolean) => void;
|
setOpen: (open: boolean) => void;
|
||||||
selectedReward: Reward | null;
|
selectedRewardProgram: RewardProgram | null;
|
||||||
setSelectedReward: (reward: Reward) => void;
|
setSelectedRewardProgram: (reward: RewardProgram) => void;
|
||||||
}) {
|
}) {
|
||||||
const [updateLoading, setUpdateLoading] = useState(false);
|
const [updateLoading, setUpdateLoading] = useState(false);
|
||||||
const { refetch } = useRewardsQuery();
|
const { refetch } = useRewardsQuery();
|
||||||
@@ -39,14 +38,14 @@ function UpdateRewardProgram({
|
|||||||
try {
|
try {
|
||||||
await RewardProgramService.updateReward({
|
await RewardProgramService.updateReward({
|
||||||
axiosInstance,
|
axiosInstance,
|
||||||
internalId: selectedReward!.internal_id,
|
internalId: selectedRewardProgram!.internal_id,
|
||||||
data: selectedReward!,
|
data: selectedRewardProgram!,
|
||||||
});
|
});
|
||||||
toast.success("Reward updated successfully");
|
toast.success("Reward updated successfully");
|
||||||
await refetch();
|
await refetch();
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
toast.error(getBackendErr(error, "Failed to update coupon"));
|
toast.error(getBackendErr(error, "Failed to update reward program"));
|
||||||
}
|
}
|
||||||
setUpdateLoading(false);
|
setUpdateLoading(false);
|
||||||
};
|
};
|
||||||
@@ -54,15 +53,16 @@ function UpdateRewardProgram({
|
|||||||
return (
|
return (
|
||||||
<Dialog open={open} onOpenChange={setOpen}>
|
<Dialog open={open} onOpenChange={setOpen}>
|
||||||
<DialogContent className="w-[500px]">
|
<DialogContent className="w-[500px]">
|
||||||
<DialogTitle>Update Reward Programs</DialogTitle>
|
<DialogTitle>Update Reward Program</DialogTitle>
|
||||||
<WarningBox>
|
{/* <WarningBox>
|
||||||
Existing customers with this coupon will not be affected
|
Existing customers with this reward program will not be affected
|
||||||
</WarningBox>
|
</WarningBox> */}
|
||||||
|
|
||||||
{selectedReward && (
|
{selectedRewardProgram && (
|
||||||
<RewardProgramConfig
|
<RewardProgramConfig
|
||||||
rewardProgram={selectedReward}
|
rewardProgram={selectedRewardProgram}
|
||||||
setRewardProgram={setSelectedReward}
|
setRewardProgram={setSelectedRewardProgram}
|
||||||
|
isUpdate={true}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user