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:
parent
988d6d0936
commit
601c416975
@ -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
|
||||
*
|
||||
|
@ -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
|
||||
]
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user