LCOV - code coverage report
Current view: top level - lib\data\local\dao\chatwoot_user_dao.dart - chatwoot_user_dao.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 31 32 96.9 %
Date: Thu Jul 15 17:16:16 2021 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:chatwoot_client_sdk/data/local/entity/chatwoot_user.dart';
       2             : import 'package:hive_flutter/hive_flutter.dart';
       3             : 
       4             : abstract class ChatwootUserDao {
       5             :   Future<void> saveUser(ChatwootUser user);
       6             :   ChatwootUser? getUser();
       7             :   Future<void> deleteUser();
       8             :   Future<void> onDispose();
       9             :   Future<void> clearAll();
      10             : }
      11             : 
      12             : //Only used when persistence is enabled
      13          19 : enum ChatwootUserBoxNames { USERS, CLIENT_INSTANCE_TO_USER }
      14             : 
      15             : class PersistedChatwootUserDao extends ChatwootUserDao {
      16             :   //box containing chat users
      17             :   Box<ChatwootUser> _box;
      18             :   //box with one to one relation between generated client instance id and user identifier
      19             :   final Box<String> _clientInstanceIdToUserIdentifierBox;
      20             : 
      21             :   final String _clientInstanceKey;
      22             : 
      23           2 :   PersistedChatwootUserDao(this._box, this._clientInstanceIdToUserIdentifierBox,
      24             :       this._clientInstanceKey);
      25             : 
      26             :   @override
      27           1 :   Future<void> deleteUser() async {
      28             :     final userIdentifier =
      29           3 :         _clientInstanceIdToUserIdentifierBox.get(_clientInstanceKey);
      30           4 :     await _clientInstanceIdToUserIdentifierBox.delete(_clientInstanceKey);
      31           3 :     await _box.delete(userIdentifier);
      32             :   }
      33             : 
      34             :   @override
      35           1 :   Future<void> saveUser(ChatwootUser user) async {
      36           3 :     await _clientInstanceIdToUserIdentifierBox.put(
      37           3 :         _clientInstanceKey, user.identifier.toString());
      38           4 :     await _box.put(user.identifier, user);
      39             :   }
      40             : 
      41           1 :   @override
      42             :   ChatwootUser? getUser() {
      43           4 :     if (_box.values.length == 0) {
      44             :       return null;
      45             :     }
      46             :     final userIdentifier =
      47           3 :         _clientInstanceIdToUserIdentifierBox.get(_clientInstanceKey);
      48             : 
      49           2 :     return _box.get(userIdentifier);
      50             :   }
      51             : 
      52             :   @override
      53           0 :   Future<void> onDispose() async {}
      54             : 
      55             :   @override
      56           1 :   Future<void> clearAll() async {
      57           3 :     await _box.clear();
      58           3 :     await _clientInstanceIdToUserIdentifierBox.clear();
      59             :   }
      60             : 
      61           3 :   static Future<void> openDB() async {
      62          12 :     await Hive.openBox<ChatwootUser>(ChatwootUserBoxNames.USERS.toString());
      63           9 :     await Hive.openBox<String>(
      64           3 :         ChatwootUserBoxNames.CLIENT_INSTANCE_TO_USER.toString());
      65             :   }
      66             : }
      67             : 
      68             : class NonPersistedChatwootUserDao extends ChatwootUserDao {
      69             :   ChatwootUser? _user;
      70             : 
      71             :   @override
      72           1 :   Future<void> deleteUser() async {
      73           1 :     _user = null;
      74             :   }
      75             : 
      76           1 :   @override
      77             :   ChatwootUser? getUser() {
      78           1 :     return _user;
      79             :   }
      80             : 
      81             :   @override
      82           1 :   Future<void> onDispose() async {
      83           1 :     _user = null;
      84             :   }
      85             : 
      86             :   @override
      87           1 :   Future<void> saveUser(ChatwootUser user) async {
      88           1 :     _user = user;
      89             :   }
      90             : 
      91             :   @override
      92           1 :   Future<void> clearAll() async {
      93           1 :     _user = null;
      94             :   }
      95             : }

Generated by: LCOV version 1.15.alpha0w