connect method
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);
}
}