LCOV - code coverage report
Current view: top level - manager - at_client_manager.dart (source / functions) Hit Total Coverage
Test: coverage.lcov Lines: 1 23 4.3 %
Date: 2022-01-19 17:54:05 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:at_client/at_client.dart';
       2             : import 'package:at_client/src/listener/at_sign_change_listener.dart';
       3             : import 'package:at_client/src/listener/switch_at_sign_event.dart';
       4             : import 'package:at_client/src/service/notification_service.dart';
       5             : import 'package:at_client/src/service/notification_service_impl.dart';
       6             : import 'package:at_client/src/service/sync_service.dart';
       7             : import 'package:at_client/src/service/sync_service_impl.dart';
       8             : 
       9             : /// Factory class for creating [AtClient], [SyncService] and [NotificationService] instances
      10             : ///
      11             : /// Usage
      12             : /// ```
      13             : /// final atClientManager = AtClientManager.getInstance().setCurrentAtSign(<current_atsign>, <app_namespace>, <preferences>)
      14             : /// Apps have to call the above method again while switching atsign.
      15             : /// ```
      16             : /// atClientManager.atClient - for at client method calls
      17             : /// atClientManager.syncService - for invoking sync. Refer [SyncService] for detailed usage
      18             : /// atClientManager.notificationService - for notification methods. Refer [NotificationService] for detailed usage
      19             : class AtClientManager {
      20             :   late String _atSign;
      21             :   AtClient? _previousAtClient;
      22             :   late AtClient _currentAtClient;
      23             : 
      24           0 :   AtClient get atClient => _currentAtClient;
      25             :   late SyncService syncService;
      26             :   late NotificationService notificationService;
      27             :   final _changeListeners = <AtSignChangeListener>[];
      28             : 
      29           0 :   static final AtClientManager _singleton = AtClientManager._internal();
      30             : 
      31           0 :   AtClientManager._internal();
      32             : 
      33           0 :   factory AtClientManager.getInstance() {
      34           0 :     return _singleton;
      35             :   }
      36             : 
      37           2 :   AtClientManager(_atSign);
      38             : 
      39           0 :   Future<AtClientManager> setCurrentAtSign(
      40             :       String atSign, String? namespace, AtClientPreference preference) async {
      41           0 :     if (_previousAtClient != null &&
      42           0 :         _previousAtClient?.getCurrentAtSign() == atSign) {
      43             :       return this;
      44             :     }
      45           0 :     _atSign = atSign;
      46           0 :     _currentAtClient = await AtClientImpl.create(_atSign, namespace, preference,
      47             :         atClientManager: this);
      48             :     final switchAtSignEvent =
      49           0 :         SwitchAtSignEvent(_previousAtClient, _currentAtClient);
      50           0 :     notificationService =
      51           0 :         await NotificationServiceImpl.create(_currentAtClient);
      52           0 :     syncService =
      53           0 :         await SyncServiceImpl.create(_currentAtClient, atClientManager: this);
      54           0 :     _previousAtClient = _currentAtClient;
      55           0 :     _notifyListeners(switchAtSignEvent);
      56             :     return this;
      57             :   }
      58             : 
      59           0 :   void listenToAtSignChange(AtSignChangeListener listener) {
      60           0 :     _changeListeners.add(listener);
      61             :   }
      62             : 
      63           0 :   void _notifyListeners(SwitchAtSignEvent switchAtSignEvent) {
      64           0 :     for (var listener in _changeListeners) {
      65           0 :       listener.listenToAtSignChange(switchAtSignEvent);
      66             :     }
      67             :   }
      68             : }

Generated by: LCOV version 1.13