mirror of
https://github.com/koloideal/Casha.git
synced 2026-08-08 17:51:14 +03:00
step
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import '../services/backup_service.dart';
|
||||
import 'premium_provider.dart';
|
||||
|
||||
final backupServiceProvider = Provider<BackupService>((ref) {
|
||||
final token = ref.watch(purchaseTokenProvider) ?? '';
|
||||
return BackupService(token);
|
||||
});
|
||||
@@ -1,8 +1,6 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import '../../features/dashboard/provider.dart';
|
||||
import '../services/billing_service.dart';
|
||||
|
||||
final billingServiceProvider = Provider<BillingService>((ref) {
|
||||
final prefs = ref.watch(sharedPreferencesProvider);
|
||||
return MockBillingService(prefs);
|
||||
return PlayBillingService();
|
||||
});
|
||||
|
||||
@@ -1,29 +1,27 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import '../../features/dashboard/provider.dart';
|
||||
import '../models/user_model.dart';
|
||||
import '../services/premium_manager.dart';
|
||||
import 'billing_provider.dart';
|
||||
|
||||
class CurrentUserNotifier extends Notifier<UserModel> {
|
||||
static const _key = 'user_plan';
|
||||
|
||||
@override
|
||||
UserModel build() {
|
||||
final prefs = ref.watch(sharedPreferencesProvider);
|
||||
final planName = prefs.getString(_key);
|
||||
final plan = UserPlan.values.firstWhere(
|
||||
(e) => e.name == planName,
|
||||
orElse: () => UserPlan.free,
|
||||
);
|
||||
return UserModel(plan: plan);
|
||||
final billing = ref.watch(billingServiceProvider);
|
||||
final manager = PremiumManager(prefs, billing);
|
||||
return UserModel(plan: manager.currentPlan);
|
||||
}
|
||||
|
||||
Future<void> setPlan(UserPlan plan) async {
|
||||
final prefs = ref.read(sharedPreferencesProvider);
|
||||
state = UserModel(plan: plan);
|
||||
await prefs.setString(_key, plan.name);
|
||||
}
|
||||
|
||||
Future<void> toggleVip() async {
|
||||
await setPlan(state.isVip ? UserPlan.free : UserPlan.vip);
|
||||
Future<void> refreshFromPremium() async {
|
||||
final prefs = ref.read(sharedPreferencesProvider);
|
||||
final billing = ref.read(billingServiceProvider);
|
||||
final manager = PremiumManager(prefs, billing);
|
||||
state = UserModel(plan: manager.currentPlan);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:google_sign_in/google_sign_in.dart';
|
||||
import '../services/google_drive_service.dart';
|
||||
|
||||
final googleDriveServiceProvider = Provider<GoogleDriveService>((ref) {
|
||||
final signIn = GoogleSignIn(
|
||||
scopes: [
|
||||
'email',
|
||||
'https://www.googleapis.com/auth/drive.appdata',
|
||||
],
|
||||
);
|
||||
return GoogleDriveService(signIn);
|
||||
});
|
||||
|
||||
final googleDriveUserProvider = StreamProvider<GoogleSignInAccount?>((ref) {
|
||||
final service = ref.watch(googleDriveServiceProvider);
|
||||
return service.onUserChanged;
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import '../../features/dashboard/provider.dart';
|
||||
import '../services/premium_manager.dart';
|
||||
import 'billing_provider.dart';
|
||||
|
||||
final premiumManagerProvider = Provider<PremiumManager>((ref) {
|
||||
final prefs = ref.watch(sharedPreferencesProvider);
|
||||
final billing = ref.watch(billingServiceProvider);
|
||||
return PremiumManager(prefs, billing);
|
||||
});
|
||||
|
||||
final isPremiumProvider = Provider<bool>((ref) {
|
||||
final manager = ref.watch(premiumManagerProvider);
|
||||
return manager.isPremium;
|
||||
});
|
||||
|
||||
final purchaseTokenProvider = Provider<String?>((ref) {
|
||||
final manager = ref.watch(premiumManagerProvider);
|
||||
return manager.purchaseToken;
|
||||
});
|
||||
Reference in New Issue
Block a user