send pick up type

This commit is contained in:
2025-11-15 23:04:25 +03:00
parent fb590eb8f2
commit a86fc166fa
3 changed files with 28 additions and 8 deletions

View File

@@ -65,8 +65,9 @@ interface CartState {
scheduledDate: string;
discount: DiscountData;
plateCar: string;
pickupDate: string,
pickupTime: string
pickupDate: string;
pickupTime: string;
pickupType: string;
}
// localStorage keys
@@ -95,7 +96,8 @@ export const CART_STORAGE_KEYS = {
PLATE: "fascano_plate_car",
PICKUP_DATE: "fascano_pickup_date",
PICKUP_TIME: "fascano_pickup_time",
} as const;
PICKUP_TYPE: "fascano_pickup_type",
} as const;
// Utility functions for localStorage
const getFromLocalStorage = <T>(key: string, defaultValue: T): T => {
@@ -179,6 +181,7 @@ const initialState: CartState = {
plateCar: getFromLocalStorage(CART_STORAGE_KEYS.PLATE, ""),
pickupDate: getFromLocalStorage(CART_STORAGE_KEYS.PICKUP_DATE, ""),
pickupTime: getFromLocalStorage(CART_STORAGE_KEYS.PICKUP_TIME, ""),
pickupType: getFromLocalStorage(CART_STORAGE_KEYS.PICKUP_TYPE, ""),
};
const orderSlice = createSlice({
@@ -610,7 +613,16 @@ const orderSlice = createSlice({
JSON.stringify(state.pickupTime),
);
}
},
},
updatePickUpType(state, action: PayloadAction<string>) {
state.pickupType = action.payload;
if (typeof window !== "undefined") {
localStorage.setItem(
CART_STORAGE_KEYS.PICKUP_TYPE,
JSON.stringify(state.pickupType),
);
}
},
},
});
@@ -646,6 +658,7 @@ export const {
updateDiscount,
updatePickupDate,
updatePickupTime,
updatePickUpType,
} = orderSlice.actions;
// Tax calculation helper functions
@@ -690,9 +703,8 @@ export const selectCartItemsQuantityById =
// Loyalty selectors
const selectOrderItems = (state: RootState) => state.order.items;
export const selectLoyaltyItems = createSelector(
[selectOrderItems],
(items) => items.filter((item) => item.isHasLoyalty),
export const selectLoyaltyItems = createSelector([selectOrderItems], (items) =>
items.filter((item) => item.isHasLoyalty),
);
export const selectHighestPricedLoyaltyItem = (state: RootState) => {

View File

@@ -3,7 +3,11 @@ import useFormInstance from "antd/es/form/hooks/useFormInstance";
import ProInputCard from "components/ProInputCard/ProInputCard.tsx";
import ProRatioGroups from "components/ProRatioGroups/ProRatioGroups.tsx";
import dayjs from "dayjs";
import { updatePickupDate, updatePickupTime } from "features/order/orderSlice";
import {
updatePickupDate,
updatePickupTime,
updatePickUpType,
} from "features/order/orderSlice";
import useBreakPoint from "hooks/useBreakPoint.ts";
import { BottomSheet } from "pages/cart/components/timeEstimate/BottomSheet.tsx";
import { Dialog } from "pages/cart/components/timeEstimate/Dialog.tsx";
@@ -53,9 +57,11 @@ export default function TimeEstimateCard() {
dayjs().format(SERVER_DATE_FORMAT),
dayjs().format(UI_TIME_FORMAT),
);
dispatch(updatePickUpType("now"));
} else {
setEstimateWay(value);
setIsEstimateTimeOpen(true);
dispatch(updatePickUpType(""));
}
}}
/>

View File

@@ -39,6 +39,7 @@ export default function useOrder() {
plateCar,
pickupTime,
pickupDate,
pickupType,
} = useAppSelector(selectCart);
const highestLoyaltyItem = useAppSelector(selectHighestPricedLoyaltyItem);
const { useLoyaltyPoints } = useAppSelector(selectCart);
@@ -88,6 +89,7 @@ export default function useOrder() {
pickup_time: pickupTime,
pickup_date: pickupDate,
car_plate: plateCar,
pickupTimeType: pickupType,
delivery_pickup_interval: "",
orderPrice: orderPrice,
use_loylaty: useLoyaltyPoints && highestLoyaltyItem ? 1 : 0,