fixed order, image carousel
This commit is contained in:
@@ -40,7 +40,7 @@ interface OrderSummaryProps {
|
||||
deliveryType: DeliveryType;
|
||||
selectedRegion: string;
|
||||
selectedProvince: number | null;
|
||||
note: string;
|
||||
notes: string;
|
||||
regionGroups: Record<string, Province[]>;
|
||||
availableRegions: string[];
|
||||
paymentTypes: PaymentType[];
|
||||
@@ -54,7 +54,7 @@ interface OrderSummaryProps {
|
||||
onDeliveryTypeChange: (type: DeliveryType) => void;
|
||||
onRegionChange: (regionCode: string) => void;
|
||||
onProvinceChange: (provinceId: number) => void;
|
||||
onNoteChange: (note: string) => void;
|
||||
onNoteChange: (notes: string) => void;
|
||||
onCompleteOrder: () => void;
|
||||
isLoading: boolean;
|
||||
}
|
||||
@@ -65,7 +65,7 @@ export default function OrderSummary({
|
||||
deliveryType,
|
||||
selectedRegion,
|
||||
selectedProvince,
|
||||
note,
|
||||
notes,
|
||||
regionGroups,
|
||||
availableRegions,
|
||||
paymentTypes,
|
||||
@@ -303,7 +303,7 @@ export default function OrderSummary({
|
||||
<div className="mb-6">
|
||||
<Label className="text-lg font-semibold mb-3 block">{t("note")}</Label>
|
||||
<Textarea
|
||||
value={note}
|
||||
value={notes}
|
||||
onChange={(e) => onNoteChange(e.target.value)}
|
||||
className="rounded-xl resize-none"
|
||||
rows={3}
|
||||
|
||||
@@ -151,7 +151,7 @@ export function useAddToCart() {
|
||||
|
||||
pendingUpdates.forEach((pendingQty, pendingId) => {
|
||||
const idx = updated.data.findIndex(
|
||||
(item: any) => item.product?.id === pendingId
|
||||
(item: any) => item.product?.id === pendingId,
|
||||
);
|
||||
if (idx !== -1) {
|
||||
updated.data[idx] = {
|
||||
@@ -162,7 +162,7 @@ export function useAddToCart() {
|
||||
});
|
||||
|
||||
const existingItem = updated.data.find(
|
||||
(item: any) => item.product?.id === productId
|
||||
(item: any) => item.product?.id === productId,
|
||||
);
|
||||
|
||||
if (existingItem) {
|
||||
@@ -172,7 +172,7 @@ export function useAddToCart() {
|
||||
...item,
|
||||
product_quantity: item.product_quantity + quantity,
|
||||
}
|
||||
: item
|
||||
: item,
|
||||
);
|
||||
} else {
|
||||
updated.data = [
|
||||
@@ -185,7 +185,7 @@ export function useAddToCart() {
|
||||
}
|
||||
|
||||
const finalItem = updated.data.find(
|
||||
(item: any) => item.product?.id === productId
|
||||
(item: any) => item.product?.id === productId,
|
||||
);
|
||||
if (finalItem) {
|
||||
pendingUpdates.set(productId, finalItem.product_quantity);
|
||||
@@ -261,7 +261,7 @@ export function useRemoveFromCart() {
|
||||
pendingUpdates.forEach((pendingQty, pendingId) => {
|
||||
if (pendingId !== productId) {
|
||||
const idx = updated.data.findIndex(
|
||||
(item: any) => item.product?.id === pendingId
|
||||
(item: any) => item.product?.id === pendingId,
|
||||
);
|
||||
if (idx !== -1) {
|
||||
updated.data[idx] = {
|
||||
@@ -273,7 +273,7 @@ export function useRemoveFromCart() {
|
||||
});
|
||||
|
||||
updated.data = updated.data.filter(
|
||||
(item: any) => item.product?.id !== productId
|
||||
(item: any) => item.product?.id !== productId,
|
||||
);
|
||||
|
||||
pendingUpdates.delete(productId);
|
||||
@@ -413,7 +413,7 @@ export function useUpdateCartItemQuantity() {
|
||||
|
||||
pendingUpdates.forEach((pendingQty, pendingId) => {
|
||||
const idx = updated.data.findIndex(
|
||||
(item: any) => item.product?.id === pendingId
|
||||
(item: any) => item.product?.id === pendingId,
|
||||
);
|
||||
if (idx !== -1) {
|
||||
updated.data[idx] = {
|
||||
@@ -426,7 +426,7 @@ export function useUpdateCartItemQuantity() {
|
||||
updated.data = updated.data.map((item: any) =>
|
||||
item.product?.id === productId
|
||||
? { ...item, product_quantity: quantity }
|
||||
: item
|
||||
: item,
|
||||
);
|
||||
|
||||
pendingUpdates.set(productId, quantity);
|
||||
@@ -470,14 +470,16 @@ export function useCreateOrder() {
|
||||
delivery_time?: string;
|
||||
delivery_at?: string;
|
||||
region: string;
|
||||
note?: string;
|
||||
notes?: string;
|
||||
}) => {
|
||||
const response = await apiClient.post("/orders", payload);
|
||||
return response.data;
|
||||
},
|
||||
onSuccess: (data) => {
|
||||
if (data && data.payment_url) {
|
||||
window.open(data.payment_url, '_blank')?.focus();
|
||||
// Handle payment URL - check both data.payment_url and data.data.payment_url
|
||||
const paymentUrl = data?.data?.payment_url || data?.payment_url;
|
||||
if (paymentUrl) {
|
||||
window.open(paymentUrl, "_blank")?.focus();
|
||||
}
|
||||
|
||||
pendingUpdates.clear();
|
||||
@@ -491,7 +493,7 @@ export function useCreateOrder() {
|
||||
onError: (error: any) => {
|
||||
console.error(
|
||||
"Create order error:",
|
||||
error.response?.data?.message || error.message
|
||||
error.response?.data?.message || error.message,
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -502,7 +504,7 @@ export function useCartCount() {
|
||||
return (
|
||||
data?.data?.reduce(
|
||||
(sum: number, item: any) => sum + (item.product_quantity || 0),
|
||||
0
|
||||
0,
|
||||
) || 0
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user