From f468016f461136d07ecf0d3bebd5959f95231d66 Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Sun, 21 Jan 2024 19:54:18 +0100 Subject: [PATCH 1/2] feat/ added internet permission --- android/app/src/main/AndroidManifest.xml | 1 + lib/generated/intl/messages_en.dart | 2 ++ lib/generated/l10n.dart | 10 +++++++ lib/l10n/intl_en.arb | 3 ++- lib/ui/views/new_dish/new_dish_viewmodel.dart | 10 +++++-- lib/ui/views/signup/signup_viewmodel.dart | 9 +++++-- pubspec.lock | 26 +++++++++---------- test/helpers/test_helpers.mocks.dart | 23 ++++++++++++++++ 8 files changed, 66 insertions(+), 18 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index de8afed..c74e15e 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,4 +1,5 @@ + _notInlinedMessages(_) => { + "account_created_successfully": MessageLookupByLibrary.simpleMessage( + "Account created successfully"), "already_have_an_account": MessageLookupByLibrary.simpleMessage("Already have an account?"), "are_you_sure": MessageLookupByLibrary.simpleMessage( diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 51e1e3a..f75d751 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -599,6 +599,16 @@ class S { args: [], ); } + + /// `Account created successfully` + String get account_created_successfully { + return Intl.message( + 'Account created successfully', + name: 'account_created_successfully', + desc: '', + args: [], + ); + } } class AppLocalizationDelegate extends LocalizationsDelegate { diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 4ba7964..5895c62 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -54,5 +54,6 @@ "logout": "LOGOUT ", "no_dish_available": "There are no available dish to view currently", "generate_recipe_contents": "Generating Recipe contents", - "connection_error": "Seems like we got a problem connecting to the server. Kindly try again when you have a stronger network" + "connection_error": "Seems like we got a problem connecting to the server. Kindly try again when you have a stronger network", + "account_created_successfully": "Account created successfully" } \ No newline at end of file diff --git a/lib/ui/views/new_dish/new_dish_viewmodel.dart b/lib/ui/views/new_dish/new_dish_viewmodel.dart index 7ee40df..b44aa96 100644 --- a/lib/ui/views/new_dish/new_dish_viewmodel.dart +++ b/lib/ui/views/new_dish/new_dish_viewmodel.dart @@ -28,14 +28,20 @@ class NewDishViewModel extends FormViewModel { final response = await _dishService.createDish(info); - if (response != null) { + if (response == null) { DialogResponse? dialogResponse = await _dialogService.showDialog( - description: response, + title: S.current.unknown_error, ); if (dialogResponse?.confirmed == true) { _navigationService.back(); } + } else { + DialogResponse? dialogResponse = + await _dialogService.showDialog(title: response); + if (dialogResponse?.confirmed == true) { + _navigationService.back(); + } } } on RecipeException catch (e) { _dialogService.showDialog( diff --git a/lib/ui/views/signup/signup_viewmodel.dart b/lib/ui/views/signup/signup_viewmodel.dart index 5877392..56d5a5c 100644 --- a/lib/ui/views/signup/signup_viewmodel.dart +++ b/lib/ui/views/signup/signup_viewmodel.dart @@ -7,6 +7,7 @@ import 'package:receipe_app/services/authentication_service.dart'; import 'package:receipe_app/ui/views/signup/signup_view.form.dart'; import 'package:stacked/stacked.dart'; import 'package:stacked_services/stacked_services.dart'; +import 'package:receipe_app/generated/l10n.dart'; class SignupViewModel extends FormViewModel { final _navigationService = locator(); @@ -37,9 +38,13 @@ class SignupViewModel extends FormViewModel { final User? response = await _authenticationService.register(registerModel); - if (response != null) { + if (response == null) { await _dialogService.showDialog( - description: "Account created successfully.", + description: S.current.unknown_error, + ); + } else { + await _dialogService.showDialog( + description: S.current.account_created_successfully, ); } } on RecipeException catch (e) { diff --git a/pubspec.lock b/pubspec.lock index 0992e05..e986efb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -173,10 +173,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" convert: dependency: transitive description: @@ -513,10 +513,10 @@ packages: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" mime: dependency: transitive description: @@ -830,10 +830,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stacked: dependency: "direct main" description: @@ -870,10 +870,10 @@ packages: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -910,10 +910,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.1" timing: dependency: transitive description: @@ -990,10 +990,10 @@ packages: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -1035,5 +1035,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0 <4.0.0" + dart: ">=3.2.0-194.0.dev <4.0.0" flutter: ">=3.13.0" diff --git a/test/helpers/test_helpers.mocks.dart b/test/helpers/test_helpers.mocks.dart index 72a8236..c457e53 100644 --- a/test/helpers/test_helpers.mocks.dart +++ b/test/helpers/test_helpers.mocks.dart @@ -944,6 +944,29 @@ class MockDishService extends _i1.Mock implements _i17.DishService { ), )), ) as _i6.Future<_i2.RecipesResponseModel>); + @override + _i6.Future<_i2.RecipesResponseModel> getUserDishes() => (super.noSuchMethod( + Invocation.method( + #getUserDishes, + [], + ), + returnValue: _i6.Future<_i2.RecipesResponseModel>.value( + _FakeRecipesResponseModel_0( + this, + Invocation.method( + #getUserDishes, + [], + ), + )), + returnValueForMissingStub: _i6.Future<_i2.RecipesResponseModel>.value( + _FakeRecipesResponseModel_0( + this, + Invocation.method( + #getUserDishes, + [], + ), + )), + ) as _i6.Future<_i2.RecipesResponseModel>); } /// A class which mocks [DatabaseService]. From b20fbc5bf7145746e25caac26ba0698cdc00fe98 Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Thu, 29 Feb 2024 15:00:09 +0100 Subject: [PATCH 2/2] fix/ null_check_errors --- lib/ui/views/new_dish/new_dish_viewmodel.dart | 24 ++++++++----------- lib/ui/views/signup/signup_viewmodel.dart | 8 +++---- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/lib/ui/views/new_dish/new_dish_viewmodel.dart b/lib/ui/views/new_dish/new_dish_viewmodel.dart index b44aa96..4744e10 100644 --- a/lib/ui/views/new_dish/new_dish_viewmodel.dart +++ b/lib/ui/views/new_dish/new_dish_viewmodel.dart @@ -10,9 +10,9 @@ import 'package:stacked/stacked.dart'; import 'package:stacked_services/stacked_services.dart'; class NewDishViewModel extends FormViewModel { - final _navigationService = locator(); + final NavigationService _navigationService = locator(); final DishService _dishService = locator(); - final _dialogService = locator(); + final DialogService _dialogService = locator(); final _logger = getLogger('NewDishViewModel'); @@ -28,22 +28,18 @@ class NewDishViewModel extends FormViewModel { final response = await _dishService.createDish(info); + _logger.i('create dish response: $response'); + + // Null first Approach - cases API returns NULL if (response == null) { - DialogResponse? dialogResponse = - await _dialogService.showDialog( + _dialogService.showDialog( title: S.current.unknown_error, ); - if (dialogResponse?.confirmed == true) { - _navigationService.back(); - } - } else { - DialogResponse? dialogResponse = - await _dialogService.showDialog(title: response); - if (dialogResponse?.confirmed == true) { - _navigationService.back(); - } } - } on RecipeException catch (e) { + + await _dialogService.showDialog(title: response); + } on RecipeException catch (e, s) { + _logger.e('Network connection Error in creating dish', e, s); _dialogService.showDialog( description: e.message, ); diff --git a/lib/ui/views/signup/signup_viewmodel.dart b/lib/ui/views/signup/signup_viewmodel.dart index 56d5a5c..d6e641d 100644 --- a/lib/ui/views/signup/signup_viewmodel.dart +++ b/lib/ui/views/signup/signup_viewmodel.dart @@ -42,11 +42,11 @@ class SignupViewModel extends FormViewModel { await _dialogService.showDialog( description: S.current.unknown_error, ); - } else { - await _dialogService.showDialog( - description: S.current.account_created_successfully, - ); } + + await _dialogService.showDialog( + description: S.current.account_created_successfully, + ); } on RecipeException catch (e) { _dialogService.showDialog( description: e.message,