ArchethicDAppClient.auto constructor

ArchethicDAppClient.auto({
  1. required RequestOrigin origin,
  2. required String replyBaseUrl,
})

Creates a Deeplink or Websocket client according to current Platform capabilities.

Implementation

factory ArchethicDAppClient.auto({
  required RequestOrigin origin,
  required String replyBaseUrl,
}) {
  final transportMethodsReport = ArchethicDAppTransportMethodsReport.check();

  log('''
[Transport methods check]
$transportMethodsReport
    ''');

  if (transportMethodsReport.webBrowserExtension) {
    log('Using Web browser extension');
    return ArchethicDAppClient.webBrowserExtension(origin: origin);
  }

  if (transportMethodsReport.messageChannel) {
    log('Using Message Channel');
    return ArchethicDAppClient.messageChannel(origin: origin);
  }

  if (transportMethodsReport.websocket) {
    log('Using WebSocket');
    return ArchethicDAppClient.websocket(origin: origin);
  }

  if (transportMethodsReport.deeplink) {
    log('Using Deeplink');
    return ArchethicDAppClient.deeplink(
      origin: origin,
      replyBaseUrl: replyBaseUrl,
    );
  }

  throw Exception(
    'No ArchethicDAppClient implementation for your current operating system ${Platform.operatingSystem}',
  );
}