LCOV - code coverage report
Current view: top level - lib\data\remote\responses\chatwoot_event.dart - chatwoot_event.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 33 46 71.7 %
Date: Thu Jul 15 17:16:16 2021 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:chatwoot_client_sdk/chatwoot_client_sdk.dart';
       2             : import 'package:chatwoot_client_sdk/data/local/local_storage.dart';
       3             : import 'package:equatable/equatable.dart';
       4             : import 'package:hive/hive.dart';
       5             : import 'package:json_annotation/json_annotation.dart';
       6             : 
       7             : part 'chatwoot_event.g.dart';
       8             : 
       9             : @JsonSerializable(explicitToJson: true)
      10             : class ChatwootEvent {
      11             :   @JsonKey(toJson: eventTypeToJson, fromJson: eventTypeFromJson)
      12             :   final ChatwootEventType? type;
      13             : 
      14             :   @JsonKey()
      15             :   final String? identifier;
      16             : 
      17             :   @JsonKey(fromJson: eventMessageFromJson)
      18             :   final ChatwootEventMessage? message;
      19             : 
      20           1 :   ChatwootEvent({this.type, this.message, this.identifier});
      21             : 
      22           1 :   factory ChatwootEvent.fromJson(Map<String, dynamic> json) =>
      23           1 :       _$ChatwootEventFromJson(json);
      24             : 
      25           0 :   Map<String, dynamic> toJson() => _$ChatwootEventToJson(this);
      26             : }
      27             : 
      28           1 : ChatwootEventMessage? eventMessageFromJson(value) {
      29             :   if (value == null) {
      30             :     return null;
      31           1 :   } else if (value is num) {
      32           1 :     return ChatwootEventMessage();
      33           1 :   } else if (value is String) {
      34           0 :     return ChatwootEventMessage();
      35             :   } else {
      36           1 :     return ChatwootEventMessage.fromJson(value as Map<String, dynamic>);
      37             :   }
      38             : }
      39             : 
      40             : @JsonSerializable(explicitToJson: true)
      41             : class ChatwootEventMessage {
      42             :   @JsonKey()
      43             :   final ChatwootEventMessageData? data;
      44             : 
      45             :   @JsonKey(toJson: eventMessageTypeToJson, fromJson: eventMessageTypeFromJson)
      46             :   final ChatwootEventMessageType? event;
      47             : 
      48           1 :   ChatwootEventMessage({this.data, this.event});
      49             : 
      50           1 :   factory ChatwootEventMessage.fromJson(Map<String, dynamic> json) =>
      51           1 :       _$ChatwootEventMessageFromJson(json);
      52             : 
      53           0 :   Map<String, dynamic> toJson() => _$ChatwootEventMessageToJson(this);
      54             : }
      55             : 
      56             : @JsonSerializable(explicitToJson: true)
      57             : class ChatwootEventMessageData {
      58             :   @JsonKey(name: "account_id")
      59             :   final int? accountId;
      60             : 
      61             :   @JsonKey()
      62             :   final String? content;
      63             : 
      64             :   @JsonKey(name: "content_attributes")
      65             :   final dynamic contentAttributes;
      66             : 
      67             :   @JsonKey(name: "content_type")
      68             :   final String? contentType;
      69             : 
      70             :   @JsonKey(name: "conversation_id")
      71             :   final int? conversationId;
      72             : 
      73             :   @JsonKey(name: "created_at")
      74             :   final dynamic createdAt;
      75             : 
      76             :   @JsonKey(name: "echo_id")
      77             :   final String? echoId;
      78             : 
      79             :   @JsonKey(name: "external_source_ids")
      80             :   final dynamic externalSourceIds;
      81             : 
      82             :   @JsonKey()
      83             :   final int? id;
      84             : 
      85             :   @JsonKey(name: "inbox_id")
      86             :   final int? inboxId;
      87             : 
      88             :   @JsonKey(name: "message_type")
      89             :   final int? messageType;
      90             : 
      91             :   @JsonKey(name: "private")
      92             :   final bool? private;
      93             : 
      94             :   @JsonKey()
      95             :   final ChatwootEventMessageUser? sender;
      96             : 
      97             :   @JsonKey(name: "sender_id")
      98             :   final int? senderId;
      99             : 
     100             :   @JsonKey(name: "source_id")
     101             :   final String? sourceId;
     102             : 
     103             :   @JsonKey()
     104             :   final String? status;
     105             : 
     106             :   @JsonKey(name: "updated_at")
     107             :   final dynamic updatedAt;
     108             : 
     109             :   @JsonKey()
     110             :   final dynamic conversation;
     111             : 
     112             :   @JsonKey()
     113             :   final ChatwootEventMessageUser? user;
     114             : 
     115             :   @JsonKey()
     116             :   final dynamic users;
     117             : 
     118           1 :   ChatwootEventMessageData(
     119             :       {this.id,
     120             :       this.user,
     121             :       this.conversation,
     122             :       this.echoId,
     123             :       this.sender,
     124             :       this.conversationId,
     125             :       this.createdAt,
     126             :       this.contentAttributes,
     127             :       this.contentType,
     128             :       this.messageType,
     129             :       this.content,
     130             :       this.inboxId,
     131             :       this.sourceId,
     132             :       this.updatedAt,
     133             :       this.status,
     134             :       this.accountId,
     135             :       this.externalSourceIds,
     136             :       this.private,
     137             :       this.senderId,
     138             :       this.users});
     139             : 
     140           1 :   factory ChatwootEventMessageData.fromJson(Map<String, dynamic> json) =>
     141           1 :       _$ChatwootEventMessageDataFromJson(json);
     142             : 
     143           2 :   Map<String, dynamic> toJson() => _$ChatwootEventMessageDataToJson(this);
     144             : 
     145           1 :   getMessage() {
     146           2 :     return ChatwootMessage.fromJson(toJson());
     147             :   }
     148             : }
     149             : 
     150             : /// {@category FlutterClientSdk}
     151             : @HiveType(typeId: CHATWOOT_EVENT_USER_HIVE_TYPE_ID)
     152             : @JsonSerializable(explicitToJson: true)
     153             : class ChatwootEventMessageUser extends Equatable {
     154             :   @JsonKey(name: "avatar_url")
     155             :   @HiveField(0)
     156             :   final String? avatarUrl;
     157             : 
     158             :   @JsonKey()
     159             :   @HiveField(1)
     160             :   final int? id;
     161             : 
     162             :   @JsonKey()
     163             :   @HiveField(2)
     164             :   final String? name;
     165             : 
     166             :   @JsonKey()
     167             :   @HiveField(3)
     168             :   final String? thumbnail;
     169             : 
     170           4 :   ChatwootEventMessageUser(
     171             :       {this.id, this.avatarUrl, this.name, this.thumbnail});
     172             : 
     173           4 :   factory ChatwootEventMessageUser.fromJson(Map<String, dynamic> json) =>
     174           4 :       _$ChatwootEventMessageUserFromJson(json);
     175             : 
     176           0 :   Map<String, dynamic> toJson() => _$ChatwootEventMessageUserToJson(this);
     177             : 
     178           1 :   @override
     179           5 :   List<Object?> get props => [id, avatarUrl, name, thumbnail];
     180             : }
     181             : 
     182          15 : enum ChatwootEventType { welcome, ping, confirm_subscription }
     183             : 
     184           0 : String? eventTypeToJson(ChatwootEventType? actionType) {
     185           0 :   return actionType.toString();
     186             : }
     187             : 
     188           1 : ChatwootEventType? eventTypeFromJson(String? value) {
     189             :   switch (value) {
     190           1 :     case "welcome":
     191             :       return ChatwootEventType.welcome;
     192           1 :     case "ping":
     193             :       return ChatwootEventType.ping;
     194           1 :     case "confirm_subscription":
     195             :       return ChatwootEventType.confirm_subscription;
     196             :     default:
     197             :       return null;
     198             :   }
     199             : }
     200             : 
     201          15 : enum ChatwootEventMessageType {
     202             :   presence_update,
     203             :   message_created,
     204             :   conversation_typing_off,
     205             :   conversation_typing_on
     206             : }
     207             : 
     208           0 : String? eventMessageTypeToJson(ChatwootEventMessageType? actionType) {
     209             :   switch (actionType) {
     210           0 :     case null:
     211             :       return null;
     212           0 :     case ChatwootEventMessageType.conversation_typing_on:
     213             :       return "conversation.typing_on";
     214           0 :     case ChatwootEventMessageType.conversation_typing_off:
     215             :       return "conversation.typing_off";
     216           0 :     case ChatwootEventMessageType.presence_update:
     217             :       return "presence.update";
     218           0 :     case ChatwootEventMessageType.message_created:
     219             :       return "message.created";
     220             :     default:
     221           0 :       return actionType.toString();
     222             :   }
     223             : }
     224             : 
     225           1 : ChatwootEventMessageType? eventMessageTypeFromJson(String? value) {
     226             :   switch (value) {
     227           1 :     case "presence.update":
     228             :       return ChatwootEventMessageType.presence_update;
     229           1 :     case "message.created":
     230             :       return ChatwootEventMessageType.message_created;
     231           1 :     case "conversation.typing_on":
     232             :       return ChatwootEventMessageType.conversation_typing_on;
     233           1 :     case "conversation.typing_off":
     234             :       return ChatwootEventMessageType.conversation_typing_off;
     235             :     default:
     236             :       return null;
     237             :   }
     238             : }

Generated by: LCOV version 1.15.alpha0w