updateMetaData method
Implementation
@override
Future<CurrentUser> updateMetaData(Metadata metadata) async {
try {
final userMetadata = metadata.userMetadata as Map<String, dynamic>;
final sanitizedMetadata = userMetadata.map((key, value) {
if (value is bool || value is String || value is num) {
return MapEntry(key, value);
} else {
throw ArgumentError("Invalid value type for key $key: ${value.runtimeType}");
}
});
final jsUserMetadata = js_util.jsify(sanitizedMetadata);
final resultPromise = passage.currentUser.updateMetadata(jsUserMetadata);
final jsObject = await js_util.promiseToFuture(resultPromise);
return CurrentUser.fromJson(jsObject);
} catch (e) {
throw PassageError.fromObject(
object: e,
overrideCode: PassageErrorCode.metadataError,
);
}
}