diff --git a/assets/animations/lottie-tmail.json b/assets/animations/lottie-tmail.json new file mode 100644 index 000000000..5b5c48804 --- /dev/null +++ b/assets/animations/lottie-tmail.json @@ -0,0 +1 @@ +{"nm":"Flow 4","ddd":0,"h":176,"w":176,"meta":{"g":"LottieFiles Figma v83"},"layers":[{"ty":0,"nm":"Mail-app-icon","sr":1,"st":0,"op":37,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":18},{"s":[54,54],"t":36}]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[88,88]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":176,"h":176,"refId":"1","ind":1}],"v":"5.7.0","fr":60,"op":36,"ip":0,"assets":[{"nm":"[Asset] Mail-app-icon","id":"1","layers":[{"ty":4,"nm":"Subtract","sr":1,"st":0,"op":37,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[20.11,19.86],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[20.11,19.86],"t":18},{"s":[35.8,35.72],"t":36}]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[38.98,39.14],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[38.98,39.14],"t":18},{"s":[53.97,53.9],"t":36}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[{"c":true,"i":[[0,0],[0,-2.32],[0,0],[-4.92,0],[0,0],[0,4.92],[0,0],[1.84,1.41],[0,0],[2.66,-2.03],[0,0]],"o":[[-1.84,1.41],[0,0],[0,4.92],[0,0],[4.92,0],[0,0],[0,-2.32],[0,0],[-2.66,-2.03],[0,0],[0,0]],"v":[[2.92,11.2],[0,17.1],[0,30.81],[8.92,39.72],[31.31,39.72],[40.23,30.81],[40.23,17.1],[37.3,11.2],[24.62,1.52],[15.61,1.52],[2.92,11.2]]}],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[{"c":true,"i":[[0,0],[0,-2.32],[0,0],[-4.92,0],[0,0],[0,4.92],[0,0],[1.84,1.41],[0,0],[2.66,-2.03],[0,0]],"o":[[-1.84,1.41],[0,0],[0,4.92],[0,0],[4.92,0],[0,0],[0,-2.32],[0,0],[-2.66,-2.03],[0,0],[0,0]],"v":[[2.92,11.2],[0,17.1],[0,30.81],[8.92,39.72],[31.31,39.72],[40.23,30.81],[40.23,17.1],[37.3,11.2],[24.62,1.52],[15.61,1.52],[2.92,11.2]]}],"t":18},{"s":[{"c":true,"i":[[0,0],[0,-3.21],[0,0],[-6.82,0],[0,0],[0,6.82],[0,0],[2.55,1.95],[0,0],[3.68,-2.81],[0,0]],"o":[[-2.55,1.95],[0,0],[0,6.82],[0,0],[6.82,0],[0,0],[0,-3.21],[0,0],[-3.68,-2.81],[0,0],[0,0]],"v":[[4.05,21.56],[0,29.74],[0,59.1],[12.34,71.45],[59.25,71.45],[71.59,59.1],[71.59,29.74],[67.55,21.56],[42.04,2.11],[29.56,2.11],[4.05,21.56]]}],"t":36}]}},{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[-1.64,0],[0,0],[0,1.64],[0,0],[0,0],[2.05,1.43],[0,0]],"o":[[0,0],[0,1.64],[0,0],[1.64,0],[0,0],[0,0],[-2.05,1.43],[0,0],[0,0]],"v":[[4.47,15.62],[4.47,32.37],[7.44,35.34],[32.79,35.34],[35.76,32.37],[35.76,15.62],[23.52,24.19],[16.7,24.19],[4.47,15.62]]}],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[-1.64,0],[0,0],[0,1.64],[0,0],[0,0],[2.05,1.43],[0,0]],"o":[[0,0],[0,1.64],[0,0],[1.64,0],[0,0],[0,0],[-2.05,1.43],[0,0],[0,0]],"v":[[4.47,15.62],[4.47,32.37],[7.44,35.34],[32.79,35.34],[35.76,32.37],[35.76,15.62],[23.52,24.19],[16.7,24.19],[4.47,15.62]]}],"t":18},{"s":[{"c":true,"i":[[0,0],[0,0],[-2.27,0],[0,0],[0,2.27],[0,0],[0,0],[2.83,1.99],[0,0]],"o":[[0,0],[0,2.27],[0,0],[2.27,0],[0,0],[0,0],[-2.83,1.99],[0,0],[0,0]],"v":[[7.95,28.55],[7.95,59.53],[12.07,63.65],[59.52,63.65],[63.64,59.53],[63.64,28.55],[40.52,44.74],[31.08,44.74],[7.95,28.55]]}],"t":36}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":0,"k":[1,1,1]},"r":2,"o":{"a":0,"k":100}}],"ind":1},{"ty":4,"nm":"Rectangle 4459","sr":1,"st":0,"op":37,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":18},{"s":[54,54],"t":36}]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":18},{"s":[54,54],"t":36}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[{"c":true,"i":[[0,-14.22],[0,0],[14.22,0],[0,0],[0,14.22],[0,0],[-14.22,0],[0,0]],"o":[[0,0],[0,14.22],[0,0],[-14.22,0],[0,0],[0,-14.22],[0,0],[14.22,0]],"v":[[78,25.76],[78,52.24],[52.24,78],[25.76,78],[0,52.24],[0,25.76],[25.76,0],[52.24,0]]}],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[{"c":true,"i":[[0,-14.22],[0,0],[14.22,0],[0,0],[0,14.22],[0,0],[-14.22,0],[0,0]],"o":[[0,0],[0,14.22],[0,0],[-14.22,0],[0,0],[0,-14.22],[0,0],[14.22,0]],"v":[[78,25.76],[78,52.24],[52.24,78],[25.76,78],[0,52.24],[0,25.76],[25.76,0],[52.24,0]]}],"t":18},{"s":[{"c":true,"i":[[0,-19.69],[0,0],[19.69,0],[0,0],[0,19.69],[0,0],[-19.69,0],[0,0]],"o":[[0,0],[0,19.69],[0,0],[-19.69,0],[0,0],[0,-19.69],[0,0],[19.69,0]],"v":[[108,35.67],[108,72.33],[72.33,108],[35.67,108],[0,72.33],[0,35.67],[35.67,0],[72.33,0]]}],"t":36}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[76.16850280761719,3.778589963912964],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[76.16850280761719,3.778589963912964],"t":18},{"s":[105.46399688720703,5.231900215148926],"t":36}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[0,0.9412156862745098,0.9451372549019608,0.9529803921568627,0.9973028898239136,0.9412156862745098,0.9451372549019608,0.9529803921568627],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[0,0.9412156862745098,0.9451372549019608,0.9529803921568627,0.9973028898239136,0.9412156862745098,0.9451372549019608,0.9529803921568627],"t":18},{"s":[0,0.11768627450980393,0.5686666666666667,1,0.9973028898239136,0.18141176470588236,0.8523137254901961,0.9996078431372549],"t":36}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[10.937999725341797,69.80460357666016],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[10.937999725341797,69.80460357666016],"t":18},{"s":[15.145000457763672,96.65249633789062],"t":36}]},"r":1,"o":{"a":0,"k":100}}],"ind":2},{"ty":4,"nm":"Mail-app-icon Bg","sr":1,"st":0,"op":37,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":18},{"s":[54,54],"t":36}]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[39,39],"t":18},{"s":[54,54],"t":36}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[78,0],[78,78],[0,78],[0,0]]}],"t":0},{"o":{"x":0.33,"y":1},"i":{"x":0.68,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[78,0],[78,78],[0,78],[0,0]]}],"t":18},{"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[108,0],[108,108],[0,108],[0,0]]}],"t":36}]}}],"ind":3}]}]} \ No newline at end of file diff --git a/assets/icons/icon_logo_android.png b/assets/icons/icon_logo_android.png new file mode 100644 index 000000000..34095febf Binary files /dev/null and b/assets/icons/icon_logo_android.png differ diff --git a/assets/icons/icon_logo_ios.png b/assets/icons/icon_logo_ios.png new file mode 100644 index 000000000..f78c90efb Binary files /dev/null and b/assets/icons/icon_logo_ios.png differ diff --git a/assets/icons/icon_twp.png b/assets/icons/icon_twp.png new file mode 100644 index 000000000..0f5631b3a Binary files /dev/null and b/assets/icons/icon_twp.png differ diff --git a/core/lib/presentation/resources/assets_paths.dart b/core/lib/presentation/resources/assets_paths.dart index a8c740116..cc72317eb 100644 --- a/core/lib/presentation/resources/assets_paths.dart +++ b/core/lib/presentation/resources/assets_paths.dart @@ -2,4 +2,5 @@ class AssetsPaths { static const images = 'assets/images/'; static const icons = 'assets/icons/'; static const configurationImages = 'configurations/icons/'; + static const animations = 'assets/animations/'; } \ No newline at end of file diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart index a669546e8..9a0640c99 100644 --- a/core/lib/presentation/resources/image_paths.dart +++ b/core/lib/presentation/resources/image_paths.dart @@ -231,11 +231,21 @@ class ImagePaths { String get icDoubleArrowDown => _getImagePath('ic_double_arrow_down.svg'); String get icRefreshQuotas => _getImagePath('ic_refresh_quotas.svg'); String get icCreateFilter => _getImagePath('ic_create_filter.svg'); + String get icTwakeWorkplace => _getIconPath('icon_twp.png'); + String get animLottieTmail => _getAnimationPath('lottie-tmail.json'); String _getImagePath(String imageName) { return AssetsPaths.images + imageName; } + String _getIconPath(String iconName) { + return AssetsPaths.icons + iconName; + } + + String _getAnimationPath(String animationName) { + return AssetsPaths.animations + animationName; + } + String getConfigurationImagePath(String imageName) { return AssetsPaths.configurationImages + imageName; } diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 64df0a040..e5f000209 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -160,6 +160,10 @@ PODS: - libwebp/sharpyuv (1.5.0) - libwebp/webp (1.5.0): - libwebp/sharpyuv + - lottie-ios (4.3.4) + - lottie_native (0.0.1): + - Flutter + - lottie-ios (~> 4.3.4) - Mantle (2.2.0): - Mantle/extobjc (= 2.2.0) - Mantle/extobjc (2.2.0) @@ -234,6 +238,7 @@ DEPENDENCIES: - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - flutter_web_auth_2 (from `.symlinks/plugins/flutter_web_auth_2/ios`) + - lottie_native (from `.symlinks/plugins/lottie_native/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - patrol (from `.symlinks/plugins/patrol/darwin`) @@ -262,6 +267,7 @@ SPEC REPOS: - GoogleDataTransport - GoogleUtilities - libwebp + - lottie-ios - Mantle - nanopb - OrderedSet @@ -316,6 +322,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_secure_storage/ios" flutter_web_auth_2: :path: ".symlinks/plugins/flutter_web_auth_2/ios" + lottie_native: + :path: ".symlinks/plugins/lottie_native/ios" package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_foundation: @@ -378,6 +386,8 @@ SPEC CHECKSUMS: GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 + lottie-ios: 3d98679b41fa6fd6aff2352b3953dbd3df8a397e + lottie_native: e880defad595321983cebac72516c1a10b6df719 Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 diff --git a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage.png b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage.png index 3007ded72..697f2781e 100644 Binary files a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage.png and b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage.png differ diff --git a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@2x.png b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@2x.png index 4224569cb..7aaedacd3 100644 Binary files a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@2x.png and b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@2x.png differ diff --git a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@3x.png b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@3x.png index 4e78fcf0e..030aac524 100644 Binary files a/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@3x.png and b/ios/Runner/Assets.xcassets/BrandingImage.imageset/BrandingImage@3x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png index 71e9c817e..3107d37fa 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png and b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png index 99b90b3ba..bd1dfa0b3 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png index f9b8f6388..f44f4d0d4 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png index e010ef3ed..88124b0b8 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard index 9b13a55f9..d7cb10e5b 100644 --- a/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -1,9 +1,10 @@ - + - + + @@ -11,10 +12,6 @@ - - - - @@ -22,25 +19,32 @@ - - + + + + + + - - + + + + + + + - - - + - - - - - + + + + + @@ -50,8 +54,8 @@ - + - + diff --git a/lib/features/home/presentation/home_controller.dart b/lib/features/home/presentation/home_controller.dart index 721125c1f..fa0f6bfc4 100644 --- a/lib/features/home/presentation/home_controller.dart +++ b/lib/features/home/presentation/home_controller.dart @@ -89,7 +89,8 @@ class HomeController extends ReloadableController { static void downloadCallback(String id, DownloadTaskStatus status, int progress) {} - void _handleNavigateToScreen() { + Future _handleNavigateToScreen() async { + await Future.delayed(2.seconds); final arguments = Get.arguments; if (arguments is LoginNavigateArguments) { _handleLoginNavigateArguments(arguments); diff --git a/lib/features/home/presentation/home_view.dart b/lib/features/home/presentation/home_view.dart index eca67e6eb..4bfbccd7a 100644 --- a/lib/features/home/presentation/home_view.dart +++ b/lib/features/home/presentation/home_view.dart @@ -1,7 +1,10 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/utils/theme_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:lottie_native/lottie_native.dart'; import 'package:tmail_ui_user/features/home/presentation/home_controller.dart'; class HomeView extends GetWidget { @@ -11,6 +14,34 @@ class HomeView extends GetWidget { Widget build(BuildContext context) { ThemeUtils.setSystemDarkUIStyle(); + if (PlatformInfo.isIOS) { + return ColoredBox( + color: Colors.white, + child: Stack( + alignment: Alignment.center, + children: [ + SizedBox( + width: 176, + height: 176, + child: LottieView.fromAsset( + filePath: controller.imagePaths.animLottieTmail, + loop: false, + ), + ), + Positioned( + bottom: 40, + child: SafeArea( + child: Image.asset( + controller.imagePaths.icTwakeWorkplace, + width: 210, + ), + ), + ), + ], + ), + ); + } + return Container( color: AppColor.primaryLightColor, child: const SizedBox( diff --git a/pubspec.lock b/pubspec.lock index 10b25bbed..7c4ba6cdf 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1434,6 +1434,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + lottie_native: + dependency: "direct main" + description: + name: lottie_native + sha256: e834047f8172a0fe070eac6355d3c646b241b411619a26c914f0d804909b51a1 + url: "https://pub.dev" + source: hosted + version: "0.1.1" matcher: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a75d0cd92..5115ab202 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -265,6 +265,8 @@ dependencies: url: https://github.com/linagora/twake-previewer-flutter.git ref: main + lottie_native: 0.1.1 + dev_dependencies: flutter_test: sdk: flutter @@ -324,6 +326,7 @@ flutter: assets: - assets/images/ - assets/icons/ + - assets/animations/ - env.file - configurations/ - configurations/icons/