i_splash_impl.dart 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import 'package:app_flowy/startup/startup.dart';
  2. import 'package:app_flowy/user/domain/auth_state.dart';
  3. import 'package:app_flowy/user/domain/i_splash.dart';
  4. import 'package:app_flowy/user/infrastructure/router.dart';
  5. import 'package:app_flowy/user/infrastructure/repos/auth_repo.dart';
  6. import 'package:app_flowy/user/presentation/sign_in_screen.dart';
  7. import 'package:app_flowy/user/presentation/skip_log_in_screen.dart';
  8. import 'package:app_flowy/user/presentation/welcome_screen.dart';
  9. import 'package:app_flowy/workspace/infrastructure/repos/user_repo.dart';
  10. import 'package:app_flowy/workspace/presentation/home/home_screen.dart';
  11. import 'package:flowy_infra/time/duration.dart';
  12. import 'package:flowy_infra_ui/widget/route/animation.dart';
  13. import 'package:flowy_sdk/dispatch/dispatch.dart';
  14. import 'package:flowy_sdk/protobuf/flowy-user-data-model/protobuf.dart' show UserProfile;
  15. import 'package:flowy_sdk/protobuf/flowy-folder-data-model/protobuf.dart';
  16. import 'package:flutter/material.dart';
  17. import 'package:flutter/widgets.dart';
  18. class SplashUserImpl implements ISplashUser {
  19. @override
  20. Future<AuthState> currentUserProfile() {
  21. final result = UserEventCheckUser().send();
  22. return result.then((result) {
  23. return result.fold(
  24. (userProfile) {
  25. return AuthState.authenticated(userProfile);
  26. },
  27. (error) {
  28. return AuthState.unauthenticated(error);
  29. },
  30. );
  31. });
  32. }
  33. }
  34. class SplashRoute implements ISplashRoute {
  35. @override
  36. Future<void> pushWelcomeScreen(BuildContext context, UserProfile user) async {
  37. final repo = UserRepo(user: user);
  38. final screen = WelcomeScreen(repo: repo);
  39. final workspaceId = await Navigator.of(context).push(
  40. PageRoutes.fade(
  41. () => screen,
  42. RouteDurations.slow.inMilliseconds * .001,
  43. ),
  44. );
  45. pushHomeScreen(context, repo.user, workspaceId);
  46. }
  47. @override
  48. void pushHomeScreen(BuildContext context, UserProfile userProfile, CurrentWorkspaceSetting workspaceSetting) {
  49. Navigator.push(
  50. context,
  51. PageRoutes.fade(() => HomeScreen(userProfile, workspaceSetting), RouteDurations.slow.inMilliseconds * .001),
  52. );
  53. }
  54. @override
  55. void pushSignInScreen(BuildContext context) {
  56. Navigator.push(
  57. context,
  58. PageRoutes.fade(() => SignInScreen(router: getIt<AuthRouter>()), RouteDurations.slow.inMilliseconds * .001),
  59. );
  60. }
  61. @override
  62. void pushSkipLoginScreen(BuildContext context) {
  63. Navigator.push(
  64. context,
  65. PageRoutes.fade(
  66. () => SkipLogInScreen(
  67. router: getIt<AuthRouter>(),
  68. authRepo: getIt<AuthRepository>(),
  69. ),
  70. RouteDurations.slow.inMilliseconds * .001),
  71. );
  72. }
  73. }