night.tsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { createSlice } from "@reduxjs/toolkit";
  2. interface nightState {
  3. sunRise: string | '06:00',
  4. sunSet: string | '18:00',
  5. sunRiseTomorrow: string | '06:00',
  6. sunSetTomorrow: string | '18:00',
  7. showNightRing: boolean | false,
  8. isMember: boolean | false,
  9. gpsInfo: Object | null,
  10. nightRingSunset: string | '18:00',
  11. nightRingSunrise: string | '06:00',
  12. nightRingDate: any | null
  13. }
  14. const initialState: nightState = {
  15. sunRise: '06:00',
  16. sunSet: '18:00',
  17. sunRiseTomorrow: '06:00',
  18. sunSetTomorrow: '18:00',
  19. showNightRing: false,
  20. isMember: false,
  21. gpsInfo: null,
  22. nightRingSunset: '18:00',
  23. nightRingSunrise: '06:00',
  24. nightRingDate: 0,
  25. }
  26. const nightSlice = createSlice({
  27. name: 'night',
  28. initialState,
  29. reducers: {
  30. showNight(state, action) {
  31. state.showNightRing = action.payload;
  32. },
  33. setNightRingData(state, action) {
  34. const { sunrise, sunset, date } = action.payload
  35. state.nightRingDate = date;
  36. state.nightRingSunrise = sunrise
  37. state.nightRingSunset = sunset
  38. },
  39. updateMember(state, action) {
  40. var isMember = action.payload.isMember;
  41. var gpsInfo = action.payload.gpsInfo;
  42. state.isMember = isMember;
  43. if (isMember && gpsInfo) {
  44. state.sunRise = '07:00'
  45. state.sunSet = '19:00'
  46. state.sunRiseTomorrow = '07:00'
  47. state.sunSetTomorrow = '19:00'
  48. state.gpsInfo = gpsInfo
  49. }
  50. else {
  51. state.sunRise = '06:00'
  52. state.sunSet = '18:00'
  53. state.sunRiseTomorrow = '06:00'
  54. state.sunSetTomorrow = '18:00'
  55. state.gpsInfo = gpsInfo ? gpsInfo : null
  56. }
  57. },
  58. clearNightStore(state) {
  59. state.sunRise = '06:00'
  60. state.sunSet = '18:00'
  61. state.sunRiseTomorrow = '06:00'
  62. state.sunSetTomorrow = '18:00'
  63. state.nightRingSunset = '18:00'
  64. state.nightRingSunrise = '06:00'
  65. state.showNightRing= false
  66. state.nightRingDate = 0
  67. }
  68. }
  69. });
  70. export default nightSlice.reducer;
  71. export const { showNight, updateMember, setNightRingData, clearNightStore } = nightSlice.actions;