1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-12-28 14:38:52 +00:00

Can get information about a single conversation

This commit is contained in:
Pierre HUBERT 2019-11-23 20:53:13 +01:00
parent 988d6d0936
commit 601c416975
3 changed files with 65 additions and 1 deletions

View File

@ -20,6 +20,37 @@ export class ConversationsController {
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);
const conv = await ConversationsHelper.GetSingle(conversationID);
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;
}
/**
* Turn a conversation object into an API entry
*

View File

@ -48,4 +48,7 @@ export const Routes : Route[] = [
// Conversations controller
{path: "/conversations/getList", cb: (h) => ConversationsController.GetList(h)},
{path: "/conversations/getInfoOne", cb: (h) => ConversationsController.GetInfoSingle(h)},
{path: "/conversations/getInfosOne", cb: (h) => ConversationsController.GetInfoSingle(h)}, // Legacy
]

View File

@ -50,6 +50,36 @@ export class ConversationsHelper {
return list;
}
/**
* Get information about a single conversation
*
* @param convID The ID of the conversation to get
*/
public static async GetSingle(convID : number) : Promise<Conversation | null> {
const result = await DatabaseHelper.QueryRow({
fields: [
"*",
"l.id as id",
"l.user_id as owner_id",
],
table: LIST_TABLE + " l",
joins: [
// Joins with conversation members table
{
table: USERS_TABLE + " u",
condition: "l.id = u.conv_id"
}
],
where: {
"l.id": convID,
}
});
if(!result)
return null;
return await this.DBToConversationInfo(result);
}
/**
* Check out whether a user is the member of a conversation or not
@ -97,7 +127,7 @@ export class ConversationsHelper {
lastActive: row.last_active,
timeCreate: row.time_add,
following: row.following,
sawLastMessage: row.saw_last_message,
sawLastMessage: row.saw_last_message == 1,
members: await this.GetConversationMembers(row.id)
}
}