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';
|
2021-01-06 11:56:03 +00:00
|
|
|
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();
|
2021-01-06 11:56:03 +00:00
|
|
|
static const subscriptionKey = "subscription";
|
2021-01-05 09:41:32 +00:00
|
|
|
|
|
|
|
final _logger = Logger("BillingService");
|
|
|
|
final _dio = Network.instance.getDio();
|
|
|
|
|
2021-01-06 11:56:03 +00:00
|
|
|
SharedPreferences _prefs;
|
2021-01-05 09:41:32 +00:00
|
|
|
Future<List<BillingPlan>> _future;
|
|
|
|
|
2021-01-06 11:56:03 +00:00
|
|
|
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;
|
|
|
|
}
|
2021-01-06 11:56:03 +00:00
|
|
|
|
|
|
|
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
|
|
|
}
|