fetchCurrentPresence method
The newest presence of this user if there is any. Fetches it from the database first and then from the server if necessary or returns offline.
Implementation
Future<CachedPresence> fetchCurrentPresence(
String userId, {
bool fetchOnlyFromCached = false,
}) async {
// ignore: deprecated_member_use_from_same_package
final cachedPresence = presences[userId];
if (cachedPresence != null) {
return cachedPresence;
}
final dbPresence = await database?.getPresence(userId);
// ignore: deprecated_member_use_from_same_package
if (dbPresence != null) return presences[userId] = dbPresence;
if (fetchOnlyFromCached) return CachedPresence.neverSeen(userId);
try {
final result = await getPresence(userId);
final presence = CachedPresence.fromPresenceResponse(result, userId);
await database?.storePresence(userId, presence);
// ignore: deprecated_member_use_from_same_package
return presences[userId] = presence;
} catch (e) {
final presence = CachedPresence.neverSeen(userId);
await database?.storePresence(userId, presence);
// ignore: deprecated_member_use_from_same_package
return presences[userId] = presence;
}
}