ente/lib/services/billing_service.dart

53 lines
1.5 KiB
Dart
Raw Normal View History

2021-01-05 09:41:32 +00:00
import 'package:logging/logging.dart';
import 'package:photos/core/configuration.dart';
import 'package:photos/core/network.dart';
import 'package:photos/models/billing_plan.dart';
import 'package:photos/models/subscription.dart';
import 'package:shared_preferences/shared_preferences.dart';
2021-01-05 09:41:32 +00:00
class BillingService {
BillingService._privateConstructor() {}
static final BillingService instance = BillingService._privateConstructor();
static const subscriptionKey = "subscription";
2021-01-05 09:41:32 +00:00
final _logger = Logger("BillingService");
final _dio = Network.instance.getDio();
SharedPreferences _prefs;
2021-01-05 09:41:32 +00:00
Future<List<BillingPlan>> _future;
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
}
2021-01-05 09:41:32 +00:00
Future<List<BillingPlan>> getBillingPlans() {
if (_future == null) {
_future = _dio
.get(Configuration.instance.getHttpEndpoint() + "/billing/plans")
.then((response) {
final plans = List<BillingPlan>();
for (final plan in response.data["plans"]) {
plans.add(BillingPlan.fromMap(plan));
}
return plans;
});
}
return _future;
}
Subscription getSubscription() {
final jsonValue = _prefs.getString(subscriptionKey);
if (jsonValue == null) {
return null;
} else {
return Subscription.fromJson(jsonValue);
}
}
Future<void> setSubscription(Subscription subscription) async {
await _prefs.setString(
subscriptionKey, subscription == null ? null : subscription.toJson());
}
2021-01-05 09:41:32 +00:00
}