init method

  1. @override
Future<void> init()
override

Implementation

@override
Future<void> init() async {
  if (!_enabled) return;
  // Configure SDK for each platform
  _coinbaseWalletData =
      (await _explorerService.getCoinbaseWalletObject()) ??
      ReownAppKitModalWalletInfo(
        listing: CoinbaseUtils.defaultListingData,
        installed: false,
        recent: false,
      );

  final imageId = _coinbaseWalletData?.listing.imageId ?? '';
  _iconImage = _explorerService.getWalletImageUrl(imageId);

  final walletLink =
      (walletMetadata.metadata.redirect?.linkMode == true
          ? _coinbaseWalletData?.listing.linkMode
          : _coinbaseWalletData?.listing.mobileLink) ??
      '';

  final dappRedirect = _metadata.redirect;
  final callback = dappRedirect?.linkMode == true
      ? (dappRedirect?.universal ?? dappRedirect?.native ?? '')
      : (dappRedirect?.native ?? '');

  _core.logger.i(
    '[$runtimeType] init with host: $walletLink, callback: $callback',
  );

  if (callback.isNotEmpty || walletLink.isNotEmpty) {
    try {
      final config = Configuration(
        ios: IOSConfiguration(
          host: Uri.parse('${walletLink}wsegue'),
          callback: Uri.parse(callback),
        ),
        android: AndroidConfiguration(domain: Uri.parse(callback)),
      );
      await CoinbaseWalletSDK.shared.configure(config);
    } catch (_) {
      // Silent error
    }
  } else {
    _enabled = false;
    _core.logger.e('[$runtimeType] Initialization error');
    throw CoinbaseServiceException('Initialization error');
  }
}