crossmintRecoverySignerLocator function
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']),
};
}