mirror of
https://gitlab.com/comunic/comunicapiv2
synced 2024-11-26 15:29:22 +00:00
76 lines
1.8 KiB
TypeScript
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
|
|
};
|
|
}
|
|
} |