diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000..932e83ebb9 Binary files /dev/null and b/.DS_Store differ diff --git a/design/immich-logo-no-outline.png b/design/immich-logo-no-outline.png new file mode 100644 index 0000000000..d4e7085f12 Binary files /dev/null and b/design/immich-logo-no-outline.png differ diff --git a/mobile/ios/Podfile.lock b/mobile/ios/Podfile.lock index 296e770b67..2f2de0c109 100644 --- a/mobile/ios/Podfile.lock +++ b/mobile/ios/Podfile.lock @@ -2,6 +2,9 @@ PODS: - device_info_plus (0.0.1): - Flutter - Flutter (1.0.0) + - fluttertoast (0.0.2): + - Flutter + - Toast - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) @@ -13,10 +16,12 @@ PODS: - sqflite (0.0.2): - Flutter - FMDB (>= 2.7.5) + - Toast (4.0.0) DEPENDENCIES: - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - Flutter (from `Flutter`) + - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) - photo_manager (from `.symlinks/plugins/photo_manager/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`) @@ -24,12 +29,15 @@ DEPENDENCIES: SPEC REPOS: trunk: - FMDB + - Toast EXTERNAL SOURCES: device_info_plus: :path: ".symlinks/plugins/device_info_plus/ios" Flutter: :path: Flutter + fluttertoast: + :path: ".symlinks/plugins/fluttertoast/ios" path_provider_ios: :path: ".symlinks/plugins/path_provider_ios/ios" photo_manager: @@ -40,10 +48,12 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a + fluttertoast: 6122fa75143e992b1d3470f61000f591a798cc58 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5 photo_manager: 84fa94fbeb82e607333ea9a13c43b58e0903a463 sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 + Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c diff --git a/mobile/lib/modules/login/providers/authentication.provider.dart b/mobile/lib/modules/login/providers/authentication.provider.dart index 90699f1d39..caa52a41a7 100644 --- a/mobile/lib/modules/login/providers/authentication.provider.dart +++ b/mobile/lib/modules/login/providers/authentication.provider.dart @@ -9,7 +9,6 @@ import 'package:immich_mobile/shared/services/backup.service.dart'; import 'package:immich_mobile/shared/services/device_info.service.dart'; import 'package:immich_mobile/shared/services/network.service.dart'; import 'package:immich_mobile/shared/models/device_info.model.dart'; -import 'package:immich_mobile/utils/dio_http_interceptor.dart'; class AuthenticationNotifier extends StateNotifier { AuthenticationNotifier() @@ -45,8 +44,12 @@ class AuthenticationNotifier extends StateNotifier { Hive.box(userInfoBox).put(serverEndpointKey, serverEndpoint); } - bool isServerEndpointVerified = await _networkService.pingServer(); - if (!isServerEndpointVerified) { + try { + bool isServerEndpointVerified = await _networkService.pingServer(); + if (!isServerEndpointVerified) { + return false; + } + } catch (e) { return false; } diff --git a/mobile/lib/modules/login/ui/login_form.dart b/mobile/lib/modules/login/ui/login_form.dart index 9757d476ee..47c8f66e61 100644 --- a/mobile/lib/modules/login/ui/login_form.dart +++ b/mobile/lib/modules/login/ui/login_form.dart @@ -4,6 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/modules/login/providers/authentication.provider.dart'; +import 'package:immich_mobile/shared/ui/immich_toast.dart'; class LoginForm extends HookConsumerWidget { const LoginForm({Key? key}) : super(key: key); @@ -116,7 +117,10 @@ class LoginButton extends ConsumerWidget { if (isAuthenicated) { AutoRouter.of(context).pushNamed("/home-page"); } else { - debugPrint("BAD LOGIN TRY AGAIN - Show UI Here"); + ImmichToast.show( + context: context, + msg: "Error logging you in, check server url, emald and password!", + toastType: ToastType.error); } }, child: const Text("Login")); diff --git a/mobile/lib/shared/ui/immich_toast.dart b/mobile/lib/shared/ui/immich_toast.dart new file mode 100644 index 0000000000..89781ccb48 --- /dev/null +++ b/mobile/lib/shared/ui/immich_toast.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; + +enum ToastType { info, success, error } + +class ImmichToast { + static show({ + required BuildContext context, + required String msg, + ToastType toastType = ToastType.info, + }) { + FToast fToast; + + fToast = FToast(); + fToast.init(context); + + fToast.showToast( + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 12.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(5.0), + color: Colors.grey[50], + border: Border.all( + color: Colors.black12, + width: 1, + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + (toastType == ToastType.info) + ? Icon( + Icons.info_outline_rounded, + color: Theme.of(context).primaryColor, + ) + : Container(), + (toastType == ToastType.success) + ? const Icon( + Icons.check, + color: Color.fromARGB(255, 104, 248, 140), + ) + : Container(), + (toastType == ToastType.error) + ? const Icon( + Icons.error_outline_rounded, + color: Color.fromARGB(255, 240, 162, 156), + ) + : Container(), + const SizedBox( + width: 12.0, + ), + Flexible( + child: Text( + msg, + style: TextStyle( + color: Theme.of(context).primaryColor, + fontWeight: FontWeight.bold, + fontSize: 15, + ), + ), + ), + ], + ), + ), + gravity: ToastGravity.TOP, + toastDuration: const Duration(seconds: 2), + ); + } +} diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index 2b015d255c..5b51a0e06a 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -359,6 +359,13 @@ packages: description: flutter source: sdk version: "0.0.0" + fluttertoast: + dependency: "direct main" + description: + name: fluttertoast + url: "https://pub.dartlang.org" + source: hosted + version: "8.0.8" frontend_server_client: dependency: transitive description: diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index e1978e0cc2..abee88f574 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -27,6 +27,7 @@ dependencies: transparent_image: ^2.0.0 visibility_detector: ^0.2.2 flutter_launcher_icons: "^0.9.2" + fluttertoast: ^8.0.8 dev_dependencies: flutter_test: