booking_store.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { create } from 'zustand';
  2. interface BookingInfo {
  3. bookTime: string;
  4. endTime: string;
  5. carID: string;
  6. date: string;
  7. chargingWatt: string;
  8. connectorID: string;
  9. price: string;
  10. stationID: string;
  11. user: string;
  12. paymentFee: string;
  13. carCapacitance: string;
  14. bookDateForDisplay?: string;
  15. bookTimeForDisplay?: string;
  16. chargeStationAddressForDisplay?: string;
  17. chargeStationNameForDisplay?: string;
  18. carNameForDisplay?: string;
  19. }
  20. interface BookingStore extends BookingInfo {
  21. setBookingInfo: (info: Partial<BookingInfo>) => void;
  22. resetBookingInfo: () => void;
  23. }
  24. const initialState: BookingInfo = {
  25. bookTime: '',
  26. endTime: '',
  27. carID: '',
  28. date: '',
  29. chargingWatt: '',
  30. connectorID: '',
  31. price: '',
  32. stationID: '',
  33. user: '',
  34. paymentFee: '',
  35. carCapacitance: '',
  36. bookDateForDisplay: '',
  37. bookTimeForDisplay: '',
  38. chargeStationAddressForDisplay: '',
  39. chargeStationNameForDisplay: '',
  40. carNameForDisplay: ''
  41. };
  42. const useBookingStore = create<BookingStore>((set) => ({
  43. ...initialState,
  44. setBookingInfo: (info) => set((state) => ({ ...state, ...info })),
  45. resetBookingInfo: () => set(initialState)
  46. }));
  47. export default useBookingStore;