Skip to content

Commit

Permalink
Use of the simplified event update flow
Browse files Browse the repository at this point in the history
  • Loading branch information
Alf-Melmac committed Mar 26, 2023
1 parent c3989a9 commit 19faab6
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 45 deletions.
26 changes: 3 additions & 23 deletions src/features/event/action/slotlist/EventSlotlist.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import {ScrollAffix} from '../../../../components/Button/ScrollAffix';
import {PulsatingButton} from '../../../../components/Button/PulsatingButton';
import {EventActionFormType, useFormContext} from '../../../../contexts/event/action/EventActionFormContext';
import {useEditMode} from '../../../../contexts/event/action/EditModeContext';
import {useChangeWatcher, useEventSlotListUpdate} from '../useEventUpdate';
import {FilteredEventAction, filterFrontendIds} from '../../../../utils/formHelper';
import {useChangeWatcher, useEventUpdate} from '../useEventUpdate';
import {filterFrontendIds} from '../../../../utils/formHelper';
import {EventActionPageTitle} from '../EventActionPageTitle';
import {T} from '../../../../components/T';
import {convertDtoToFormEvent} from '../../edit/utils';
Expand All @@ -30,19 +30,8 @@ export function EventSlotlist(props: EventSlotlistProps): JSX.Element {
};

const squadList = filterFrontendIds<EventActionFormType['squadList'][number]>(form.values.squadList);
squadList.forEach(squad => {
prepareReservedFor(squad);
squad.slotList.forEach(slot => {
prepareReservedFor(slot);
// Translate slot blocked to expected slot user for update endpoint
if (editMode) {
// @ts-ignore
slot.user = slot.blocked ? {id: 11111} : undefined;
}
});
});

const {mutate} = useEventSlotListUpdate({squadList: squadList},
const {mutate} = useEventUpdate({squadList: squadList},
result => {
// @ts-ignore SquadList matches here
form.setFieldValue('squadList', result.squadList);
Expand Down Expand Up @@ -84,12 +73,3 @@ export function EventSlotlist(props: EventSlotlistProps): JSX.Element {
{...reserveParticipatingInputProps}/>
</>;
}

function prepareReservedFor(el: FilteredEventAction<EventActionFormType['squadList'][number]> | EventActionFormType['squadList'][number]['slotList'][number]) {
if (!el.reservedFor) {
delete el.reservedFor;
} else {
// @ts-ignore
el.reservedFor = {id: el.reservedFor};
}
}
23 changes: 4 additions & 19 deletions src/features/event/action/useEventUpdate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,30 +31,15 @@ export function useEventTextChange(formPath: string, value: string, onSuccess?:
export function useEventUpdate(data: unknown, onSuccess?: (saved: EventEditDto) => void) {
const eventId = useEventPage();
const postEventUpdate = () => slotbotServerClient.put(`/events/${eventId}`, data).then((res) => res.data);
const {mutate} = useMutation<EventEditDto, AxiosError>(postEventUpdate, getEventEditMutationOptions(onSuccess));

return {mutate};
}

export function useEventSlotListUpdate(data: unknown, onSuccess?: (saved: EventEditDto) => void) {
const eventId = useEventPage();
const postEventUpdate = () => slotbotServerClient.put(`/events/${eventId}/slotlist`, data).then((res) => res.data);
const {mutate} = useMutation<EventEditDto, AxiosError>(postEventUpdate, getEventEditMutationOptions(onSuccess));

return {mutate};
}

/**
* Mutation options for event updates. Converts utc times to local data and shows result-notifications.
*/
function getEventEditMutationOptions(onSuccess?: (saved: EventEditDto) => void) {
return {
const {mutate} = useMutation<EventEditDto, AxiosError>(postEventUpdate, {
onSuccess: (response: EventEditDto) => {
onSuccess?.({...response, dateTime: convertUtcDateTimeToLocal(response.dateTime)});
successNotification();
},
onError: errorNotification,
};
});

return {mutate};
}

export function useChangeWatcher(field: string) {
Expand Down
9 changes: 6 additions & 3 deletions src/features/event/eventTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,9 @@ export interface SlotDto extends FrontendIdDto {
//endregion event post

//region event edit
export interface EventEditDto extends EventActionDto {
interface EventUpdateDto extends EventActionDto {
details: EventFieldIdDto[];
squadList: SquadIdDto[];
canRevokeShareable: boolean;
canUploadSlotlist: boolean;
}

interface EventFieldIdDto extends Omit<EventFieldDto, 'id'>, IdEntity {
Expand All @@ -105,6 +103,11 @@ interface SquadIdDto extends AbstractIdEntityDto {

export interface SlotIdDto extends Omit<SlotDto, 'id'>, IdEntity {
}

export interface EventEditDto extends EventUpdateDto {
canRevokeShareable: boolean;
canUploadSlotlist: boolean;
}
//endregion event edit

export interface IdEntity {
Expand Down

0 comments on commit 19faab6

Please sign in to comment.