assigners can assign volunteer to a team

This commit is contained in:
memeriau
2022-04-16 18:30:47 +02:00
parent f0f08a91ed
commit 7c96636477
8 changed files with 145 additions and 6 deletions

View File

@@ -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,

View 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
}