mirror of
https://github.com/koloideal/Casha.git
synced 2026-08-08 17:51:14 +03:00
step
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'dart:async';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:in_app_purchase/in_app_purchase.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class PurchaseResult {
|
||||
final bool success;
|
||||
@@ -190,3 +191,49 @@ class PlayBillingService implements BillingService {
|
||||
await _controller.close();
|
||||
}
|
||||
}
|
||||
|
||||
class DebugBillingService implements BillingService {
|
||||
static const _key = 'debug_purchase_token';
|
||||
final SharedPreferences _prefs;
|
||||
final _controller = StreamController<List<PurchaseDetails>>.broadcast();
|
||||
|
||||
DebugBillingService(this._prefs);
|
||||
|
||||
@override
|
||||
Stream<List<PurchaseDetails>> get purchaseStream => _controller.stream;
|
||||
|
||||
@override
|
||||
Future<PurchaseResult> purchasePro() async {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
final token = 'debug_token_${DateTime.now().millisecondsSinceEpoch}';
|
||||
await _prefs.setString(_key, token);
|
||||
return PurchaseResult.ok(token);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<PurchaseResult> restorePurchases() async {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
final token = _prefs.getString(_key);
|
||||
if (token != null) {
|
||||
return PurchaseResult.ok(token);
|
||||
}
|
||||
return const PurchaseResult();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<PurchaseResult> queryPastPurchase() async {
|
||||
final token = _prefs.getString(_key);
|
||||
if (token != null) {
|
||||
return PurchaseResult.ok(token);
|
||||
}
|
||||
return const PurchaseResult();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> completePurchase(String purchaseToken) async {}
|
||||
|
||||
@override
|
||||
Future<void> dispose() async {
|
||||
await _controller.close();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@ class PremiumManager {
|
||||
}
|
||||
|
||||
Future<PurchaseResult> purchase() async {
|
||||
if (isPremium) {
|
||||
return PurchaseResult.ok(purchaseToken ?? 'existing');
|
||||
}
|
||||
final result = await _billing.purchasePro();
|
||||
if (result.success && result.purchaseToken != null) {
|
||||
await _setPremium(true, result.purchaseToken);
|
||||
|
||||
Reference in New Issue
Block a user