mirror of
https://github.com/Paris-est-Ludique/intranet.git
synced 2025-09-11 22:06:29 +02:00
assigners can assign volunteer to a team
This commit is contained in:
@@ -18,6 +18,7 @@ import volunteerAsksSet from "./volunteerAsksSet"
|
||||
import volunteerParticipationDetailsSet from "./volunteerParticipationDetailsSet"
|
||||
import volunteerDayWishesSet from "./volunteerDayWishesSet"
|
||||
import volunteerTeamWishesSet from "./volunteerTeamWishesSet"
|
||||
import volunteerTeamAssignSet from "./volunteerTeamAssignSet"
|
||||
import wishAdd from "./wishAdd"
|
||||
import wishList from "./wishList"
|
||||
|
||||
@@ -41,6 +42,7 @@ export default (history: History) => ({
|
||||
volunteerParticipationDetailsSet,
|
||||
volunteerDayWishesSet,
|
||||
volunteerTeamWishesSet,
|
||||
volunteerTeamAssignSet,
|
||||
wishAdd,
|
||||
wishList,
|
||||
router: connectRouter(history) as any,
|
||||
|
59
src/store/volunteerTeamAssignSet.ts
Normal file
59
src/store/volunteerTeamAssignSet.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import { PayloadAction, createSlice } from "@reduxjs/toolkit"
|
||||
|
||||
import { StateRequest, toastError, elementFetch } from "./utils"
|
||||
import { VolunteerTeamAssign } from "../services/volunteers"
|
||||
import { AppThunk, AppState } from "."
|
||||
import { volunteerTeamAssignSet } from "../services/volunteersAccessors"
|
||||
|
||||
type StateVolunteerTeamAssignSet = { entity?: VolunteerTeamAssign } & StateRequest
|
||||
|
||||
export const initialState: StateVolunteerTeamAssignSet = {
|
||||
readyStatus: "idle",
|
||||
}
|
||||
|
||||
const volunteerTeamAssignSetSlice = createSlice({
|
||||
name: "volunteerTeamAssignSet",
|
||||
initialState,
|
||||
reducers: {
|
||||
getRequesting: (_) => ({
|
||||
readyStatus: "request",
|
||||
}),
|
||||
getSuccess: (_, { payload }: PayloadAction<VolunteerTeamAssign>) => ({
|
||||
readyStatus: "success",
|
||||
entity: payload,
|
||||
}),
|
||||
getFailure: (_, { payload }: PayloadAction<string>) => ({
|
||||
readyStatus: "failure",
|
||||
error: payload,
|
||||
}),
|
||||
},
|
||||
})
|
||||
|
||||
export default volunteerTeamAssignSetSlice.reducer
|
||||
export const { getRequesting, getSuccess, getFailure } = volunteerTeamAssignSetSlice.actions
|
||||
|
||||
export const fetchVolunteerTeamAssignSet = elementFetch(
|
||||
volunteerTeamAssignSet,
|
||||
getRequesting,
|
||||
getSuccess,
|
||||
getFailure,
|
||||
(error: Error) => toastError(`Erreur lors du chargement des notifications: ${error.message}`)
|
||||
)
|
||||
|
||||
const shouldFetchVolunteerTeamAssignSet = (state: AppState, id: number) =>
|
||||
state.volunteerTeamAssignSet?.readyStatus !== "success" ||
|
||||
(state.volunteerTeamAssignSet?.entity && state.volunteerTeamAssignSet?.entity?.id !== id)
|
||||
|
||||
export const fetchVolunteerTeamAssignSetIfNeed =
|
||||
(id = 0, wishes: Partial<VolunteerTeamAssign> = {}): AppThunk =>
|
||||
(dispatch, getState) => {
|
||||
let jwt = ""
|
||||
|
||||
if (!id) {
|
||||
;({ jwt, id } = getState().auth)
|
||||
}
|
||||
if (shouldFetchVolunteerTeamAssignSet(getState(), id))
|
||||
return dispatch(fetchVolunteerTeamAssignSet(jwt, id, wishes))
|
||||
|
||||
return null
|
||||
}
|
Reference in New Issue
Block a user