✨ Better whats new
This commit is contained in:
@ -10,6 +10,22 @@ class PostProvider extends GetConnect {
|
||||
httpClient.baseUrl = ServiceFinder.buildUrl('interactive', null);
|
||||
}
|
||||
|
||||
Future<Response> seeWhatsNew(int pivot) async {
|
||||
GetConnect client;
|
||||
final AuthProvider auth = Get.find();
|
||||
if (auth.isAuthorized.value) {
|
||||
client = auth.configureClient('co');
|
||||
} else {
|
||||
client = ServiceFinder.configureClient('co');
|
||||
}
|
||||
final resp = await client.get('/whats-new?pivot=$pivot');
|
||||
if (resp.statusCode != 200) {
|
||||
throw RequestException(resp);
|
||||
}
|
||||
|
||||
return resp;
|
||||
}
|
||||
|
||||
Future<Response> listRecommendations(int page,
|
||||
{String? realm, String? channel}) async {
|
||||
GetConnect client;
|
||||
|
48
lib/providers/last_read.dart
Normal file
48
lib/providers/last_read.dart
Normal file
@ -0,0 +1,48 @@
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:get/get.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class LastReadProvider extends GetxController {
|
||||
int? _feedLastReadAt;
|
||||
int? _messagesLastReadAt;
|
||||
|
||||
int? get feedLastReadAt => _feedLastReadAt;
|
||||
int? get messagesLastReadAt => _messagesLastReadAt;
|
||||
|
||||
set feedLastReadAt(int? value) {
|
||||
if (value == _feedLastReadAt) return;
|
||||
_feedLastReadAt = max(_feedLastReadAt ?? 0, value ?? 0);
|
||||
if (value != _feedLastReadAt) _saveToStorage();
|
||||
}
|
||||
|
||||
set messagesLastReadAt(int? value) {
|
||||
if (value == _messagesLastReadAt) return;
|
||||
_messagesLastReadAt = max(_messagesLastReadAt ?? 0, value ?? 0);
|
||||
if (value != _messagesLastReadAt) _saveToStorage();
|
||||
}
|
||||
|
||||
LastReadProvider() {
|
||||
_revertFromStorage();
|
||||
}
|
||||
|
||||
Future<void> _revertFromStorage() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
if (prefs.containsKey('feed_last_read_at')) {
|
||||
_feedLastReadAt = prefs.getInt('feed_last_read_at')!;
|
||||
}
|
||||
if (prefs.containsKey('messages_last_read_at')) {
|
||||
_messagesLastReadAt = prefs.getInt('messages_last_read_at');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _saveToStorage() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
if (_feedLastReadAt != null) {
|
||||
prefs.setInt('feed_last_read_at', _feedLastReadAt!);
|
||||
}
|
||||
if (_messagesLastReadAt != null) {
|
||||
prefs.setInt('messages_last_read_at', _messagesLastReadAt!);
|
||||
}
|
||||
}
|
||||
}
|
@ -17,6 +17,27 @@ Future<MessageHistoryDb> createHistoryDb() async {
|
||||
.addMigrations([migration1to2]).build();
|
||||
}
|
||||
|
||||
Future<(List<Event>, int)?> getWhatsNewEvents(int pivot, {take = 10}) async {
|
||||
final AuthProvider auth = Get.find();
|
||||
if (auth.isAuthorized.isFalse) return null;
|
||||
|
||||
final client = auth.configureClient('messaging');
|
||||
|
||||
final resp = await client.get(
|
||||
'/whats-new?pivot=$pivot&take=$take',
|
||||
);
|
||||
|
||||
if (resp.statusCode != 200) {
|
||||
throw RequestException(resp);
|
||||
}
|
||||
|
||||
final PaginationResult response = PaginationResult.fromJson(resp.body);
|
||||
final result =
|
||||
response.data?.map((e) => Event.fromJson(e)).toList() ?? List.empty();
|
||||
|
||||
return (result, response.count);
|
||||
}
|
||||
|
||||
Future<Event?> getRemoteEvent(int id, Channel channel, String scope) async {
|
||||
final AuthProvider auth = Get.find();
|
||||
if (auth.isAuthorized.isFalse) return null;
|
||||
|
Reference in New Issue
Block a user