add route room delete
This commit is contained in:
parent
7be2e84691
commit
2cae8f12a7
@ -106,7 +106,7 @@ export default class MessageAbl {
|
|||||||
const room = await new Room().setRoomIdOnMessageId(messageId);
|
const room = await new Room().setRoomIdOnMessageId(messageId);
|
||||||
try {
|
try {
|
||||||
await message.delete();
|
await message.delete();
|
||||||
if (room.roomId && room.shouldDelete()) {
|
if (room.roomId && await room.shouldDelete()) {
|
||||||
await room.delete();
|
await room.delete();
|
||||||
res.status(statusCode.OK).json({ deleteRoom: true }).send();
|
res.status(statusCode.OK).json({ deleteRoom: true }).send();
|
||||||
return;
|
return;
|
||||||
|
@ -8,6 +8,7 @@ import MailBuilder from "../mails/utils/mailBuilder";
|
|||||||
import { getAddresses } from "../db/utils/mail";
|
import { getAddresses } from "../db/utils/mail";
|
||||||
import { getMembers, getMessages, getRooms } from "../db/api-db";
|
import { getMembers, getMessages, getRooms } from "../db/api-db";
|
||||||
import logger from "../system/Logger";
|
import logger from "../system/Logger";
|
||||||
|
import Room from "../mails/room/Room";
|
||||||
|
|
||||||
function rmUserFromAddrs(addresses: { email: string }[], user: string) {
|
function rmUserFromAddrs(addresses: { email: string }[], user: string) {
|
||||||
let index = addresses.findIndex((a) => a.email == user);
|
let index = addresses.findIndex((a) => a.email == user);
|
||||||
@ -27,7 +28,7 @@ export default class RoomAbl {
|
|||||||
const mailBuilder = new MailBuilder();
|
const mailBuilder = new MailBuilder();
|
||||||
mailBuilder.from(user).to(ownerEmail).text(text).html(html);
|
mailBuilder.from(user).to(ownerEmail).text(text).html(html);
|
||||||
|
|
||||||
emailManager.getSmtp(user).sendMail(mailBuilder.message);
|
emailManager.getSmtp(user)?.sendMail(mailBuilder.message);
|
||||||
res.status(statusCode.OK).send();
|
res.status(statusCode.OK).send();
|
||||||
} else if (roomType === RoomType.GROUP || roomType === RoomType.THREAD) {
|
} else if (roomType === RoomType.GROUP || roomType === RoomType.THREAD) {
|
||||||
const lastMsgData = (await getLastMsgData(roomId))[0];
|
const lastMsgData = (await getLastMsgData(roomId))[0];
|
||||||
@ -52,7 +53,7 @@ export default class RoomAbl {
|
|||||||
.to(to.map((a) => a.email))
|
.to(to.map((a) => a.email))
|
||||||
.cc(cc.map((a) => a.email));
|
.cc(cc.map((a) => a.email));
|
||||||
|
|
||||||
emailManager.getSmtp(user).sendMail(mailBuilder.message);
|
emailManager.getSmtp(user)?.sendMail(mailBuilder.message);
|
||||||
res.status(statusCode.OK).send();
|
res.status(statusCode.OK).send();
|
||||||
} else {
|
} else {
|
||||||
res.status(statusCode.FORBIDDEN).send({ error: "Cannot add a new message in a room or a channel." });
|
res.status(statusCode.FORBIDDEN).send({ error: "Cannot add a new message in a room or a channel." });
|
||||||
@ -71,14 +72,22 @@ export default class RoomAbl {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static async getMembers(body, res) {
|
static async getMembers(body, res: Response) {
|
||||||
const { roomId } = body;
|
const { roomId } = body;
|
||||||
getMembers(roomId).then((addresses) => {
|
getMembers(roomId)
|
||||||
res.status(statusCode.OK).json(addresses);
|
.then((addresses) => {
|
||||||
}).catch((err) => {
|
res.status(statusCode.OK).json(addresses);
|
||||||
logger.err(err)
|
})
|
||||||
res.status(statusCode.INTERNAL_SERVER_ERROR);
|
.catch((err) => {
|
||||||
});
|
logger.err(err);
|
||||||
|
res.status(statusCode.INTERNAL_SERVER_ERROR);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async delete(body, res: Response) {
|
||||||
|
const { roomId } = body;
|
||||||
|
console.log("delete", roomId);
|
||||||
|
const room = new Room().setRoomId(roomId);
|
||||||
|
// todo
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ export default class Room {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if the room have threads or messages
|
||||||
async shouldDelete(): Promise<boolean> {
|
async shouldDelete(): Promise<boolean> {
|
||||||
if (!this._roomId) {
|
if (!this._roomId) {
|
||||||
throw "shouldDelete needs to have a roomId set.";
|
throw "shouldDelete needs to have a roomId set.";
|
||||||
|
@ -21,4 +21,8 @@ router.post("/response", async (req, res) => {
|
|||||||
await validator.validate("response", req.body, res, RoomAbl.response);
|
await validator.validate("response", req.body, res, RoomAbl.response);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post("/delete", async (req, res) => {
|
||||||
|
await validator.validate("deleteRoom", req.body, res, RoomAbl.delete);
|
||||||
|
});
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
12
back/validator/schemas/deleteRoom-schema.json
Normal file
12
back/validator/schemas/deleteRoom-schema.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"roomId": {
|
||||||
|
"type": "number"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"roomId"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
@ -11,6 +11,7 @@ import getMembersSchema from "./schemas/getMembers-schema.json";
|
|||||||
import setFlagSchema from "./schemas/setFlag-schema.json";
|
import setFlagSchema from "./schemas/setFlag-schema.json";
|
||||||
import responseSchema from "./schemas/response-schema.json";
|
import responseSchema from "./schemas/response-schema.json";
|
||||||
import deleteSchema from "./schemas/delete-schema.json";
|
import deleteSchema from "./schemas/delete-schema.json";
|
||||||
|
import deleteRoomSchema from "./schemas/deleteRoom-schema.json";
|
||||||
import { Request, Response } from "express";
|
import { Request, Response } from "express";
|
||||||
import statusCodes from "../utils/statusCodes";
|
import statusCodes from "../utils/statusCodes";
|
||||||
import logger from "../system/Logger";
|
import logger from "../system/Logger";
|
||||||
@ -24,6 +25,7 @@ class Validator {
|
|||||||
validateSetFlag: any;
|
validateSetFlag: any;
|
||||||
validateResponse: any;
|
validateResponse: any;
|
||||||
delete: any;
|
delete: any;
|
||||||
|
deleteRoom: any;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.validateCreateAccount = ajv.compile(createAccountSchema);
|
this.validateCreateAccount = ajv.compile(createAccountSchema);
|
||||||
@ -34,6 +36,7 @@ class Validator {
|
|||||||
this.validateSetFlag = ajv.compile(setFlagSchema);
|
this.validateSetFlag = ajv.compile(setFlagSchema);
|
||||||
this.validateResponse = ajv.compile(responseSchema);
|
this.validateResponse = ajv.compile(responseSchema);
|
||||||
this.delete = ajv.compile(deleteSchema);
|
this.delete = ajv.compile(deleteSchema);
|
||||||
|
this.deleteRoom = ajv.compile(deleteRoomSchema);
|
||||||
}
|
}
|
||||||
|
|
||||||
_getSchema(name: string): any {
|
_getSchema(name: string): any {
|
||||||
@ -55,6 +58,8 @@ class Validator {
|
|||||||
return this.validateResponse;
|
return this.validateResponse;
|
||||||
case "delete":
|
case "delete":
|
||||||
return this.delete;
|
return this.delete;
|
||||||
|
case "deleteRoom":
|
||||||
|
return this.deleteRoom;
|
||||||
default:
|
default:
|
||||||
logger.err(`Schema ${name} not found`);
|
logger.err(`Schema ${name} not found`);
|
||||||
break;
|
break;
|
||||||
|
@ -32,6 +32,6 @@ export default {
|
|||||||
return API().post(`/message/delete`, data);
|
return API().post(`/message/delete`, data);
|
||||||
},
|
},
|
||||||
deleteRoom(id: number) {
|
deleteRoom(id: number) {
|
||||||
return API().post(`/room/delete`, id);
|
return API().post(`/room/delete`, { roomId: id });
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -17,6 +17,7 @@ const roomTitle = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleDelete = () => {
|
const handleDelete = () => {
|
||||||
|
console.log(props.room);
|
||||||
if (props.room?.id) {
|
if (props.room?.id) {
|
||||||
imapAPI.deleteRoom(props.room.id);
|
imapAPI.deleteRoom(props.room.id);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user