mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Ready to implement the list of notifications
This commit is contained in:
78
lib/helpers/notifications_helper.dart
Normal file
78
lib/helpers/notifications_helper.dart
Normal file
@ -0,0 +1,78 @@
|
||||
import 'package:comunic/lists/notifications_list.dart';
|
||||
import 'package:comunic/models/api_request.dart';
|
||||
import 'package:comunic/models/notification.dart';
|
||||
|
||||
/// Notifications helper
|
||||
///
|
||||
/// @author Pierre HUBERT
|
||||
|
||||
const _NotificationElementTypeAPImapping = {
|
||||
"user_page": NotificationElementType.USER_PAGE,
|
||||
"group_page": NotificationElementType.GROUP_PAGE,
|
||||
"conversation": NotificationElementType.CONVERSATION,
|
||||
"conversation_message": NotificationElementType.CONVERSATION_MESSAGE,
|
||||
"post": NotificationElementType.POST,
|
||||
"post_text": NotificationElementType.POST_TEXT,
|
||||
"post_img": NotificationElementType.POST_IMAGE,
|
||||
"post_youtube": NotificationElementType.POST_YOUTUBE,
|
||||
"post_movie": NotificationElementType.POST_MOVIE,
|
||||
"post_weblink": NotificationElementType.POST_WEBLINK,
|
||||
"post_pdf": NotificationElementType.POST_PDF,
|
||||
"post_timer": NotificationElementType.POST_TIMER,
|
||||
"post_survey": NotificationElementType.POST_SURVEY,
|
||||
"comment": NotificationElementType.COMMENT,
|
||||
"friend_request": NotificationElementType.FRIENDSHIP_REQUEST,
|
||||
"group_membership": NotificationElementType.GROUP_MEMBERSHIP,
|
||||
};
|
||||
|
||||
const _NotificationsTypeAPImapping = {
|
||||
"comment_created": NotificationType.COMMENT_CREATED,
|
||||
"sent_friend_request": NotificationType.SENT_FRIEND_REQUEST,
|
||||
"accepted_friend_request": NotificationType.ACCEPTED_FRIEND_REQUEST,
|
||||
"rejected_friend_request": NotificationType.REJECTED_FRIEND_REQUEST,
|
||||
"elem_created": NotificationType.ELEM_CREATED,
|
||||
"elem_updated": NotificationType.ELEM_UPDATED,
|
||||
"sent_group_membership_invitation":
|
||||
NotificationType.SENT_GROUP_MEMBERSHIP_INVITATION,
|
||||
"accepted_group_membership_invitation":
|
||||
NotificationType.ACCEPTED_GROUP_MEMBERSHIP_INVITATION,
|
||||
"rejected_group_membership_invitation":
|
||||
NotificationType.REJECTED_GROUP_MEMBERSHIP_INVITATION,
|
||||
"sent_group_membership_request":
|
||||
NotificationType.SENT_GROUP_MEMBERSHIP_REQUEST,
|
||||
"accepted_group_membership_request":
|
||||
NotificationType.ACCEPTED_GROUP_MEMBERSHIP_REQUEST,
|
||||
"rejected_group_membership_request":
|
||||
NotificationType.REJECTED_GROUP_MEMBERSHIP_REQUEST,
|
||||
};
|
||||
|
||||
class NotificationsHelper {
|
||||
/// Get the list of unread notifications of the user
|
||||
Future<NotificationsList> getUnread() async {
|
||||
final response =
|
||||
await APIRequest(uri: "notifications/get_list_unread", needLogin: true)
|
||||
.exec();
|
||||
|
||||
if (!response.isOK)
|
||||
throw Exception("Could not get the list of notifications!");
|
||||
|
||||
// Parse the list of notifications
|
||||
return NotificationsList()
|
||||
..addAll(response
|
||||
.getArray()
|
||||
.map((f) => Notification(
|
||||
id: f["id"],
|
||||
timeCreate: f["time_create"],
|
||||
seen: f["seen"],
|
||||
fromUser: f["from_user_id"],
|
||||
onElemId: f["on_elem_id"],
|
||||
onElemType: _NotificationElementTypeAPImapping[f["on_elem_type"]],
|
||||
type: _NotificationsTypeAPImapping[f["type"]],
|
||||
fromContainerId: f["from_container_id"],
|
||||
fromContainerType: f["from_container_type"] == ""
|
||||
? null
|
||||
: _NotificationElementTypeAPImapping[
|
||||
f["from_container_type"]]))
|
||||
.toList());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user