1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-22 21:39:22 +00:00
comunicapiv2/src/controllers/ConversationsController.ts

70 lines
2.0 KiB
TypeScript
Raw Normal View History

2019-11-23 17:41:13 +00:00
import { RequestHandler } from "../entities/RequestHandler";
import { ConversationsHelper } from "../helpers/ConversationsHelper";
import { Conversation } from "../entities/Conversation";
/**
* Conversations controller
*
* @author Pierre HUBERT
*/
export class ConversationsController {
/**
* Get the list of conversations of the user
*
* @param handler
*/
public static async GetList(handler: RequestHandler) {
const list = await ConversationsHelper.GetListUser(handler.getUserId());
handler.send(list.map(c => this.ConversationToAPI(c)));
}
/**
* Get information about a single conversation
*
* @param handler
*/
public static async GetInfoSingle(handler: RequestHandler) {
const conversationID = await this.GetPostConversationId("conversationID", handler);
2019-11-23 19:54:35 +00:00
const conv = await ConversationsHelper.GetSingle(conversationID, handler.getUserId());
if(!conv)
throw Error("Could not get information about the conversation (but it should have been found though) !!");
handler.send(this.ConversationToAPI(conv));
}
/**
* Get and return safely a conversation ID specified in a $_POST Request
*
* @param name The name of the POST field containing the ID of the conversation
* @param handler
*/
private static async GetPostConversationId(name : string, handler: RequestHandler) : Promise<number> {
const convID = handler.postInt(name);
// Check out whether the user belongs to the conversation or not
if(!await ConversationsHelper.DoesUsersBelongsTo(handler.getUserId(), convID))
handler.error(401, "You are not allowed to perform queries on this conversation!");
return convID;
}
2019-11-23 17:41:13 +00:00
/**
* Turn a conversation object into an API entry
*
* @param c
*/
private static ConversationToAPI(c : Conversation) : any {
return {
ID: c.id,
ID_owner: c.ownerID,
last_active: c.lastActive,
name: c.name.length > 0 ? c.name : false,
following: c.following ? 1 : 0,
saw_last_message: c.sawLastMessage ? 1 : 0,
members: c.members
};
}
}