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

Can update following status of a frienship

This commit is contained in:
Pierre HUBERT 2020-01-01 14:58:31 +01:00
parent f46d87def5
commit 4cfb85d1ad
4 changed files with 52 additions and 1 deletions

View File

@ -158,7 +158,7 @@ export class FriendsController {
* @param h Request handler * @param h Request handler
*/ */
public static async RemoveFriend(h: RequestHandler) { public static async RemoveFriend(h: RequestHandler) {
const friendID = await h.postUserId("friendID"); const friendID = await h.postFriendId("friendID");
await FriendsHelper.RemoveFriendship(h.getUserId(), friendID); await FriendsHelper.RemoveFriendship(h.getUserId(), friendID);
@ -167,6 +167,20 @@ export class FriendsController {
h.success("The friend was removed from the list!"); h.success("The friend was removed from the list!");
} }
/**
* Update following status of a friendship
*
* @param h Request handler
*/
public static async SetFollowing(h: RequestHandler) {
const friendID = await h.postFriendId("friendID");
const follow = h.postBool("follow");
await FriendsHelper.SetFollowing(h.getUserId(), friendID, follow);
h.success("Following status upated!");
}
/** /**
* Turn a friend object into an API entry * Turn a friend object into an API entry
* *

View File

@ -91,6 +91,8 @@ export const Routes : Route[] = [
{path: "/friends/remove", cb: (h) => FriendsController.RemoveFriend(h)}, {path: "/friends/remove", cb: (h) => FriendsController.RemoveFriend(h)},
{path: "/friends/setFollowing", cb: (h) => FriendsController.SetFollowing(h)},
// Conversations controller // Conversations controller
{path: "/conversations/create", cb: (h) => ConversationsController.CreateConversation(h)}, {path: "/conversations/create", cb: (h) => ConversationsController.CreateConversation(h)},

View File

@ -10,6 +10,7 @@ import { UserHelper } from "../helpers/UserHelper";
import { GroupsAccessLevel } from "./Group"; import { GroupsAccessLevel } from "./Group";
import { GroupsHelper } from "../helpers/GroupsHelper"; import { GroupsHelper } from "../helpers/GroupsHelper";
import { checkVirtualDirectory } from "../utils/VirtualDirsUtils"; import { checkVirtualDirectory } from "../utils/VirtualDirsUtils";
import { FriendsHelper } from "../helpers/FriendsHelper";
/** /**
* Response to a request * Response to a request
@ -209,6 +210,20 @@ export class RequestHandler {
return userID; return userID;
} }
/**
* Get the ID of a friend included in a POST request
*
* @param name Name of the POST field
*/
public async postFriendId(name: string) : Promise<number> {
const friendID = await this.postUserId(name);
if(!await FriendsHelper.AreFriend(this.getUserId(), friendID))
this.error(401, "You are not friend with this personn!");
return friendID;
}
/** /**
* Find user ID based on its email address, included in a POST request * Find user ID based on its email address, included in a POST request
* *

View File

@ -227,6 +227,26 @@ export class FriendsHelper {
}) > 0; }) > 0;
} }
/**
* Update the following status for a friendship
*
* @param userID The ID of the user updating the status
* @param friendID The ID of the target friend
* @param follow New following status
*/
public static async SetFollowing(userID: number, friendID: number, follow: boolean) {
await DatabaseHelper.UpdateRows({
table: FRIENDS_TABLE,
where: {
ID_personne: userID,
ID_amis: friendID
},
set: {
abonnement: follow ? 1 : 0
}
})
}
/** /**
* Check whether a user is following a friend or not * Check whether a user is following a friend or not
* *