Daily sign

This commit is contained in:
2024-09-02 23:11:40 +08:00
parent 597a8a802a
commit 4e4e551e2f
13 changed files with 424 additions and 45 deletions

View File

@ -1,10 +1,15 @@
import 'dart:math';
import 'package:get/get.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:solian/models/pagination.dart';
import 'package:solian/models/post.dart';
import 'package:solian/providers/content/posts.dart';
class PostListController extends GetxController {
late final SharedPreferences _prefs;
String? author;
/// The polling source modifier.
@ -19,9 +24,16 @@ class PostListController extends GetxController {
PagingController(firstPageKey: 0);
PostListController({this.author}) {
_initPreferences();
_initPagingController();
}
void _initPreferences() {
SharedPreferences.getInstance().then((prefs) {
_prefs = prefs;
});
}
/// Initialize a compatibility layer to paging controller
void _initPagingController() {
pagingController.addPageRequestListener(_onPagingControllerRequest);
@ -96,6 +108,13 @@ class PostListController extends GetxController {
final idx = <dynamic>{};
postList.retainWhere((x) => idx.add(x.id));
var lastId = postList.map((x) => x.id).reduce(max);
if (_prefs.containsKey('feed_last_read_at')) {
final storedId = _prefs.getInt('feed_last_read_at') ?? 0;
lastId = max(storedId, lastId);
}
_prefs.setInt('feed_last_read_at', lastId);
return result;
}