connect method

  1. @override
Future<void> connect({
  1. required String userId,
  2. required String channelId,
  3. Map<String, dynamic>? metadata,
  4. String? displayName,
})
override

Marks userId as online in the given channel.

Implementation

@override
Future<void> connect({
  required String userId,
  required String channelId,
  Map<String, dynamic>? metadata,
  String? displayName,
}) async {
  final ref = _presenceRef(channelId, userId);

  final onlineRecord = <String, dynamic>{
    'userId': userId,
    if (displayName != null) 'displayName': displayName,
    'isOnline': true,
    'lastSeen': ServerValue.timestamp,
    if (metadata != null) 'metadata': metadata,
  };

  final offlineRecord = <String, dynamic>{
    'userId': userId,
    if (displayName != null) 'displayName': displayName,
    'isOnline': false,
    'lastSeen': ServerValue.timestamp,
    if (metadata != null) 'metadata': metadata,
  };

  await ref.onDisconnect().set(offlineRecord);
  await ref.set(onlineRecord);
}