reregisterSlice.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { createSlice, PayloadAction } from '@reduxjs/toolkit';
  2. import { Task } from '@/domain/work';
  3. import { RegisterInfo } from '@/API/patient/workActions';
  4. interface ReRegisterState {
  5. sourceTask: Task | null;
  6. registerInfo: RegisterInfo | null;
  7. loading: boolean;
  8. error: string | null;
  9. }
  10. const initialState: ReRegisterState = {
  11. sourceTask: null,
  12. registerInfo: null,
  13. loading: false,
  14. error: null,
  15. };
  16. export const reregisterSlice = createSlice({
  17. name: 'reregister',
  18. initialState,
  19. reducers: {
  20. setSourceTask: (state, action: PayloadAction<Task>) => {
  21. state.sourceTask = action.payload;
  22. },
  23. setRegisterInfo: (state, action: PayloadAction<RegisterInfo>) => {
  24. state.registerInfo = action.payload;
  25. },
  26. clearReRegister: (state) => {
  27. state.sourceTask = null;
  28. state.registerInfo = null;
  29. state.error = null;
  30. },
  31. setLoading: (state, action: PayloadAction<boolean>) => {
  32. state.loading = action.payload;
  33. },
  34. setError: (state, action: PayloadAction<string>) => {
  35. state.error = action.payload;
  36. },
  37. },
  38. });
  39. export const {
  40. setSourceTask,
  41. setRegisterInfo,
  42. clearReRegister,
  43. setLoading,
  44. setError
  45. } = reregisterSlice.actions;
  46. // Selectors
  47. export const selectSourceTask = (state: { reregister: ReRegisterState }) => state.reregister.sourceTask;
  48. export const selectRegisterInfo = (state: { reregister: ReRegisterState }) => state.reregister.registerInfo;
  49. export const selectReRegisterLoading = (state: { reregister: ReRegisterState }) => state.reregister.loading;
  50. export const selectReRegisterError = (state: { reregister: ReRegisterState }) => state.reregister.error;
  51. export type { ReRegisterState };
  52. export default reregisterSlice.reducer;