updateMetaData method

  1. @override
Future<CurrentUser> updateMetaData(
  1. Metadata metadata
)
override

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,
    );
  }
}