Added support for force refresh without caching, using this system on chatList.dart
This commit is contained in:
		| @@ -1,4 +1,5 @@ | ||||
| import 'dart:convert'; | ||||
| import 'dart:developer'; | ||||
|  | ||||
| import 'package:marianum_mobile/api/marianumcloud/talk/chat/getChat.dart'; | ||||
| import 'package:marianum_mobile/api/marianumcloud/talk/chat/getChatParams.dart'; | ||||
| @@ -14,10 +15,13 @@ class GetChatCache extends RequestCache<GetChatResponse> { | ||||
|  | ||||
|   @override | ||||
|   Future<GetChatResponse> onLoad() { | ||||
|     log("LOAD"); | ||||
|     return GetChat( | ||||
|       chatToken, | ||||
|       GetChatParams( | ||||
|         lookIntoFuture: GetChatParamsSwitch.off | ||||
|         lookIntoFuture: GetChatParamsSwitch.off, | ||||
|         setReadMarker: GetChatParamsSwitch.on, | ||||
|         limit: 200, | ||||
|       ) | ||||
|     ).run(); | ||||
|   } | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| import 'dart:convert'; | ||||
| import 'dart:developer'; | ||||
|  | ||||
| import 'package:marianum_mobile/api/marianumcloud/talk/room/getRoomParams.dart'; | ||||
| import 'package:marianum_mobile/api/marianumcloud/talk/room/getRoomResponse.dart'; | ||||
| @@ -8,7 +7,7 @@ import 'package:marianum_mobile/api/requestCache.dart'; | ||||
| import 'getRoom.dart'; | ||||
|  | ||||
| class GetRoomCache extends RequestCache<GetRoomResponse> { | ||||
|   GetRoomCache({onUpdate}) : super(RequestCache.cacheMinute, onUpdate) { | ||||
|   GetRoomCache({onUpdate, renew}) : super(RequestCache.cacheMinute, onUpdate, renew: renew) { | ||||
|     start("MarianumMobile", "nc-rooms"); | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -10,8 +10,9 @@ abstract class RequestCache<T> { | ||||
|  | ||||
|   int maxCacheTime; | ||||
|   Function(T) onUpdate; | ||||
|   bool? renew; | ||||
|  | ||||
|   RequestCache(this.maxCacheTime, this.onUpdate); | ||||
|   RequestCache(this.maxCacheTime, this.onUpdate, {this.renew = false}); | ||||
|  | ||||
|   void start(String file, String document) async { | ||||
|     Map<String, dynamic>? tableData = await Localstore.instance.collection(file).doc(document).get(); | ||||
| @@ -20,7 +21,7 @@ abstract class RequestCache<T> { | ||||
|     } | ||||
|  | ||||
|     if(DateTime.now().millisecondsSinceEpoch - (maxCacheTime * 1000) < (tableData?['lastupdate'] ?? 0)) { | ||||
|       return; | ||||
|       if(renew == null || !renew!) return; | ||||
|     } | ||||
|  | ||||
|     T newValue = await onLoad(); | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| import 'dart:developer'; | ||||
|  | ||||
| import 'package:marianum_mobile/api/marianumcloud/talk/room/getRoomCache.dart'; | ||||
| import 'package:marianum_mobile/api/marianumcloud/talk/room/getRoomResponse.dart'; | ||||
| @@ -16,9 +15,9 @@ class ChatListProps extends DataHolder { | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   void run() { | ||||
|     log("RUN CACHE"); | ||||
|   void run({renew}) { | ||||
|     GetRoomCache( | ||||
|       renew: renew, | ||||
|       onUpdate: (GetRoomResponse data) => { | ||||
|         _getRoomResponse = data, | ||||
|         notifyListeners(), | ||||
|   | ||||
| @@ -93,7 +93,7 @@ class _ChatListState extends State<ChatList> { | ||||
|         return RefreshIndicator( | ||||
|           color: Theme.of(context).primaryColor, | ||||
|           onRefresh: () { | ||||
|             Provider.of<ChatListProps>(context, listen: false).run(); | ||||
|             Provider.of<ChatListProps>(context, listen: false).run(renew: true); | ||||
|             return Future.delayed(const Duration(seconds: 3)); | ||||
|           }, | ||||
|           child: ListView(children: chats), | ||||
|   | ||||
| @@ -1,4 +1,6 @@ | ||||
|  | ||||
| import 'dart:developer'; | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:marianum_mobile/data/timetable/timetableProps.dart'; | ||||
| import 'package:marianum_mobile/screen/pages/timetable/weekView.dart'; | ||||
| @@ -24,6 +26,8 @@ class _TimetableState extends State<Timetable> { | ||||
|    | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     double movement = 0; | ||||
|  | ||||
|     return Consumer<TimetableProps>( | ||||
|       builder: (context, value, child) { | ||||
|         if(value.primaryLoading()) { | ||||
| @@ -35,7 +39,14 @@ class _TimetableState extends State<Timetable> { | ||||
|           children: [ | ||||
|             Expanded( | ||||
|               child: GestureDetector( | ||||
|                 child: WeekView(value), | ||||
|                 child: Positioned( | ||||
|                   left: movement, | ||||
|                   child: WeekView(value), | ||||
|                 ), | ||||
|                 onHorizontalDragUpdate: (details) { | ||||
|                   log("${details.globalPosition.dx}"); | ||||
|                   movement = details.globalPosition.dx; | ||||
|                 }, | ||||
|                 onHorizontalDragEnd: (details) { | ||||
|                   if(details.primaryVelocity! < 0) { | ||||
|                     timetable.switchWeek(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user