Add filter to subscription-list

This commit is contained in:
2025-11-09 22:51:37 +01:00
parent febc0a8f43
commit 1aadd9c368
4 changed files with 110 additions and 7 deletions

View File

@@ -54,6 +54,20 @@ class MessageFilter {
});
}
class SubscriptionFilter {
static final SubscriptionFilter ALL = SubscriptionFilter('both', 'all', 'all');
static final SubscriptionFilter OWNED_INACTIVE = SubscriptionFilter('outgoing', 'unconfirmed', 'false');
static final SubscriptionFilter OWNED_ACTIVE = SubscriptionFilter('outgoing', 'confirmed', 'false');
static final SubscriptionFilter EXTERNAL_ALL = SubscriptionFilter('outgoing', 'all', 'true');
static final SubscriptionFilter INCOMING_ALL = SubscriptionFilter('incoming', 'all', 'true');
final String direction; // 'outgoing' | 'incoming' | 'both'
final String confirmation; // 'confirmed' | 'unconfirmed' | 'all'
final String external; // 'true' | 'false' | 'all'
SubscriptionFilter(this.direction, this.confirmation, this.external) {}
}
class APIClient {
static const String _base = 'https://simplecloudnotifier.de';
static const String _prefix = '/api/v2';
@@ -345,15 +359,15 @@ class APIClient {
);
}
static Future<List<Subscription>> getSubscriptionList(TokenSource auth) async {
static Future<List<Subscription>> getSubscriptionList(TokenSource auth, SubscriptionFilter filter) async {
return await _request(
name: 'getSubscriptionList',
method: 'GET',
relURL: 'users/${auth.getUserID()}/subscriptions',
query: {
'direction': ['both'],
'confirmation': ['all'],
'external': ['all'],
'direction': [filter.direction],
'confirmation': [filter.confirmation],
'external': [filter.external],
},
fn: (json) => Subscription.fromJsonArray(json['subscriptions'] as List<dynamic>),
authToken: auth.getToken(),