refactored chat data fetching to support separate cache and network callbacks
This commit is contained in:
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user