Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1x 1x 1x 8x 8x 8x 5x 4x 2x 2x 1x 1x 3x | import {RequestHandler} from 'express';
import {BadRequestError, NotMemberOfGroupError, InternalError} from '@errors';
import {UserService} from '@models';
/**
* Handles request, that currently logged in user wants to
* leave the specified group.
* @param req - Request
* @param res - Response
* @param next - Next
*/
export const leaveGroupController: RequestHandler = async (req, res, next) => {
const groupId = parseInt(req.params.groupId, 10);
const user = req.user;
if (!isNaN(groupId) && user !== undefined) {
const removedMemberships = await UserService.leaveGroup(user, groupId);
if (removedMemberships === 1) {
res.status(204).send();
} else if (removedMemberships === 0) {
throw new NotMemberOfGroupError();
} else {
throw new InternalError();
}
} else {
throw new BadRequestError();
}
};
|