crossmintRecoverySignerLocator function

String? crossmintRecoverySignerLocator(
  1. CrossmintWallet wallet
)

Implementation

String? crossmintRecoverySignerLocator(CrossmintWallet wallet) {
  final Object? config = wallet.raw['config'];
  if (config is! Map<Object?, Object?>) {
    return null;
  }
  final Object? adminSigner = config['adminSigner'];
  if (adminSigner is! Map<Object?, Object?>) {
    return null;
  }
  final CrossmintJsonMap normalized = crossmintNormalizeMap(adminSigner);
  final String type = crossmintRequireString(
    normalized['type'],
    'wallet recovery signer type',
  );
  return switch (type) {
    'email' =>
      _trimmedLocatorOrNull(normalized['locator']) ?? _emailLocator(normalized),
    'phone' =>
      _trimmedLocatorOrNull(normalized['locator']) ?? _phoneLocator(normalized),
    'external-wallet' =>
      _trimmedLocatorOrNull(normalized['locator']) ??
          _externalWalletLocator(normalized),
    'server' || 'api-key' => _trimmedLocatorOrNull(normalized['locator']),
    _ => _trimmedLocatorOrNull(normalized['locator']),
  };
}