guru_sdk/guru_ui/lib/pages/subscription/subscription_controller.dart

85 lines
3.5 KiB
Dart

import 'dart:convert';
import 'package:design/design.dart';
import 'package:guru_app/analytics/guru_analytics.dart';
import 'package:guru_app/financial/iap/iap_manager.dart';
import 'package:guru_app/financial/product/product_model.dart';
import 'package:guru_app/guru_app.dart';
import 'package:guru_ui/pages/store/store_page.dart';
import 'package:guru_app/controller/assets_aware.dart';
import 'package:guru_popup/guru_popup.dart';
import 'package:guru_widgets/assetbar/guru_asset_bar.dart';
import 'package:guru_widgets/dialog/guru_dialog.dart';
import 'package:guru_utils/controller/lifecycle_controller.dart';
import 'package:guru_ui/localizations/ui_strings.dart';
import 'package:guru_widgets/theme/guru_theme.dart';
import 'package:rxdart/rxdart.dart';
class SubscriptionController extends LifecycleController with AssetsAware {
final ScrollController scrollController = ScrollController();
final BehaviorSubject<int> _selectProductIndexSubject = BehaviorSubject.seeded(1);
Stream<int> get observableSelectProductIndex => _selectProductIndexSubject.stream;
void updateSelectedProductIndex(int index) {
_selectProductIndexSubject.add(index);
}
Future restoreSubscription() async {
final oldStore = currentIapAssetStore.clone();
await restorePurchases();
final newStore = currentIapAssetStore;
final added = <String>[];
newStore.data.forEach((key, value) {
if (oldStore.getAsset(key) == null) {
added.add(key.sku);
}
});
// GuruAnalytics.instance.logEventEx("premium_restore_clk",
// itemCategory: from,
// itemName: added.isEmpty ? "non" : added.join(","),
// parameters: {"level": RuntimeProperty.instance.gameAudit.currentLevel});
}
// Future purchase(IapProduct? product, String? offerId) async {
// GuruAnalytics.instance.logEventEx("premium_click",
// itemCategory: from,
// itemName: "${product?.sku}${offerId != null ? "_$offerId" : ""}",
// parameters: {"level": RuntimeProperty.instance.gameAudit.currentLevel});
// if (product == null) {
// return;
// }
// final appStrings = AppStrings.get();
// final loadingCompleter =
// DialogUtils.showLoadingDialog(appStrings.processing, onCompleted: () {});
// final success = await requestProduct(product).catchError((error, stacktrace) {
// Log.w("requestProduct error! $error", stackTrace: stacktrace);
// return false;
// });
// loadingCompleter.complete();
// if (success) {
// if (showBonusDialog) {
// ToastUtils.showCommonToast(appStrings.purchaseSuccess);
// if (await AppDB.instance.insertTodayPremiumDailyBonusEntity()) {
// await DialogUtils.showPremiumDailyBonusDialog("premium");
// }
// RouteCenter.instance.backPageAndClearTop(mainPath: Routes.premium.mainPath, result: true);
// } else {
// RouteCenter.instance.backPageAndClearTop(mainPath: Routes.premium.mainPath, result: true);
// ToastUtils.showCommonToast(appStrings.purchaseSuccess);
// }
// GuruAnalytics.instance.logEventEx("premium_scs",
// itemCategory: from,
// itemName: "${product.sku}${offerId != null ? "_$offerId" : ""}",
// parameters: {"level": RuntimeProperty.instance.gameAudit.currentLevel});
// } else {
// if (isIapCanceled) {
// ToastUtils.showCommonToast(appStrings.iapSuspended);
// } else {
// ToastUtils.showCommonToast(appStrings.checkNetworkAndGp);
// }
// RouteCenter.instance.back();
// }
// }
}