Merge redesign part 6.

This commit is contained in:
M 2020-09-14 15:08:33 +03:00
parent 6e6a081685
commit d67ab4934d
4 changed files with 137 additions and 75 deletions

View file

@ -1,4 +1,5 @@
import 'package:cake_wallet/reactions/bootstrap.dart'; import 'package:cake_wallet/reactions/bootstrap.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/store/app_store.dart';
import 'package:cake_wallet/store/authentication_store.dart'; import 'package:cake_wallet/store/authentication_store.dart';
import 'package:cake_wallet/core/auth_service.dart'; import 'package:cake_wallet/core/auth_service.dart';
@ -55,6 +56,8 @@ import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
bool isThemeChangerRegistered = false; bool isThemeChangerRegistered = false;
final navigatorKey = GlobalKey<NavigatorState>();
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@ -188,7 +191,9 @@ Future<void> initialSetup(
tradesSource: tradesSource, tradesSource: tradesSource,
templates: templates, templates: templates,
exchangeTemplates: exchangeTemplates); exchangeTemplates: exchangeTemplates);
await bootstrap(fiatConvertationService: fiatConvertationService); await bootstrap(
fiatConvertationService: fiatConvertationService,
navigatorKey: navigatorKey);
monero_wallet.onStartup(); monero_wallet.onStartup();
} }
@ -252,34 +257,37 @@ class MaterialAppWithTheme extends StatelessWidget {
statusBarBrightness: statusBarBrightness, statusBarBrightness: statusBarBrightness,
statusBarIconBrightness: statusBarIconBrightness)); statusBarIconBrightness: statusBarIconBrightness));
return MaterialApp( return Root(
debugShowCheckedModeBanner: false, authenticationStore: getIt.get<AuthenticationStore>(),
theme: theme.getTheme(), child: MaterialApp(
localizationsDelegates: [ navigatorKey: navigatorKey,
S.delegate, debugShowCheckedModeBanner: false,
GlobalCupertinoLocalizations.delegate, theme: theme.getTheme(),
GlobalMaterialLocalizations.delegate, localizationsDelegates: [
GlobalWidgetsLocalizations.delegate, S.delegate,
], GlobalCupertinoLocalizations.delegate,
supportedLocales: S.delegate.supportedLocales, GlobalMaterialLocalizations.delegate,
locale: Locale(currentLanguage.getCurrentLanguage()), GlobalWidgetsLocalizations.delegate,
onGenerateRoute: (settings) => Router.generateRoute( ],
sharedPreferences: sharedPreferences, supportedLocales: S.delegate.supportedLocales,
walletListService: walletListService, locale: Locale(currentLanguage.getCurrentLanguage()),
walletService: walletService, onGenerateRoute: (settings) => Router.generateRoute(
userService: userService, sharedPreferences: sharedPreferences,
settings: settings, walletListService: walletListService,
priceStore: priceStore, walletService: walletService,
walletStore: walletStore, userService: userService,
syncStore: syncStore, settings: settings,
balanceStore: balanceStore, priceStore: priceStore,
settingsStore: settingsStore, walletStore: walletStore,
contacts: contacts, syncStore: syncStore,
nodes: nodes, balanceStore: balanceStore,
trades: trades, settingsStore: settingsStore,
transactionDescriptions: transactionDescriptions), contacts: contacts,
home: Root( nodes: nodes,
authenticationStore: getIt.get<AuthenticationStore>(), trades: trades,
transactionDescriptions: transactionDescriptions),
initialRoute: Routes.login, // FIXME: get initial route!
// home: Container(color: Colors.blue),
)); ));
} }
} }

View file

@ -1,7 +1,13 @@
import 'dart:async'; import 'dart:async';
import 'package:cake_wallet/core/key_service.dart'; import 'package:cake_wallet/core/key_service.dart';
import 'package:cake_wallet/router.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/domain/common/sync_status.dart'; import 'package:cake_wallet/src/domain/common/sync_status.dart';
import 'package:cake_wallet/src/screens/auth/auth_page.dart';
import 'package:cake_wallet/src/screens/dashboard/dashboard_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/di.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
@ -24,8 +30,7 @@ import 'package:cake_wallet/store/dashboard/fiat_convertation_store.dart';
// FIXME: move me // FIXME: move me
Future<void> loadCurrentWallet() async { Future<void> loadCurrentWallet() async {
final appStore = getIt.get<AppStore>(); final appStore = getIt.get<AppStore>();
final name = 'test'; final name = getIt.get<SharedPreferences>().getString('current_wallet_name');
getIt.get<SharedPreferences>().getString('current_wallet_name');
final typeRaw = final typeRaw =
getIt.get<SharedPreferences>().getInt('current_wallet_type') ?? 0; getIt.get<SharedPreferences>().getInt('current_wallet_type') ?? 0;
final type = deserializeFromInt(typeRaw); final type = deserializeFromInt(typeRaw);
@ -55,7 +60,8 @@ ReactionDisposer _onCurrentFiatCurrencyChangeDisposer;
Timer _reconnectionTimer; Timer _reconnectionTimer;
Future<void> bootstrap( Future<void> bootstrap(
{FiatConvertationService fiatConvertationService}) async { {FiatConvertationService fiatConvertationService,
GlobalKey<NavigatorState> navigatorKey}) async {
final authenticationStore = getIt.get<AuthenticationStore>(); final authenticationStore = getIt.get<AuthenticationStore>();
final settingsStore = getIt.get<SettingsStore>(); final settingsStore = getIt.get<SettingsStore>();
final fiatConvertationStore = getIt.get<FiatConvertationStore>(); final fiatConvertationStore = getIt.get<FiatConvertationStore>();
@ -69,10 +75,26 @@ Future<void> bootstrap(
_initialAuthReaction ??= autorun((_) async { _initialAuthReaction ??= autorun((_) async {
final state = authenticationStore.state; final state = authenticationStore.state;
print(state);
if (state == AuthenticationState.installed) { if (state == AuthenticationState.installed) {
await loadCurrentWallet(); await loadCurrentWallet();
} }
if (state == AuthenticationState.installed) {
await navigatorKey.currentState
.pushAndRemoveUntil(createLoginRoute(), (_) => false);
}
if (state == AuthenticationState.allowed) {
await navigatorKey.currentState
.pushAndRemoveUntil(createDashboardRoute(), (_) => false);
}
if (state == AuthenticationState.denied) {
await navigatorKey.currentState
.pushAndRemoveUntil(createWelcomeRoute(), (_) => false);
}
}); });
_onCurrentWalletChangeReaction ??= _onCurrentWalletChangeReaction ??=

View file

@ -95,6 +95,15 @@ import 'package:cake_wallet/src/screens/new_wallet/new_wallet_type_page.dart';
import 'package:cake_wallet/src/screens/send/send_template_page.dart'; import 'package:cake_wallet/src/screens/send/send_template_page.dart';
import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart'; import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart';
CupertinoPageRoute<void> createDashboardRoute() =>
CupertinoPageRoute<void>(builder: (_) => getIt.get<DashboardPage>());
CupertinoPageRoute<void> createLoginRoute() => CupertinoPageRoute<void>(
builder: (context) => getIt.get<AuthPage>(instanceName: 'login'));
MaterialPageRoute<void> createWelcomeRoute() =>
MaterialPageRoute<void>(builder: (_) => createWelcomePage());
class Router { class Router {
static Route<dynamic> generateRoute( static Route<dynamic> generateRoute(
{SharedPreferences sharedPreferences, {SharedPreferences sharedPreferences,
@ -239,7 +248,7 @@ class Router {
: 'English'; // FIXME: Unnamed constant; English default and only one language for bitcoin. : 'English'; // FIXME: Unnamed constant; English default and only one language for bitcoin.
final walletRestorationFromKeysVM = final walletRestorationFromKeysVM =
getIt.get<WalletRestorationFromKeysVM>(param1: [type, language]); getIt.get<WalletRestorationFromKeysVM>(param1: [type, language]);
return CupertinoPageRoute<void>( return CupertinoPageRoute<void>(
builder: (_) => RestoreWalletFromKeysPage( builder: (_) => RestoreWalletFromKeysPage(
@ -255,7 +264,8 @@ class Router {
case Routes.sendTemplate: case Routes.sendTemplate:
return CupertinoPageRoute<void>( return CupertinoPageRoute<void>(
fullscreenDialog: true, builder: (_) => getIt.get<SendTemplatePage>()); fullscreenDialog: true,
builder: (_) => getIt.get<SendTemplatePage>());
case Routes.receive: case Routes.receive:
return CupertinoPageRoute<void>( return CupertinoPageRoute<void>(
@ -320,16 +330,8 @@ class Router {
builder: (_) => getIt.get<NodeCreateOrEditPage>()); builder: (_) => getIt.get<NodeCreateOrEditPage>());
case Routes.login: case Routes.login:
return CupertinoPageRoute<void>(builder: (context) { return CupertinoPageRoute<void>(
final authenticationStore = Provider.of<AuthenticationStore>(context); builder: (context) => getIt.get<AuthPage>(instanceName: 'login'));
return createLoginPage(
sharedPreferences: sharedPreferences,
userService: userService,
walletService: walletService,
walletListService: walletListService,
authenticationStore: authenticationStore);
});
case Routes.accountCreation: case Routes.accountCreation:
return CupertinoPageRoute<String>( return CupertinoPageRoute<String>(
@ -361,7 +363,7 @@ class Router {
return MaterialPageRoute<void>( return MaterialPageRoute<void>(
builder: (_) => getIt.get<ExchangeConfirmPage>()); builder: (_) => getIt.get<ExchangeConfirmPage>());
//ExchangeConfirmPage(trade: settings.arguments as Trade)); //ExchangeConfirmPage(trade: settings.arguments as Trade));
case Routes.tradeDetails: case Routes.tradeDetails:
return MaterialPageRoute<void>(builder: (context) { return MaterialPageRoute<void>(builder: (context) {

View file

@ -25,10 +25,12 @@ import 'package:cake_wallet/src/screens/auth/auth_page.dart';
import 'package:cake_wallet/src/screens/welcome/create_welcome_page.dart'; import 'package:cake_wallet/src/screens/welcome/create_welcome_page.dart';
class Root extends StatefulWidget { class Root extends StatefulWidget {
Root({Key key, this.authenticationStore, this.appStore}) : super(key: key); Root({Key key, this.authenticationStore, this.appStore, this.child})
: super(key: key);
final AuthenticationStore authenticationStore; final AuthenticationStore authenticationStore;
final AppStore appStore; final AppStore appStore;
final Widget child;
@override @override
RootState createState() => RootState(); RootState createState() => RootState();
@ -37,12 +39,18 @@ class Root extends StatefulWidget {
class RootState extends State<Root> with WidgetsBindingObserver { class RootState extends State<Root> with WidgetsBindingObserver {
bool _isInactive; bool _isInactive;
bool _postFrameCallback; bool _postFrameCallback;
// GlobalKey<NavigatorState> _navKey;
@override @override
void initState() { void initState() {
_isInactive = false; _isInactive = false;
_postFrameCallback = false; _postFrameCallback = false;
WidgetsBinding.instance.addObserver(this); WidgetsBinding.instance.addObserver(this);
// WidgetsBinding.instance.addPostFrameCallback((_) {
// _navKey.currentState.pushNamed(Routes.login);
// });
super.initState(); super.initState();
} }
@ -69,6 +77,8 @@ class RootState extends State<Root> with WidgetsBindingObserver {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return widget.child;
// _authenticationStore = Provider.of<AuthenticationStore>(context); // _authenticationStore = Provider.of<AuthenticationStore>(context);
// final sharedPreferences = Provider.of<SharedPreferences>(context); // final sharedPreferences = Provider.of<SharedPreferences>(context);
// final walletListService = Provider.of<WalletListService>(context); // final walletListService = Provider.of<WalletListService>(context);
@ -82,39 +92,59 @@ class RootState extends State<Root> with WidgetsBindingObserver {
// final walletStore = Provider.of<WalletStore>(context); // final walletStore = Provider.of<WalletStore>(context);
// final settingsStore = Provider.of<SettingsStore>(context); // final settingsStore = Provider.of<SettingsStore>(context);
if (_isInactive && !_postFrameCallback) { // if (_isInactive && !_postFrameCallback) {
_postFrameCallback = true; // _postFrameCallback = true;
WidgetsBinding.instance.addPostFrameCallback((_) { // WidgetsBinding.instance.addPostFrameCallback((_) {
Navigator.of(context).pushNamed(Routes.unlock, // Navigator.of(context).pushNamed(Routes.unlock,
arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) { // arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) {
if (!isAuthenticatedSuccessfully) { // if (!isAuthenticatedSuccessfully) {
return; // return;
} // }
setState(() { // setState(() {
_postFrameCallback = false; // _postFrameCallback = false;
_isInactive = false; // _isInactive = false;
}); // });
auth.close(); // auth.close();
}); // });
}); // });
} // }
return Observer(builder: (_) { // return Navigator(
final state = widget.authenticationStore.state; // key: _navKey,
// initialRoute: Routes.welcome,
// onGenerateRoute: Router.generateRoute(
// sharedPreferences: sharedPreferences,
// walletListService: walletListService,
// walletService: walletService,
// userService: userService,
// settings: settings,
// priceStore: priceStore,
// walletStore: walletStore,
// syncStore: syncStore,
// balanceStore: balanceStore,
// settingsStore: settingsStore,
// contacts: contacts,
// nodes: nodes,
// trades: trades,
// transactionDescriptions: transactionDescriptions),
// );
if (state == AuthenticationState.denied) { // return Observer(builder: (_) {
return createWelcomePage(); // final state = widget.authenticationStore.state;
}
if (state == AuthenticationState.installed) { // if (state == AuthenticationState.denied) {
return getIt.get<AuthPage>(instanceName: 'login'); // return createWelcomePage();
} // }
if (state == AuthenticationState.allowed) { // if (state == AuthenticationState.installed) {
return getIt.get<DashboardPage>(); // return getIt.get<AuthPage>(instanceName: 'login');
} // }
// if (state == AuthenticationState.allowed) {
// return getIt.get<DashboardPage>();
// }
// if (state == AuthenticationState.denied) { // if (state == AuthenticationState.denied) {
// return createWelcomePage(); // return createWelcomePage();
@ -148,7 +178,7 @@ class RootState extends State<Root> with WidgetsBindingObserver {
// _authenticationStore.state = AuthenticationState.authenticated); // _authenticationStore.state = AuthenticationState.authenticated);
// } // }
return Container(color: Colors.white); // return Container(color: Colors.white);
}); // });
} }
} }