updatePresence method
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);
}
}