setUserId method

Future<void> setUserId(
  1. String userId, {
  2. String? userHash,
})

Buffered until the services exist — not merely until initialize has been called: a host's unawaited initialize() followed by setUserId() lands while they are still being built (review B6).

Implementation

Future<void> setUserId(String userId, {String? userHash}) async {
  _log.i('setUserId (userId=$userId, userHash=${userHash != null})');
  final services = _services;
  if (services == null) {
    // A blank ID is ignored here exactly as it is after init, so it can't
    // replace a buffered clear with a no-op.
    if (userId.trim().isEmpty) return;
    _pendingClearUserId = false;
    _pendingUserId = userId;
    _pendingUserHash = userHash;
    return;
  }
  await _applyUserId(services, userId, userHash: userHash);
}