connect method

  1. @override
Future<void> connect({
  1. String? chainId,
})
override

Implementation

@override
Future<void> connect({String? chainId}) async {
  await _checkInstalled();
  try {
    final solanaNets = ReownAppKitModalNetworks.getAllSupportedNetworks(
      namespace: NetworkUtils.solana,
    ).where((c) => !c.isTestNetwork);
    if (solanaNets.isEmpty) {
      throw ThirdPartyWalletUnsupportedChains(
        walletName: walletMetadata.metadata.name,
      );
    }

    _selectedChainId = chainId ?? solanaNets.first.chainId;

    final namespace = NamespaceUtils.getNamespaceFromChain(_selectedChainId!);
    if (namespace != NetworkUtils.solana) {
      _selectedChainId = solanaNets.first.chainId;
    }

    final selectedCluster = PhantomUtils.walletClusters[_selectedChainId];
    final phantomUri = _phantomHelper.buildConnectionUri(
      cluster: selectedCluster,
    );
    await ReownCoreUtils.openURL(phantomUri.toString());
  } catch (e, s) {
    if (e is ThirdPartyWalletException) {
      _core.logger.e('[$runtimeType] ${e.message}', stackTrace: s);
      rethrow;
    }

    final errorMessage = '${walletMetadata.metadata.name} connect error';
    _core.logger.e('[$runtimeType] $errorMessage', error: e, stackTrace: s);
    onPhantomError.broadcast(PhantomErrorEvent(-1, errorMessage));
    throw ThirdPartyWalletException(errorMessage, e, s);
  }
}