connect method

  1. @override
Future<void> connect()
inherited

Implementation

@override
Future<void> connect() async {
  if (_client != null && !_client!.isClosed) {
    log(
      'Connection already opened. Connection abort.',
      name: logName,
    );
    return;
  }
  log(
    'Opening connection',
    name: logName,
  );
  _connectionStateController.add(
    const ArchethicDappConnectionState.connecting(),
  );

  _channel = await _connect();

  log(
    'Connection opened',
    name: logName,
  );
  _connectionStateController.add(
    const ArchethicDappConnectionState.connected(),
  );

  final client = Peer(_channel!.cast<String>());
  client.registerMethod(
    'addSubscriptionNotification',
    (params) {
      log('Received value');
      _subscriptionValues.add(
        SubscriptionUpdate.fromJson(params.value),
      );
    },
  );

  _client = client;
  unawaited(
    client.listen().then(
      (value) {
        log(
          'Connection closed',
          name: logName,
        );
        _connectionStateController.add(
          const ArchethicDappConnectionState.disconnected(),
        );
      },
    ),
  );
}