updatePresence method

Future<void> updatePresence({
  1. required String uid,
  2. required bool isOnline,
  3. Function? onSuccess,
  4. Function? onError,
})

Updates the user's presence status and sets an onDisconnect behavior.

Implementation

Future<void> updatePresence(
    {required String uid,
    required bool isOnline,
    Function? onSuccess,
    Function? onError}) async {
  final userRef = _presenceRef.child(uid);
  try {
    if (isOnline) {
      // Ensure previous `onDisconnect` is canceled in case of reconnection
      await userRef.onDisconnect().cancel();
      // Set new `onDisconnect` behavior
      await userRef.onDisconnect().update(_offlineStatus);
    }
    onSuccess?.call();

    // Update the presence status in real-time
    await userRef.update(isOnline ? _onlineStatus : _offlineStatus);
  } catch (e) {
    onError?.call(e);
  }
}