Files
Qlyra/lib/core/cache/self_presence.dart
sevenhill f74057ce9b
Build Android (FCM) / build-android-fcm (push) Canceled after 0s
Build Android / build-android (push) Canceled after 0s
Build iOS / build-ios (push) Canceled after 0s
Build Linux / build-linux (push) Canceled after 0s
Build macOS / build-macos (push) Canceled after 0s
Build Windows / build-windows (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s
Rebrand application as Qlyra
2026-08-30 13:16:17 +03:00

33 lines
832 B
Dart

import 'package:flutter/foundation.dart';
class SelfPresence {
static final ValueNotifier<bool> isOnline = ValueNotifier(true);
static final ValueNotifier<int?> lastSeenSeconds = ValueNotifier(null);
static int get _nowSeconds => DateTime.now().millisecondsSinceEpoch ~/ 1000;
static void markOnline() {
isOnline.value = true;
}
static void markOffline() {
isOnline.value = false;
}
static void markOfflineFromPing() {
if (isOnline.value || lastSeenSeconds.value == null) {
lastSeenSeconds.value = _nowSeconds;
}
isOnline.value = false;
}
static void applySelfCheck({required bool online, int? seenSeconds}) {
if (online) {
isOnline.value = true;
} else {
isOnline.value = false;
if (seenSeconds != null) lastSeenSeconds.value = seenSeconds;
}
}
}