mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-05-12 07:08:44 -05:00
[client] Simplify bookmarks repository
This commit is contained in:
@@ -97,7 +97,6 @@ class PhylumAccount extends Account<PhylumAccount> {
|
||||
};
|
||||
|
||||
await userRepository.initialize();
|
||||
await bookmarkRepository.initialize();
|
||||
|
||||
late final void Function() l;
|
||||
l = apiClient.addListener((request, errorResponse) {
|
||||
|
||||
@@ -10,12 +10,12 @@ import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/libphylum/requests/bookmarks_request.dart';
|
||||
import 'package:phylum/libphylum/responses/responses.dart';
|
||||
|
||||
const keyLastBookmarkFetch = "lastBookmarksFetch";
|
||||
const _remoteBookmarksBoxName = 'remote_bookmarks';
|
||||
|
||||
class BookmarkRepository extends Repository<PhylumAccount, Bookmark> {
|
||||
late final PhylumAccount _account;
|
||||
late final LazyBox<Bookmark?> _remoteDataBox;
|
||||
int? _lastBookmarkFetch;
|
||||
|
||||
BookmarkRepository();
|
||||
|
||||
@@ -32,13 +32,6 @@ class BookmarkRepository extends Repository<PhylumAccount, Bookmark> {
|
||||
return remoteData;
|
||||
}
|
||||
|
||||
Future<void> initialize({bool clearLastFetchTimestamp = false}) async {
|
||||
if (clearLastFetchTimestamp) {
|
||||
await _account.persist(keyLastBookmarkFetch, null);
|
||||
}
|
||||
refresh();
|
||||
}
|
||||
|
||||
Future<void> addBookmark({required Resource resource, String? name}) {
|
||||
return _account.addAction(ResourceBookmarkAddAction(
|
||||
resourceId: resource.id,
|
||||
@@ -58,11 +51,15 @@ class BookmarkRepository extends Repository<PhylumAccount, Bookmark> {
|
||||
));
|
||||
}
|
||||
|
||||
Future<ApiResult> refresh() async {
|
||||
return _account.apiClient.sendRequest(
|
||||
BookmarksRequest(since: (_account.getPersisted(keyLastBookmarkFetch) as num?)?.toInt()),
|
||||
(request, response) => parseJsonMapResponse(response, BookmarkListResponse.fromResponse),
|
||||
);
|
||||
Future<void> refresh() async {
|
||||
return _account.apiClient
|
||||
.sendRequest(BookmarksRequest(since: _lastBookmarkFetch),
|
||||
(request, response) => parseJsonMapResponse(response, BookmarkListResponse.fromResponse))
|
||||
.then((response) {
|
||||
if (response is BookmarkListResponse) {
|
||||
_lastBookmarkFetch = response.until;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -21,6 +21,5 @@ class BookmarkListResponse extends PhylumApiSuccessResponse {
|
||||
for (final b in bookmarks) {
|
||||
await account.datastore.get<Bookmark>().replaceRemoteData(b.resourceId, b);
|
||||
}
|
||||
await account.persist(keyLastBookmarkFetch, until);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user