Selaa lähdekoodia

Added toast message component

Alex Tran 3 vuotta sitten
vanhempi
commit
55cba8aa5f

BIN
.DS_Store


BIN
design/immich-logo-no-outline.png


+ 10 - 0
mobile/ios/Podfile.lock

@@ -2,6 +2,9 @@ PODS:
   - device_info_plus (0.0.1):
   - device_info_plus (0.0.1):
     - Flutter
     - Flutter
   - Flutter (1.0.0)
   - Flutter (1.0.0)
+  - fluttertoast (0.0.2):
+    - Flutter
+    - Toast
   - FMDB (2.7.5):
   - FMDB (2.7.5):
     - FMDB/standard (= 2.7.5)
     - FMDB/standard (= 2.7.5)
   - FMDB/standard (2.7.5)
   - FMDB/standard (2.7.5)
@@ -13,10 +16,12 @@ PODS:
   - sqflite (0.0.2):
   - sqflite (0.0.2):
     - Flutter
     - Flutter
     - FMDB (>= 2.7.5)
     - FMDB (>= 2.7.5)
+  - Toast (4.0.0)
 
 
 DEPENDENCIES:
 DEPENDENCIES:
   - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
   - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
   - Flutter (from `Flutter`)
   - Flutter (from `Flutter`)
+  - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
   - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
   - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
   - photo_manager (from `.symlinks/plugins/photo_manager/ios`)
   - photo_manager (from `.symlinks/plugins/photo_manager/ios`)
   - sqflite (from `.symlinks/plugins/sqflite/ios`)
   - sqflite (from `.symlinks/plugins/sqflite/ios`)
@@ -24,12 +29,15 @@ DEPENDENCIES:
 SPEC REPOS:
 SPEC REPOS:
   trunk:
   trunk:
     - FMDB
     - FMDB
+    - Toast
 
 
 EXTERNAL SOURCES:
 EXTERNAL SOURCES:
   device_info_plus:
   device_info_plus:
     :path: ".symlinks/plugins/device_info_plus/ios"
     :path: ".symlinks/plugins/device_info_plus/ios"
   Flutter:
   Flutter:
     :path: Flutter
     :path: Flutter
+  fluttertoast:
+    :path: ".symlinks/plugins/fluttertoast/ios"
   path_provider_ios:
   path_provider_ios:
     :path: ".symlinks/plugins/path_provider_ios/ios"
     :path: ".symlinks/plugins/path_provider_ios/ios"
   photo_manager:
   photo_manager:
@@ -40,10 +48,12 @@ EXTERNAL SOURCES:
 SPEC CHECKSUMS:
 SPEC CHECKSUMS:
   device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
   device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
   Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
   Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
+  fluttertoast: 6122fa75143e992b1d3470f61000f591a798cc58
   FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
   FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
   path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5
   path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5
   photo_manager: 84fa94fbeb82e607333ea9a13c43b58e0903a463
   photo_manager: 84fa94fbeb82e607333ea9a13c43b58e0903a463
   sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
   sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
+  Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
 
 
 PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
 PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
 
 

+ 6 - 3
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/device_info.service.dart';
 import 'package:immich_mobile/shared/services/network.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/shared/models/device_info.model.dart';
-import 'package:immich_mobile/utils/dio_http_interceptor.dart';
 
 
 class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
 class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
   AuthenticationNotifier()
   AuthenticationNotifier()
@@ -45,8 +44,12 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
       Hive.box(userInfoBox).put(serverEndpointKey, serverEndpoint);
       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;
       return false;
     }
     }
 
 

+ 5 - 1
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:google_fonts/google_fonts.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
 import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
+import 'package:immich_mobile/shared/ui/immich_toast.dart';
 
 
 class LoginForm extends HookConsumerWidget {
 class LoginForm extends HookConsumerWidget {
   const LoginForm({Key? key}) : super(key: key);
   const LoginForm({Key? key}) : super(key: key);
@@ -116,7 +117,10 @@ class LoginButton extends ConsumerWidget {
           if (isAuthenicated) {
           if (isAuthenicated) {
             AutoRouter.of(context).pushNamed("/home-page");
             AutoRouter.of(context).pushNamed("/home-page");
           } else {
           } 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"));
         child: const Text("Login"));

+ 69 - 0
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),
+    );
+  }
+}

+ 7 - 0
mobile/pubspec.lock

@@ -359,6 +359,13 @@ packages:
     description: flutter
     description: flutter
     source: sdk
     source: sdk
     version: "0.0.0"
     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:
   frontend_server_client:
     dependency: transitive
     dependency: transitive
     description:
     description:

+ 1 - 0
mobile/pubspec.yaml

@@ -27,6 +27,7 @@ dependencies:
   transparent_image: ^2.0.0
   transparent_image: ^2.0.0
   visibility_detector: ^0.2.2
   visibility_detector: ^0.2.2
   flutter_launcher_icons: "^0.9.2"
   flutter_launcher_icons: "^0.9.2"
+  fluttertoast: ^8.0.8
 
 
 dev_dependencies:
 dev_dependencies:
   flutter_test:
   flutter_test: