import 'package:cake_wallet/core/auth_service.dart'; import 'package:cake_wallet/src/screens/auth/auth_page.dart'; import 'package:cake_wallet/src/screens/dashboard/dashboard_page.dart'; import 'package:cake_wallet/src/screens/receive/receive_page.dart'; import 'package:cake_wallet/src/screens/subaddress/address_edit_or_create_page.dart'; import 'package:cake_wallet/view_model/address_list/address_edit_or_create_view_model.dart'; import 'package:cake_wallet/view_model/auth_view_model.dart'; import 'package:cake_wallet/view_model/dashboard_view_model.dart'; import 'package:cake_wallet/view_model/address_list/address_list_view_model.dart'; import 'package:get_it/get_it.dart'; import 'package:http/http.dart'; import 'package:mobx/mobx.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:cake_wallet/view_model/wallet_restoration_from_seed_vm.dart'; import 'package:cake_wallet/core/wallet_base.dart'; import 'package:cake_wallet/core/wallet_creation_service.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/src/domain/common/wallet_type.dart'; import 'package:cake_wallet/view_model/wallet_new_vm.dart'; import 'package:cake_wallet/store/authentication_store.dart'; final getIt = GetIt.instance; ReactionDisposer _onCurrentWalletChangeReaction; void setup() { getIt.registerSingleton(AuthenticationStore()); getIt.registerSingleton( AppStore(authenticationStore: getIt.get())); getIt.registerSingleton(FlutterSecureStorage()); getIt.registerSingletonAsync( () => SharedPreferences.getInstance()); getIt.registerFactoryParam( (type, _) => WalletCreationService( initialType: type, appStore: getIt.get(), secureStorage: getIt.get(), sharedPreferences: getIt.get())); getIt.registerFactoryParam((type, _) => WalletNewVM(getIt.get(param1: type), type: type)); getIt .registerFactoryParam((args, _) { final type = args.first as WalletType; final language = args[1] as String; final mnemonic = args[2] as String; return WalletRestorationFromSeedVM( getIt.get(param1: type), type: type, language: language, seed: mnemonic); }); getIt.registerFactory( () => AddressListViewModel(wallet: getIt.get().wallet)); getIt.registerFactory( () => DashboardViewModel(appStore: getIt.get())); getIt.registerFactory(() => AuthService( secureStorage: getIt.get(), sharedPreferences: getIt.get())); getIt.registerFactory(() => AuthViewModel( authService: getIt.get(), sharedPreferences: getIt.get())); getIt.registerFactory(() => AuthPage( authViewModel: getIt.get(), onAuthenticationFinished: (isAuthenticated, __) { if (isAuthenticated) { getIt.get().allowed(); } }, closable: false)); getIt.registerFactory(() => DashboardPage( walletViewModel: getIt.get(), )); getIt.registerFactory(() => ReceivePage(addressListViewModel: getIt.get())); getIt.registerFactoryParam( (dynamic item, _) => AddressEditOrCreateViewModel( wallet: getIt.get().wallet, item: item)); getIt.registerFactoryParam( (dynamic item, _) => AddressEditOrCreatePage( addressEditOrCreateViewModel: getIt.get(param1: item))); final appStore = getIt.get(); _onCurrentWalletChangeReaction ??= reaction((_) => appStore.wallet, (WalletBase wallet) async { print('Wallet name ${wallet.name}'); await getIt .get() .setString('current_wallet_name', wallet.name); }); }