Skip to content

Commit

Permalink
feat: Make possible to fetch presence from database only
Browse files Browse the repository at this point in the history
  • Loading branch information
krille-chan committed Dec 27, 2023
1 parent 1314257 commit a5a8ced
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions lib/src/client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2973,7 +2973,10 @@ class Client extends MatrixApi {

/// 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.
Future<CachedPresence> fetchCurrentPresence(String userId) async {
Future<CachedPresence> fetchCurrentPresence(
String userId, {
bool fetchOnlyFromCached = false,
}) async {
// ignore: deprecated_member_use_from_same_package
final cachedPresence = presences[userId];
if (cachedPresence != null) {
Expand All @@ -2984,14 +2987,19 @@ class Client extends MatrixApi {
// 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) {
return CachedPresence.neverSeen(userId);
final presence = CachedPresence.neverSeen(userId);
await database?.storePresence(userId, presence);
// ignore: deprecated_member_use_from_same_package
return presences[userId] = presence;
}
}

Expand Down

0 comments on commit a5a8ced

Please sign in to comment.