mirror of
https://gitlab.com/comunic/comunicapiv2
synced 2024-11-22 05:19:22 +00:00
Can create groups membership notifications (moderator > user)
This commit is contained in:
parent
9ced519618
commit
59925dab45
@ -8,6 +8,8 @@ import { GroupSettings } from "../entities/GroupSettings";
|
|||||||
import { removeHTMLNodes, checkURL } from "../utils/StringUtils";
|
import { removeHTMLNodes, checkURL } from "../utils/StringUtils";
|
||||||
import { findKey } from "../utils/ArrayUtils";
|
import { findKey } from "../utils/ArrayUtils";
|
||||||
import { checkVirtualDirectoryAvailability, VirtualDirType } from "../utils/VirtualDirsUtils";
|
import { checkVirtualDirectoryAvailability, VirtualDirType } from "../utils/VirtualDirsUtils";
|
||||||
|
import { NotificationsUtils } from "../utils/NotificationsUtils";
|
||||||
|
import { NotifEventType } from "../entities/Notification";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Groups API controller
|
* Groups API controller
|
||||||
@ -303,7 +305,9 @@ export class GroupsController {
|
|||||||
|
|
||||||
await GroupsHelper.SendInvitation(groupID, userID);
|
await GroupsHelper.SendInvitation(groupID, userID);
|
||||||
|
|
||||||
// TODO : Create a notification
|
// Create a notification
|
||||||
|
await NotificationsUtils.CreateGroupMembershipNotification(
|
||||||
|
userID, h.getUserId(), groupID, NotifEventType.SENT_GROUP_MEMBERSHIP_INVITATION)
|
||||||
|
|
||||||
h.success("The user has been successfully invited to join the group!");
|
h.success("The user has been successfully invited to join the group!");
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ export interface NotifBuilder {
|
|||||||
id ?: number,
|
id ?: number,
|
||||||
timeCreate ?: number,
|
timeCreate ?: number,
|
||||||
seen ?: boolean,
|
seen ?: boolean,
|
||||||
fromUserID: number,
|
fromUserID ?: number,
|
||||||
destUserID ?: number,
|
destUserID ?: number,
|
||||||
onElemID ?: number,
|
onElemID ?: number,
|
||||||
onElemType: NotifElemType,
|
onElemType: NotifElemType,
|
||||||
@ -65,7 +65,7 @@ export class Notif implements NotifBuilder {
|
|||||||
id ?: number;
|
id ?: number;
|
||||||
timeCreate ?: number;
|
timeCreate ?: number;
|
||||||
seen ?: boolean;
|
seen ?: boolean;
|
||||||
fromUserID: number;
|
fromUserID ?: number;
|
||||||
destUserID ?: number;
|
destUserID ?: number;
|
||||||
onElemID ?: number;
|
onElemID ?: number;
|
||||||
onElemType: NotifElemType;
|
onElemType: NotifElemType;
|
||||||
|
@ -113,7 +113,30 @@ export class NotificationsHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO : continue
|
// Groups membership notifications
|
||||||
|
else if (n.onElemType == NotifElemType.GROUP_MEMBERSHIP) {
|
||||||
|
|
||||||
|
// Complete the notification
|
||||||
|
n.fromContainerType = NotifElemType.EMPTY;
|
||||||
|
n.fromContainerID = 0;
|
||||||
|
|
||||||
|
// Check whether the notification has to be pushed to a single user
|
||||||
|
// or to all the moderators of the group
|
||||||
|
if(n.hasDestUserID) {
|
||||||
|
|
||||||
|
//Push the notification in private way (if it has a destination,
|
||||||
|
//generally the target user of the membership request)
|
||||||
|
await this.PushPrivate(n);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
|
||||||
|
// Push the notification to all the moderators of the group
|
||||||
|
throw new Error("//TODO Push notification to all members of the group");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Unsupported notification type
|
// Unsupported notification type
|
||||||
else {
|
else {
|
||||||
|
@ -70,4 +70,38 @@ export class NotificationsUtils {
|
|||||||
fromUserID: userOne,
|
fromUserID: userOne,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create & push a group membership notification
|
||||||
|
*
|
||||||
|
* @param userID The ID of the target user for the membership
|
||||||
|
* @param moderatorID The ID of the moderator creating the notification (0 if it is the user)
|
||||||
|
* @param groupID The ID of the target group
|
||||||
|
* @param kind The kind of notification to create
|
||||||
|
*/
|
||||||
|
public static async CreateGroupMembershipNotification(userID: number, moderatorID: number, groupID: number, kind: NotifEventType) {
|
||||||
|
// TODO : Delete all previous notifications
|
||||||
|
|
||||||
|
const n = new Notif({
|
||||||
|
onElemID: groupID,
|
||||||
|
onElemType: NotifElemType.GROUP_MEMBERSHIP,
|
||||||
|
type: kind
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// The notification must be sent to all the moderators of the group
|
||||||
|
if(moderatorID < 1) {
|
||||||
|
n.fromUserID = userID;
|
||||||
|
n.destUserID = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We specify both the source and the destination of the notification
|
||||||
|
// not to broadcast the notification to all the group members
|
||||||
|
else {
|
||||||
|
n.fromUserID = moderatorID;
|
||||||
|
n.destUserID = userID;
|
||||||
|
}
|
||||||
|
|
||||||
|
await NotificationsHelper.Push(n);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user