52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
		
			Executable File
		
	
	
	
	
| import 'package:flutter/material.dart';
 | |
| import 'package:json_annotation/json_annotation.dart';
 | |
| 
 | |
| part 'notification.g.dart';
 | |
| 
 | |
| const Map<String, IconData> NotificationTopicIcons = {
 | |
|   'passport.security.alert': Icons.gpp_maybe,
 | |
|   'interactive.subscription': Icons.subscriptions,
 | |
|   'interactive.feedback': Icons.add_reaction,
 | |
|   'messaging.callStart': Icons.call_received,
 | |
| };
 | |
| 
 | |
| @JsonSerializable()
 | |
| class Notification {
 | |
|   int id;
 | |
|   DateTime createdAt;
 | |
|   DateTime updatedAt;
 | |
|   DateTime? deletedAt;
 | |
|   DateTime? readAt;
 | |
|   String topic;
 | |
|   String title;
 | |
|   String? subtitle;
 | |
|   String body;
 | |
|   String? avatar;
 | |
|   String? picture;
 | |
|   Map<String, dynamic>? metadata;
 | |
|   int? senderId;
 | |
|   int accountId;
 | |
| 
 | |
|   Notification({
 | |
|     required this.id,
 | |
|     required this.createdAt,
 | |
|     required this.updatedAt,
 | |
|     required this.deletedAt,
 | |
|     required this.readAt,
 | |
|     required this.topic,
 | |
|     required this.title,
 | |
|     required this.subtitle,
 | |
|     required this.body,
 | |
|     required this.avatar,
 | |
|     required this.picture,
 | |
|     required this.metadata,
 | |
|     required this.senderId,
 | |
|     required this.accountId,
 | |
|   });
 | |
| 
 | |
|   factory Notification.fromJson(Map<String, dynamic> json) =>
 | |
|       _$NotificationFromJson(json);
 | |
| 
 | |
|   Map<String, dynamic> toJson() => _$NotificationToJson(this);
 | |
| }
 |