diff --git a/lib/friendica_client/pages_manager.dart b/lib/friendica_client/pages_manager.dart index 6a7b6a5..e72af95 100644 --- a/lib/friendica_client/pages_manager.dart +++ b/lib/friendica_client/pages_manager.dart @@ -41,8 +41,10 @@ class PagesManager { } final result = await onRequest(PagingData(limit: limit)); if (result.isSuccess) { - final newPage = result.value.map((data) => idMapper(data)); - _pages.add(newPage); + if (result.value.previous != null || result.value.next != null) { + final newPage = result.value.map((data) => idMapper(data)); + _pages.add(newPage); + } } return result; } diff --git a/lib/screens/notifications_screen.dart b/lib/screens/notifications_screen.dart index 72d2af5..b3638e9 100644 --- a/lib/screens/notifications_screen.dart +++ b/lib/screens/notifications_screen.dart @@ -41,7 +41,6 @@ class NotificationsScreen extends StatelessWidget { ), ]; if (notifications.isEmpty) { - manager.updateNotifications(); title = 'Notifications'; body = Center( child: Column( diff --git a/lib/services/direct_message_service.dart b/lib/services/direct_message_service.dart index ae23844..dbebd24 100644 --- a/lib/services/direct_message_service.dart +++ b/lib/services/direct_message_service.dart @@ -14,10 +14,12 @@ import 'auth_service.dart'; class DirectMessageService extends ChangeNotifier { static final _logger = Logger('$DirectMessageService'); final _threads = {}; + var _firstLoading = true; List getThreads({bool unreadyOnly = false}) { - if (_threads.isEmpty) { + if (_threads.isEmpty && _firstLoading) { updateThreads(); + _firstLoading = false; } if (unreadyOnly) { diff --git a/lib/services/notifications_manager.dart b/lib/services/notifications_manager.dart index 09c3d33..be848f4 100644 --- a/lib/services/notifications_manager.dart +++ b/lib/services/notifications_manager.dart @@ -22,8 +22,13 @@ class NotificationsManager extends ChangeNotifier { idMapper: (nn) => nn.map((n) => n.id).toList(), onRequest: _clientGetNotificationsRequest, ); + var _firstLoad = true; List get notifications { + if (_notifications.isEmpty && _firstLoad) { + updateNotifications(); + _firstLoad = false; + } final result = List.from(_notifications.values); result.sort((n1, n2) { if (n1.dismissed == n2.dismissed) {