addSigner method

  1. @override
Future<CrossmintWalletAddSignerResult> addSigner({
  1. required String walletId,
  2. required CrossmintSignerConfig signer,
  3. bool prepareOnly = false,
})
override

Implementation

@override
Future<CrossmintWalletAddSignerResult> addSigner({
  required String walletId,
  required CrossmintSignerConfig signer,
  bool prepareOnly = false,
}) async {
  final String resolvedChain = await _resolveWalletChainForSignerRegistration(
    walletId,
  );

  final CrossmintJsonMap response = await _service.registerSigner(
    walletId,
    _codec.serializeSignerRegistrationRequest(signer, chain: resolvedChain),
  );
  final CrossmintWalletSigner? signerState = _responseParser
      .walletSignerFromMap(response, chain: resolvedChain);
  if (signerState == null) {
    throw CrossmintWalletException(
      'Wallet signer registration did not return signer state for chain "$resolvedChain".',
      cause: response,
    );
  }

  return CrossmintWalletAddSignerResult(
    signer: signerState,
    signatureId: prepareOnly
        ? _responseParser.signatureIdFromSignerRegistration(
            response,
            chain: resolvedChain,
          )
        : null,
    transactionId: prepareOnly
        ? _responseParser.transactionIdFromSignerRegistration(
            response,
            chain: resolvedChain,
          )
        : null,
    raw: response,
  );
}