From a5a8cedee3a9677bde2a287ebccb8170460f8e27 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 22 Dec 2023 21:55:40 +0100 Subject: [PATCH] feat: Make possible to fetch presence from database only --- lib/src/client.dart | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/src/client.dart b/lib/src/client.dart index dee3b12bc..a752e7ec0 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -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 fetchCurrentPresence(String userId) async { + Future fetchCurrentPresence( + String userId, { + bool fetchOnlyFromCached = false, + }) async { // ignore: deprecated_member_use_from_same_package final cachedPresence = presences[userId]; if (cachedPresence != null) { @@ -2984,6 +2987,8 @@ 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); @@ -2991,7 +2996,10 @@ class Client extends MatrixApi { // 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; } }