1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-26 15:29:22 +00:00
comunicapiv2/src/controllers/NotificationsController.ts

76 lines
1.8 KiB
TypeScript

import { RequestHandler } from "../entities/RequestHandler";
import { NotificationsHelper } from "../helpers/NotificationsHelper";
import { ConversationsHelper } from "../helpers/ConversationsHelper";
import { FriendsHelper } from "../helpers/FriendsHelper";
import { Notif } from "../entities/Notification";
/**
* Notifications controller
*
* @author Pierre HUBERT
*/
export class NotificationsController {
/**
* Get the number of unread notifications
*
* @param h Request handler
*/
public static async CountUnread(h: RequestHandler) {
h.send({
number: await NotificationsHelper.CountUnread(h.getUserId())
});
}
/**
* Count the entire number of unread notifications
*
* @param h Request handler
*/
public static async CountAllNews(h: RequestHandler) {
let data = {
notifications: await NotificationsHelper.CountUnread(h.getUserId()),
conversations: await ConversationsHelper.CountUnreadForUser(h.getUserId())
}
if(h.postBool("friends_request", false))
data["friends_requests"] = await FriendsHelper.CountRequests(h.getUserId());
// TODO : add pending calls
h.send(data);
}
/**
* Get the list of unread notifications
*
* @param h Request handler
*/
public static async GetListUnread(h: RequestHandler) {
const list = await NotificationsHelper.GetListUnread(h.getUserId());
h.send(list.map(this.NotifToAPI));
}
/**
* Transform a notification into an API entry
*
* @param n The notification to transform
*/
private static NotifToAPI(n: Notif) : Object {
return {
id: n.id,
time_create: n.timeCreate,
seen: n.seen,
from_user_id: n.fromUserID,
dest_user_id: n.destUserID,
on_elem_id: n.onElemID,
on_elem_type: n.onElemType,
type: n.type,
event_visibility: n.eventVisibility,
from_container_id: n.fromContainerID,
from_container_type: n.fromContainerType
};
}
}