1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-22 13:29:22 +00:00

Can get a friendship status

This commit is contained in:
Pierre HUBERT 2019-12-31 10:33:38 +01:00
parent a78510d426
commit ca2e106852
3 changed files with 47 additions and 0 deletions

View File

@ -60,6 +60,34 @@ export class FriendsController {
h.send(this.FriendToAPI(info, true));
}
/**
* Get a friendship status
*
* @param h Request handler
*/
public static async GetStatus(h: RequestHandler) {
const friendID = await h.postUserId("friendID");
let response = {
are_friend: false,
sent_request: false,
received_request: false,
following: false
}
response.are_friend = await FriendsHelper.AreFriend(h.getUserId(), friendID);
if(!response.are_friend) {
response.sent_request = await FriendsHelper.SentRequest(h.getUserId(), friendID);
response.received_request = await FriendsHelper.SentRequest(friendID, h.getUserId());
}
else
response.following = await FriendsHelper.IsFollowing(h.getUserId(), friendID);
h.send(response);
}
/**
* Turn a friend object into an API entry
*

View File

@ -81,6 +81,8 @@ export const Routes : Route[] = [
{path: "/friends/get_single_infos", cb: (h) => FriendsController.GetSingleFrienshipInfo(h)},
{path: "/friends/getStatus", cb: (h) => FriendsController.GetStatus(h)},
// Conversations controller
{path: "/conversations/create", cb: (h) => ConversationsController.CreateConversation(h)},

View File

@ -80,6 +80,23 @@ export class FriendsHelper {
return this.DbToFriend(result);
}
/**
* Check out whether a user sent a request to another friend
*
* @param userID The ID of the user supposed to have sent a request
* @param targetUser The ID of the target user
*/
public static async SentRequest(userID: number, targetUser: number) : Promise<boolean> {
return await DatabaseHelper.Count({
table: FRIENDS_TABLE,
where: {
ID_personne: targetUser,
ID_amis: userID,
actif: 0
}
}) > 0;
}
/**
* Count the number of friendship requests a user
* received