From eefba81fd3859aa513504b82e6bf95246886c531 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Wed, 1 Jan 2020 12:07:26 +0100 Subject: [PATCH] Can respond to a friendship request --- src/controllers/FriendsController.ts | 19 ++++++++++++++++++ src/controllers/Routes.ts | 2 ++ src/helpers/FriendsHelper.ts | 30 ++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/src/controllers/FriendsController.ts b/src/controllers/FriendsController.ts index d4bc7a0..8555d81 100644 --- a/src/controllers/FriendsController.ts +++ b/src/controllers/FriendsController.ts @@ -133,6 +133,25 @@ export class FriendsController { h.success("Friendship request removed!"); } + /** + * Respond to a friendship request + * + * @param h Request handler + */ + public static async RespondRequest(h: RequestHandler) { + const friendID = await h.postUserId("friendID"); + const accept = h.postBool("accept"); + + if(!await FriendsHelper.SentRequest(friendID, h.getUserId())) + h.error(401, "No friendship request was sent by this user!"); + + await FriendsHelper.RespondRequest(h.getUserId(), friendID, accept); + + // TODO : create notification + + h.success("Response to the friendship request successfully saved!"); + } + /** * Turn a friend object into an API entry * diff --git a/src/controllers/Routes.ts b/src/controllers/Routes.ts index 040f4b4..6a898fd 100644 --- a/src/controllers/Routes.ts +++ b/src/controllers/Routes.ts @@ -87,6 +87,8 @@ export const Routes : Route[] = [ {path: "/friends/removeRequest", cb: (h) => FriendsController.CancelRequest(h)}, + {path: "/friends/respondRequest", cb: (h) => FriendsController.RespondRequest(h)}, + // Conversations controller {path: "/conversations/create", cb: (h) => ConversationsController.CreateConversation(h)}, diff --git a/src/helpers/FriendsHelper.ts b/src/helpers/FriendsHelper.ts index dfcdad5..57d5234 100644 --- a/src/helpers/FriendsHelper.ts +++ b/src/helpers/FriendsHelper.ts @@ -130,6 +130,36 @@ export class FriendsHelper { } ); } + + /** + * Respond to a friendship request + * + * @param userID The ID of the user who respond to the request + * @param friendID The ID of the user who sent the request + * @param accept TRUE to accept / FALSE else + */ + public static async RespondRequest(userID: number, friendID: number, accept: boolean) : Promise { + + // Delete the request + await this.RemoveRequest(friendID, userID); + + // If the request was rejected + if(!accept) + return; + + // If the request was accepted + await DatabaseHelper.InsertRow(FRIENDS_TABLE, { + ID_personne: userID, + ID_amis: friendID, + actif: 1 + }); + + await DatabaseHelper.InsertRow(FRIENDS_TABLE, { + ID_personne: friendID, + ID_amis: userID, + actif: 1 + }); + } /** * Count the number of friendship requests a user