47 lines
1.5 KiB
Dart
47 lines
1.5 KiB
Dart
|
import 'package:get/get.dart';
|
||
|
import 'package:solian/exceptions/request.dart';
|
||
|
import 'package:solian/exceptions/unauthorized.dart';
|
||
|
import 'package:solian/models/subscription.dart';
|
||
|
import 'package:solian/providers/auth.dart';
|
||
|
|
||
|
class SubscriptionProvider extends GetxController {
|
||
|
Future<Subscription?> getSubscriptionOnUser(int userId) async {
|
||
|
final auth = Get.find<AuthProvider>();
|
||
|
if (!auth.isAuthorized.value) throw const UnauthorizedException();
|
||
|
|
||
|
final client = await auth.configureClient('co');
|
||
|
final resp = await client.get('/subscriptions/users/$userId');
|
||
|
if (resp.statusCode == 404) {
|
||
|
return null;
|
||
|
} else if (resp.statusCode != 200) {
|
||
|
throw RequestException(resp);
|
||
|
}
|
||
|
|
||
|
return Subscription.fromJson(resp.body);
|
||
|
}
|
||
|
|
||
|
Future<Subscription> subscribeToUser(int userId) async {
|
||
|
final auth = Get.find<AuthProvider>();
|
||
|
if (!auth.isAuthorized.value) throw const UnauthorizedException();
|
||
|
|
||
|
final client = await auth.configureClient('co');
|
||
|
final resp = await client.post('/subscriptions/users/$userId', {});
|
||
|
if (resp.statusCode != 200) {
|
||
|
throw RequestException(resp);
|
||
|
}
|
||
|
|
||
|
return Subscription.fromJson(resp.body);
|
||
|
}
|
||
|
|
||
|
Future<void> unsubscribeFromUser(int userId) async {
|
||
|
final auth = Get.find<AuthProvider>();
|
||
|
if (!auth.isAuthorized.value) throw const UnauthorizedException();
|
||
|
|
||
|
final client = await auth.configureClient('co');
|
||
|
final resp = await client.delete('/subscriptions/users/$userId');
|
||
|
if (resp.statusCode != 200) {
|
||
|
throw RequestException(resp);
|
||
|
}
|
||
|
}
|
||
|
}
|