feat: Make possible to fetch presence from database only
This commit is contained in:
parent
a10da10d61
commit
b4607be5d0
|
|
@ -2973,7 +2973,10 @@ class Client extends MatrixApi {
|
||||||
|
|
||||||
/// The newest presence of this user if there is any. Fetches it from the
|
/// 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.
|
/// 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
|
// ignore: deprecated_member_use_from_same_package
|
||||||
final cachedPresence = presences[userId];
|
final cachedPresence = presences[userId];
|
||||||
if (cachedPresence != null) {
|
if (cachedPresence != null) {
|
||||||
|
|
@ -2984,6 +2987,8 @@ class Client extends MatrixApi {
|
||||||
// ignore: deprecated_member_use_from_same_package
|
// ignore: deprecated_member_use_from_same_package
|
||||||
if (dbPresence != null) return presences[userId] = dbPresence;
|
if (dbPresence != null) return presences[userId] = dbPresence;
|
||||||
|
|
||||||
|
if (fetchOnlyFromCached) return CachedPresence.neverSeen(userId);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final result = await getPresence(userId);
|
final result = await getPresence(userId);
|
||||||
final presence = CachedPresence.fromPresenceResponse(result, userId);
|
final presence = CachedPresence.fromPresenceResponse(result, userId);
|
||||||
|
|
@ -2991,7 +2996,10 @@ class Client extends MatrixApi {
|
||||||
// ignore: deprecated_member_use_from_same_package
|
// ignore: deprecated_member_use_from_same_package
|
||||||
return presences[userId] = presence;
|
return presences[userId] = presence;
|
||||||
} catch (e) {
|
} 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue