123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- import 'notification.m.dart';
- typedef _ModelBuilder<T> = T Function(Map<String, dynamic> map);
- class NotificationDecoder {
- NotificationDecoder._();
- static final _builders = _ModelBuilderCollection();
- static T decode<T>(Map<String, dynamic> map) {
- final type = decodeType(map);
- final builder = _builders.find(type);
- final model = builder.call(map) as T;
- return model;
- }
- static NotificationTypeEnum decodeType(Map<String, dynamic> map) {
- final typeInt = map['NotificationType'] as int;
- return NotificationTypeEnum.values[typeInt];
- }
- static void setup() {
- /** Register notification model builders here */
- _builders.add(NotificationTypeEnum.AnnouncementPublishNotification,
- (map) => AnnouncementNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.ChatMsgNotification,
- (map) => ChatMsgNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.ConnectionNotification,
- (map) => ConnectionNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.DisconnectNotification,
- (map) => DisconnectNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.ExamRecordsFinishedNotification,
- (map) => ExamRecordsFinishedNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.PasswordExpiredWarningNotification,
- (map) => PasswordExpiredWarningNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.TokenReplacedNotification,
- (map) => TokenReplacedNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.ApplyConsultationNotification,
- (map) => ApplyConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.ApprovalApplyConsultationNotification,
- (map) => ApprovalApplyConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.ConsultationRemindNotification,
- (map) => ConsultationRemindNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.InviteeApproveApplyConsultationNotification,
- (map) => InviteeApproveApplyConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.InviteeConsultationNotification,
- (map) => InviteeConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.InviteeRejectApplyConsultationNotification,
- (map) => InviteeRejectApplyConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.RejectApplyConsultationNotification,
- (map) => RejectApplyConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.AcceptLiveConsultationNotification,
- (map) => AcceptLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.CancelInvitingInLiveConsultationNotification,
- (map) => CancelInvitingInLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.CancelLiveConsultationNotification,
- (map) => CancelLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.CloseLiveConsultationNotification,
- (map) => CloseLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.CancelLiveConsultationToDeviceNotification,
- (map) => CancelLiveConsultationToDeviceNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.CloseLiveConsultationToDeviceNotification,
- (map) => CloseLiveConsultationToDeviceNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.HeartRateJoinConsultationNotification,
- (map) => HeartRateJoinConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.HeartRateLeaveConsultationNotification,
- (map) => HeartRateLeaveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.InviteLiveConsultationNotification,
- (map) => InviteLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.InviteInLiveConsultationNotification,
- (map) => InviteInLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.JoinInLiveConsultationNotification,
- (map) => JoinInLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.RejectInviteLiveConsultationNotification,
- (map) => RejectInviteLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.InviteLiveConsultationToDeviceNotification,
- (map) => InviteLiveConsultationToDeviceNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.JoinLiveConsultationNotification,
- (map) => JoinLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.LeaveConsultationNotification,
- (map) => LeaveLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.MuteLiveConsultationNotification,
- (map) => MuteLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.NetworkErrConsultationNotification,
- (map) => NetworkErrConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.RejectLiveConsultationNotification,
- (map) => RejectLiveConsultationNotification.fromJson(map));
- _builders.add(NotificationTypeEnum.SwitchLiveConsultationVideoNotification,
- (map) => SwitchLiveConsultationVideoNotification.fromJson(map));
- }
- }
- class _ModelBuilderCollection {
- final Map<NotificationTypeEnum, _ModelBuilder> _source = {};
- void add(NotificationTypeEnum type, _ModelBuilder builder) {
- _source[type] = builder;
- }
- _ModelBuilder find(NotificationTypeEnum type) {
- final builder = _source[type];
- return builder!;
- }
- }
|