changeIdWithBatch method

  1. @protected
Future<void> changeIdWithBatch({
  1. required ProviderModelBatch batch,
  2. required String? id,
  3. Map<String, Object?>? properties,
  4. Map<String, Object?>? data,
  5. Map<Type, String?>? overrideId,
  6. Map<Type, Map<String, Object?>>? overrideProperties,
})

Sets the user's id and various values using the provided ProviderModelBatch.

Implementation

@protected
Future<void> changeIdWithBatch({
  required ProviderModelBatch batch,
  required String? id,
  Map<String, Object?>? properties,
  Map<String, Object?>? data,
  Map<Type, String?>? overrideId,
  Map<Type, Map<String, Object?>>? overrideProperties,
}) async {
  _logger.fine('changeId:$id, $properties, $data');

  batch.set(_id, id);

  _idOverrides.clear();

  if (overrideId != null) {
    for (var i in overrideId.entries) {
      _idOverrides[i.key] = i.value;
    }
  }

  // notify listeners to remove old properties.
  final tOldProperties = {for (var i in batch.get(_properties).keys) i: null};

  final tProperties = _CompareMap(tOldProperties);

  if (properties != null) {
    tProperties.addAll(properties);
  }

  batch.set(_properties, tProperties);

  if (data != null) {
    batch.set(_data, _CompareMap(data));
  }

  _propertiesOverrides.clear();

  if (overrideProperties != null) {
    for (var i in overrideProperties.entries) {
      _propertiesOverrides[i.key] ??= _CompareMap();
      _propertiesOverrides[i.key]!.addAll(i.value);
    }
  }

  await _runSynchronousChangeListeners(batch);

  await app.remoteConfig.fetch(force: true);
}