refactored chat data fetching to support separate cache and network callbacks

This commit is contained in:
2026-05-07 09:46:30 +02:00
parent 517e515ac1
commit 710e88d744
3 changed files with 27 additions and 24 deletions
@@ -2,26 +2,18 @@ import '../../../../../api/marianumcloud/talk/chat/get_chat_cache.dart';
import '../../../../../api/marianumcloud/talk/chat/get_chat_response.dart';
class ChatDataProvider {
Future<GetChatResponse> getChat({
Future<void> getChat({
required String token,
void Function(GetChatResponse data)? onUpdate,
void Function(GetChatResponse data)? onCacheData,
void Function(GetChatResponse data)? onNetworkData,
void Function(Object)? onError,
}) async {
GetChatResponse? latest;
Object? capturedError;
final cache = GetChatCache(
chatToken: token,
onUpdate: (data) {
latest = data;
onUpdate?.call(data);
},
onError: (e) {
capturedError = e;
onError?.call(e);
},
onCacheData: onCacheData,
onNetworkData: onNetworkData,
onError: (e) => onError?.call(e),
);
await cache.ready;
if (latest != null) return latest!;
throw capturedError ?? Exception('No data and no error from getChat');
}
}