mirror of
https://gitlab.com/comunic/comunicapiv2
synced 2024-11-22 13:29:22 +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)));
|
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
|
* Turn a conversation object into an API entry
|
||||||
*
|
*
|
||||||
|
@ -48,4 +48,7 @@ export const Routes : Route[] = [
|
|||||||
|
|
||||||
// Conversations controller
|
// Conversations controller
|
||||||
{path: "/conversations/getList", cb: (h) => ConversationsController.GetList(h)},
|
{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;
|
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
|
* Check out whether a user is the member of a conversation or not
|
||||||
@ -97,7 +127,7 @@ export class ConversationsHelper {
|
|||||||
lastActive: row.last_active,
|
lastActive: row.last_active,
|
||||||
timeCreate: row.time_add,
|
timeCreate: row.time_add,
|
||||||
following: row.following,
|
following: row.following,
|
||||||
sawLastMessage: row.saw_last_message,
|
sawLastMessage: row.saw_last_message == 1,
|
||||||
members: await this.GetConversationMembers(row.id)
|
members: await this.GetConversationMembers(row.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user