booking_store.tsx 1.2 KB

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