From 61b9e1c7bc1b3cb0fff148ae3fe224ebeb28438a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Tue, 18 Apr 2023 23:29:56 +0200 Subject: [PATCH 01/19] sign_in_form bloc and domain models --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 29 + .../sign_in_form_bloc/sign_in_form_event.dart | 14 + .../sign_in_form_bloc/sign_in_form_state.dart | 20 + lib/domain/auth/auth_failure.dart | 11 + lib/domain/auth/value_objects.dart | 30 + lib/domain/core/errors.dart | 16 + lib/domain/core/value_failure.dart | 17 + lib/domain/core/value_objects.dart | 34 + lib/domain/core/value_validators.dart | 31 + .../pages/login_page/login_page.dart | 8 +- .../lib/src/domain/core/typedefs.dart | 2 +- .../lib/src/gen/proto/helper.txt | 1 - .../lib/src/gen/proto/users.pb.dart | 1129 ----------------- .../lib/src/gen/proto/users.pbenum.dart | 6 - .../lib/src/gen/proto/users.pbgrpc.dart | 185 --- .../lib/src/gen/proto/users.pbjson.dart | 158 --- .../src/infrastructure/users_repository.dart | 2 +- .../lib/users_repository.dart | 3 +- 18 files changed, 213 insertions(+), 1483 deletions(-) create mode 100644 lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart create mode 100644 lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart create mode 100644 lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart create mode 100644 lib/domain/auth/auth_failure.dart create mode 100644 lib/domain/auth/value_objects.dart create mode 100644 lib/domain/core/errors.dart create mode 100644 lib/domain/core/value_failure.dart create mode 100644 lib/domain/core/value_objects.dart create mode 100644 lib/domain/core/value_validators.dart delete mode 100644 packages/users_repository/lib/src/gen/proto/helper.txt delete mode 100644 packages/users_repository/lib/src/gen/proto/users.pb.dart delete mode 100644 packages/users_repository/lib/src/gen/proto/users.pbenum.dart delete mode 100644 packages/users_repository/lib/src/gen/proto/users.pbgrpc.dart delete mode 100644 packages/users_repository/lib/src/gen/proto/users.pbjson.dart diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart new file mode 100644 index 0000000..55f6eb8 --- /dev/null +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -0,0 +1,29 @@ +import 'package:bloc/bloc.dart'; +import 'package:fpdart/fpdart.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:users_repository/users_repository.dart'; + +import '../../../domain/auth/auth_failure.dart'; +import '../../../domain/auth/value_objects.dart'; + +part 'sign_in_form_event.dart'; +part 'sign_in_form_state.dart'; +part 'sign_in_form_bloc.freezed.dart'; + +class SignInFormBloc extends Bloc { + SignInFormBloc(this._usersRepository) : super(SignInFormState.initial()) { + on((event, emit) { + emit(state.copyWith( + emailAddress: EmailAddress(event.email), + )); + }); + + on((event, emit) { + emit(state.copyWith( + emailAddress: EmailAddress(event.password), + )); + }); + } + + final UsersRepositoryI _usersRepository; +} diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart new file mode 100644 index 0000000..0b51c85 --- /dev/null +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart @@ -0,0 +1,14 @@ +part of 'sign_in_form_bloc.dart'; + +@freezed +class SignInFormEvent with _$SignInFormEvent { + const factory SignInFormEvent.emailChanged(String email) = EmailChanged; + + const factory SignInFormEvent.passwordChanged(String password) = + PasswordChanged; + + const factory SignInFormEvent.signInWithEmailWithPasswordPressed({ + required String email, + required String password, + }) = SignInWithEmailWithPasswordPressed; +} diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart new file mode 100644 index 0000000..b1ac12f --- /dev/null +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart @@ -0,0 +1,20 @@ +part of 'sign_in_form_bloc.dart'; + +@freezed +class SignInFormState with _$SignInFormState { + factory SignInFormState({ + required EmailAddress emailAddress, + required Password password, + required bool showErrorMessages, + required bool isSubmitting, + required Either authFailureOrSuccessOption, + }) = _SignInFormState; + + factory SignInFormState.initial() => SignInFormState( + emailAddress: EmailAddress(''), + password: Password(''), + isSubmitting: false, + showErrorMessages: false, + authFailureOrSuccessOption: right(unit), + ); +} diff --git a/lib/domain/auth/auth_failure.dart b/lib/domain/auth/auth_failure.dart new file mode 100644 index 0000000..93efc96 --- /dev/null +++ b/lib/domain/auth/auth_failure.dart @@ -0,0 +1,11 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'auth_failure.freezed.dart'; + +@freezed +class AuthFailure with _$AuthFailure { + const factory AuthFailure.cancelledByUser() = CancelledByUser; + const factory AuthFailure.serverError() = ServerError; + const factory AuthFailure.emailAlreadyInUse() = EmailAlreadyInUse; + const factory AuthFailure.invalidEmailOrPassword() = InvalidEmailOrPassword; +} diff --git a/lib/domain/auth/value_objects.dart b/lib/domain/auth/value_objects.dart new file mode 100644 index 0000000..a72aabf --- /dev/null +++ b/lib/domain/auth/value_objects.dart @@ -0,0 +1,30 @@ +import 'package:fpdart/fpdart.dart'; + +import '../core/value_failure.dart'; +import '../core/value_objects.dart'; +import '../core/value_validators.dart'; + +class EmailAddress extends ValueObject { + factory EmailAddress(String input) { + return EmailAddress._( + validateEmailAddress(input), + ); + } + + const EmailAddress._(this.value); + @override + final Either, String> value; +} + +class Password extends ValueObject { + factory Password(String input) { + return Password._( + validatePassword(input), + ); + } + + const Password._(this.value); + + @override + final Either, String> value; +} diff --git a/lib/domain/core/errors.dart b/lib/domain/core/errors.dart new file mode 100644 index 0000000..4429f85 --- /dev/null +++ b/lib/domain/core/errors.dart @@ -0,0 +1,16 @@ +import 'value_failure.dart'; + +class UnAuthenticatedError extends Error {} + +class UnexpectedValueError extends Error { + UnexpectedValueError(this.valueFailure); + + final ValueFailure valueFailure; + + @override + String toString() { + const explanation = "Encountered a ValueFailure at an unrecoverable point."; + + return Error.safeToString('$explanation Failure was: $valueFailure'); + } +} diff --git a/lib/domain/core/value_failure.dart b/lib/domain/core/value_failure.dart new file mode 100644 index 0000000..a7ab733 --- /dev/null +++ b/lib/domain/core/value_failure.dart @@ -0,0 +1,17 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +part 'value_failure.freezed.dart'; + +@freezed +class ValueFailure with _$ValueFailure { + const factory ValueFailure.empty({ + required T failedValue, + }) = Empty; + + const factory ValueFailure.invalidEmail({ + required T failedValue, + }) = InvalidEmail; + + const factory ValueFailure.invalidPassword({ + required T failedValue, + }) = ShortPassword; +} diff --git a/lib/domain/core/value_objects.dart b/lib/domain/core/value_objects.dart new file mode 100644 index 0000000..5eadf58 --- /dev/null +++ b/lib/domain/core/value_objects.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:fpdart/fpdart.dart'; +import 'errors.dart'; +import 'value_failure.dart'; + +@immutable +abstract class ValueObject { + const ValueObject(); + Either, T> get value; + + T getOrCrash() { + return value.fold( + (l) => throw UnexpectedValueError(l), + id, + ); + } + + bool isValid() => value.isRight(); + + @override + bool operator ==(covariant ValueObject other) { + if (identical(this, other)) { + return true; + } + + return other.value == value; + } + + @override + int get hashCode => value.hashCode; + + @override + String toString() => 'ValueObject(value: $value)'; +} diff --git a/lib/domain/core/value_validators.dart b/lib/domain/core/value_validators.dart new file mode 100644 index 0000000..0ad9aed --- /dev/null +++ b/lib/domain/core/value_validators.dart @@ -0,0 +1,31 @@ +import 'package:fpdart/fpdart.dart'; +import 'value_failure.dart'; + +Either, String> validateStringNotEmpty(String input) { + if (input.isNotEmpty) { + return right(input); + } else { + return left(ValueFailure.empty(failedValue: input)); + } +} + +Either, String> validateEmailAddress(String input) { + final valid = input.length > 3 && input.contains('@'); + + if (valid) { + return right(input); + } else { + return left(ValueFailure.invalidEmail(failedValue: input)); + } +} + +Either, String> validatePassword(String input) { + // TODO: implement password regex + // https://stackoverflow.com/questions/19605150/regex-for-password-must-contain-at-least-eight-characters-at-least-one-number-a + + if (input.length >= 6) { + return right(input); + } else { + return left(ValueFailure.invalidPassword(failedValue: input)); + } +} diff --git a/lib/presentation/pages/login_page/login_page.dart b/lib/presentation/pages/login_page/login_page.dart index a33f20a..5893948 100644 --- a/lib/presentation/pages/login_page/login_page.dart +++ b/lib/presentation/pages/login_page/login_page.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:users_repository/users_repository.dart'; +import '../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import 'login_page_view.dart'; class LoginPage extends StatelessWidget { @@ -7,6 +10,9 @@ class LoginPage extends StatelessWidget { @override Widget build(BuildContext context) { - return const LoginPageView(); + return BlocProvider( + create: (context) => SignInFormBloc(context.read()), + child: const LoginPageView(), + ); } } diff --git a/packages/users_repository/lib/src/domain/core/typedefs.dart b/packages/users_repository/lib/src/domain/core/typedefs.dart index d691ec2..e241970 100644 --- a/packages/users_repository/lib/src/domain/core/typedefs.dart +++ b/packages/users_repository/lib/src/domain/core/typedefs.dart @@ -1,6 +1,6 @@ import 'package:fpdart/fpdart.dart'; -import '../../gen/proto/users.pb.dart'; +import '../../gen/proto/v1/users.pb.dart'; import '../users/call_failure.dart'; typedef CallResult = Either; diff --git a/packages/users_repository/lib/src/gen/proto/helper.txt b/packages/users_repository/lib/src/gen/proto/helper.txt deleted file mode 100644 index 90942fa..0000000 --- a/packages/users_repository/lib/src/gen/proto/helper.txt +++ /dev/null @@ -1 +0,0 @@ -this file just makes sure that the directory goes to github diff --git a/packages/users_repository/lib/src/gen/proto/users.pb.dart b/packages/users_repository/lib/src/gen/proto/users.pb.dart deleted file mode 100644 index 7df7d41..0000000 --- a/packages/users_repository/lib/src/gen/proto/users.pb.dart +++ /dev/null @@ -1,1129 +0,0 @@ -/// -// Generated code. Do not modify. -// source: users.proto -// -// @dart = 2.12 -// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name - -import 'dart:core' as $core; - -import 'package:protobuf/protobuf.dart' as $pb; - -class GetUserRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'GetUserRequest', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'username') - ..hasRequiredFields = false; - - GetUserRequest._() : super(); - factory GetUserRequest({ - $core.String? username, - }) { - final _result = create(); - if (username != null) { - _result.username = username; - } - return _result; - } - factory GetUserRequest.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory GetUserRequest.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - GetUserRequest clone() => GetUserRequest()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - GetUserRequest copyWith(void Function(GetUserRequest) updates) => - super.copyWith((message) => updates(message as GetUserRequest)) - as GetUserRequest; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static GetUserRequest create() => GetUserRequest._(); - GetUserRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static GetUserRequest getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static GetUserRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get username => $_getSZ(0); - @$pb.TagNumber(1) - set username($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasUsername() => $_has(0); - @$pb.TagNumber(1) - void clearUsername() => clearField(1); -} - -class GetUserResponse extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'GetUserResponse', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'id') - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'username') - ..aOS( - 3, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'email') - ..aOS( - 4, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'code') - ..aOS( - 5, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'message') - ..hasRequiredFields = false; - - GetUserResponse._() : super(); - factory GetUserResponse({ - $core.String? id, - $core.String? username, - $core.String? email, - $core.String? code, - $core.String? message, - }) { - final _result = create(); - if (id != null) { - _result.id = id; - } - if (username != null) { - _result.username = username; - } - if (email != null) { - _result.email = email; - } - if (code != null) { - _result.code = code; - } - if (message != null) { - _result.message = message; - } - return _result; - } - factory GetUserResponse.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory GetUserResponse.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - GetUserResponse clone() => GetUserResponse()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - GetUserResponse copyWith(void Function(GetUserResponse) updates) => - super.copyWith((message) => updates(message as GetUserResponse)) - as GetUserResponse; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static GetUserResponse create() => GetUserResponse._(); - GetUserResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static GetUserResponse getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static GetUserResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get id => $_getSZ(0); - @$pb.TagNumber(1) - set id($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasId() => $_has(0); - @$pb.TagNumber(1) - void clearId() => clearField(1); - - @$pb.TagNumber(2) - $core.String get username => $_getSZ(1); - @$pb.TagNumber(2) - set username($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(2) - $core.bool hasUsername() => $_has(1); - @$pb.TagNumber(2) - void clearUsername() => clearField(2); - - @$pb.TagNumber(3) - $core.String get email => $_getSZ(2); - @$pb.TagNumber(3) - set email($core.String v) { - $_setString(2, v); - } - - @$pb.TagNumber(3) - $core.bool hasEmail() => $_has(2); - @$pb.TagNumber(3) - void clearEmail() => clearField(3); - - @$pb.TagNumber(4) - $core.String get code => $_getSZ(3); - @$pb.TagNumber(4) - set code($core.String v) { - $_setString(3, v); - } - - @$pb.TagNumber(4) - $core.bool hasCode() => $_has(3); - @$pb.TagNumber(4) - void clearCode() => clearField(4); - - @$pb.TagNumber(5) - $core.String get message => $_getSZ(4); - @$pb.TagNumber(5) - set message($core.String v) { - $_setString(4, v); - } - - @$pb.TagNumber(5) - $core.bool hasMessage() => $_has(4); - @$pb.TagNumber(5) - void clearMessage() => clearField(5); -} - -class DeleteUserRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'DeleteUserRequest', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'id') - ..hasRequiredFields = false; - - DeleteUserRequest._() : super(); - factory DeleteUserRequest({ - $core.String? id, - }) { - final _result = create(); - if (id != null) { - _result.id = id; - } - return _result; - } - factory DeleteUserRequest.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory DeleteUserRequest.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - DeleteUserRequest clone() => DeleteUserRequest()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - DeleteUserRequest copyWith(void Function(DeleteUserRequest) updates) => - super.copyWith((message) => updates(message as DeleteUserRequest)) - as DeleteUserRequest; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static DeleteUserRequest create() => DeleteUserRequest._(); - DeleteUserRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static DeleteUserRequest getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static DeleteUserRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get id => $_getSZ(0); - @$pb.TagNumber(1) - set id($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasId() => $_has(0); - @$pb.TagNumber(1) - void clearId() => clearField(1); -} - -class DeleteUserResponse extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'DeleteUserResponse', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'code') - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'message') - ..hasRequiredFields = false; - - DeleteUserResponse._() : super(); - factory DeleteUserResponse({ - $core.String? code, - $core.String? message, - }) { - final _result = create(); - if (code != null) { - _result.code = code; - } - if (message != null) { - _result.message = message; - } - return _result; - } - factory DeleteUserResponse.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory DeleteUserResponse.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - DeleteUserResponse clone() => DeleteUserResponse()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - DeleteUserResponse copyWith(void Function(DeleteUserResponse) updates) => - super.copyWith((message) => updates(message as DeleteUserResponse)) - as DeleteUserResponse; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static DeleteUserResponse create() => DeleteUserResponse._(); - DeleteUserResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static DeleteUserResponse getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static DeleteUserResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get code => $_getSZ(0); - @$pb.TagNumber(1) - set code($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasCode() => $_has(0); - @$pb.TagNumber(1) - void clearCode() => clearField(1); - - @$pb.TagNumber(2) - $core.String get message => $_getSZ(1); - @$pb.TagNumber(2) - set message($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(2) - $core.bool hasMessage() => $_has(1); - @$pb.TagNumber(2) - void clearMessage() => clearField(2); -} - -class CreateUserRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'CreateUserRequest', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'username') - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'email') - ..aOS( - 3, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'password') - ..hasRequiredFields = false; - - CreateUserRequest._() : super(); - factory CreateUserRequest({ - $core.String? username, - $core.String? email, - $core.String? password, - }) { - final _result = create(); - if (username != null) { - _result.username = username; - } - if (email != null) { - _result.email = email; - } - if (password != null) { - _result.password = password; - } - return _result; - } - factory CreateUserRequest.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory CreateUserRequest.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - CreateUserRequest clone() => CreateUserRequest()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - CreateUserRequest copyWith(void Function(CreateUserRequest) updates) => - super.copyWith((message) => updates(message as CreateUserRequest)) - as CreateUserRequest; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static CreateUserRequest create() => CreateUserRequest._(); - CreateUserRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static CreateUserRequest getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static CreateUserRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get username => $_getSZ(0); - @$pb.TagNumber(1) - set username($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasUsername() => $_has(0); - @$pb.TagNumber(1) - void clearUsername() => clearField(1); - - @$pb.TagNumber(2) - $core.String get email => $_getSZ(1); - @$pb.TagNumber(2) - set email($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(2) - $core.bool hasEmail() => $_has(1); - @$pb.TagNumber(2) - void clearEmail() => clearField(2); - - @$pb.TagNumber(3) - $core.String get password => $_getSZ(2); - @$pb.TagNumber(3) - set password($core.String v) { - $_setString(2, v); - } - - @$pb.TagNumber(3) - $core.bool hasPassword() => $_has(2); - @$pb.TagNumber(3) - void clearPassword() => clearField(3); -} - -class CreateUserResponse extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'CreateUserResponse', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'code') - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'message') - ..hasRequiredFields = false; - - CreateUserResponse._() : super(); - factory CreateUserResponse({ - $core.String? code, - $core.String? message, - }) { - final _result = create(); - if (code != null) { - _result.code = code; - } - if (message != null) { - _result.message = message; - } - return _result; - } - factory CreateUserResponse.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory CreateUserResponse.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - CreateUserResponse clone() => CreateUserResponse()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - CreateUserResponse copyWith(void Function(CreateUserResponse) updates) => - super.copyWith((message) => updates(message as CreateUserResponse)) - as CreateUserResponse; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static CreateUserResponse create() => CreateUserResponse._(); - CreateUserResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static CreateUserResponse getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static CreateUserResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get code => $_getSZ(0); - @$pb.TagNumber(1) - set code($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasCode() => $_has(0); - @$pb.TagNumber(1) - void clearCode() => clearField(1); - - @$pb.TagNumber(2) - $core.String get message => $_getSZ(1); - @$pb.TagNumber(2) - set message($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(2) - $core.bool hasMessage() => $_has(1); - @$pb.TagNumber(2) - void clearMessage() => clearField(2); -} - -class LoginUserRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'LoginUserRequest', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'username') - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'password') - ..hasRequiredFields = false; - - LoginUserRequest._() : super(); - factory LoginUserRequest({ - $core.String? username, - $core.String? password, - }) { - final _result = create(); - if (username != null) { - _result.username = username; - } - if (password != null) { - _result.password = password; - } - return _result; - } - factory LoginUserRequest.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory LoginUserRequest.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - LoginUserRequest clone() => LoginUserRequest()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - LoginUserRequest copyWith(void Function(LoginUserRequest) updates) => - super.copyWith((message) => updates(message as LoginUserRequest)) - as LoginUserRequest; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static LoginUserRequest create() => LoginUserRequest._(); - LoginUserRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static LoginUserRequest getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static LoginUserRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get username => $_getSZ(0); - @$pb.TagNumber(1) - set username($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasUsername() => $_has(0); - @$pb.TagNumber(1) - void clearUsername() => clearField(1); - - @$pb.TagNumber(2) - $core.String get password => $_getSZ(1); - @$pb.TagNumber(2) - set password($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(2) - $core.bool hasPassword() => $_has(1); - @$pb.TagNumber(2) - void clearPassword() => clearField(2); -} - -class LoginUserResponse extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'LoginUserResponse', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOB( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'success') - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'message') - ..hasRequiredFields = false; - - LoginUserResponse._() : super(); - factory LoginUserResponse({ - $core.bool? success, - $core.String? message, - }) { - final _result = create(); - if (success != null) { - _result.success = success; - } - if (message != null) { - _result.message = message; - } - return _result; - } - factory LoginUserResponse.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory LoginUserResponse.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - LoginUserResponse clone() => LoginUserResponse()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - LoginUserResponse copyWith(void Function(LoginUserResponse) updates) => - super.copyWith((message) => updates(message as LoginUserResponse)) - as LoginUserResponse; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static LoginUserResponse create() => LoginUserResponse._(); - LoginUserResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static LoginUserResponse getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static LoginUserResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.bool get success => $_getBF(0); - @$pb.TagNumber(1) - set success($core.bool v) { - $_setBool(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasSuccess() => $_has(0); - @$pb.TagNumber(1) - void clearSuccess() => clearField(1); - - @$pb.TagNumber(2) - $core.String get message => $_getSZ(1); - @$pb.TagNumber(2) - set message($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(2) - $core.bool hasMessage() => $_has(1); - @$pb.TagNumber(2) - void clearMessage() => clearField(2); -} - -class UpdateUserRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'UpdateUserRequest', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'username') - ..aOS( - 3, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'email') - ..aOS( - 4, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'password') - ..aOS( - 5, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'id') - ..hasRequiredFields = false; - - UpdateUserRequest._() : super(); - factory UpdateUserRequest({ - $core.String? username, - $core.String? email, - $core.String? password, - $core.String? id, - }) { - final _result = create(); - if (username != null) { - _result.username = username; - } - if (email != null) { - _result.email = email; - } - if (password != null) { - _result.password = password; - } - if (id != null) { - _result.id = id; - } - return _result; - } - factory UpdateUserRequest.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory UpdateUserRequest.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - UpdateUserRequest clone() => UpdateUserRequest()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - UpdateUserRequest copyWith(void Function(UpdateUserRequest) updates) => - super.copyWith((message) => updates(message as UpdateUserRequest)) - as UpdateUserRequest; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static UpdateUserRequest create() => UpdateUserRequest._(); - UpdateUserRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static UpdateUserRequest getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static UpdateUserRequest? _defaultInstance; - - @$pb.TagNumber(2) - $core.String get username => $_getSZ(0); - @$pb.TagNumber(2) - set username($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(2) - $core.bool hasUsername() => $_has(0); - @$pb.TagNumber(2) - void clearUsername() => clearField(2); - - @$pb.TagNumber(3) - $core.String get email => $_getSZ(1); - @$pb.TagNumber(3) - set email($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(3) - $core.bool hasEmail() => $_has(1); - @$pb.TagNumber(3) - void clearEmail() => clearField(3); - - @$pb.TagNumber(4) - $core.String get password => $_getSZ(2); - @$pb.TagNumber(4) - set password($core.String v) { - $_setString(2, v); - } - - @$pb.TagNumber(4) - $core.bool hasPassword() => $_has(2); - @$pb.TagNumber(4) - void clearPassword() => clearField(4); - - @$pb.TagNumber(5) - $core.String get id => $_getSZ(3); - @$pb.TagNumber(5) - set id($core.String v) { - $_setString(3, v); - } - - @$pb.TagNumber(5) - $core.bool hasId() => $_has(3); - @$pb.TagNumber(5) - void clearId() => clearField(5); -} - -class UpdateUserResponse extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'UpdateUserResponse', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'code') - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'message') - ..hasRequiredFields = false; - - UpdateUserResponse._() : super(); - factory UpdateUserResponse({ - $core.String? code, - $core.String? message, - }) { - final _result = create(); - if (code != null) { - _result.code = code; - } - if (message != null) { - _result.message = message; - } - return _result; - } - factory UpdateUserResponse.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory UpdateUserResponse.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - UpdateUserResponse clone() => UpdateUserResponse()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - UpdateUserResponse copyWith(void Function(UpdateUserResponse) updates) => - super.copyWith((message) => updates(message as UpdateUserResponse)) - as UpdateUserResponse; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static UpdateUserResponse create() => UpdateUserResponse._(); - UpdateUserResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static UpdateUserResponse getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static UpdateUserResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get code => $_getSZ(0); - @$pb.TagNumber(1) - set code($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasCode() => $_has(0); - @$pb.TagNumber(1) - void clearCode() => clearField(1); - - @$pb.TagNumber(2) - $core.String get message => $_getSZ(1); - @$pb.TagNumber(2) - set message($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(2) - $core.bool hasMessage() => $_has(1); - @$pb.TagNumber(2) - void clearMessage() => clearField(2); -} - -class LogoutUserRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'LogoutUserRequest', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOS( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'id') - ..hasRequiredFields = false; - - LogoutUserRequest._() : super(); - factory LogoutUserRequest({ - $core.String? id, - }) { - final _result = create(); - if (id != null) { - _result.id = id; - } - return _result; - } - factory LogoutUserRequest.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory LogoutUserRequest.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - LogoutUserRequest clone() => LogoutUserRequest()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - LogoutUserRequest copyWith(void Function(LogoutUserRequest) updates) => - super.copyWith((message) => updates(message as LogoutUserRequest)) - as LogoutUserRequest; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static LogoutUserRequest create() => LogoutUserRequest._(); - LogoutUserRequest createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static LogoutUserRequest getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static LogoutUserRequest? _defaultInstance; - - @$pb.TagNumber(1) - $core.String get id => $_getSZ(0); - @$pb.TagNumber(1) - set id($core.String v) { - $_setString(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasId() => $_has(0); - @$pb.TagNumber(1) - void clearId() => clearField(1); -} - -class LogoutUserResponse extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'LogoutUserResponse', - package: const $pb.PackageName( - const $core.bool.fromEnvironment('protobuf.omit_message_names') - ? '' - : 'users'), - createEmptyInstance: create) - ..aOB( - 1, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'success') - ..aOS( - 2, - const $core.bool.fromEnvironment('protobuf.omit_field_names') - ? '' - : 'message') - ..hasRequiredFields = false; - - LogoutUserResponse._() : super(); - factory LogoutUserResponse({ - $core.bool? success, - $core.String? message, - }) { - final _result = create(); - if (success != null) { - _result.success = success; - } - if (message != null) { - _result.message = message; - } - return _result; - } - factory LogoutUserResponse.fromBuffer($core.List<$core.int> i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromBuffer(i, r); - factory LogoutUserResponse.fromJson($core.String i, - [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => - create()..mergeFromJson(i, r); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' - 'Will be removed in next major version') - LogoutUserResponse clone() => LogoutUserResponse()..mergeFromMessage(this); - @$core.Deprecated('Using this can add significant overhead to your binary. ' - 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' - 'Will be removed in next major version') - LogoutUserResponse copyWith(void Function(LogoutUserResponse) updates) => - super.copyWith((message) => updates(message as LogoutUserResponse)) - as LogoutUserResponse; // ignore: deprecated_member_use - $pb.BuilderInfo get info_ => _i; - @$core.pragma('dart2js:noInline') - static LogoutUserResponse create() => LogoutUserResponse._(); - LogoutUserResponse createEmptyInstance() => create(); - static $pb.PbList createRepeated() => - $pb.PbList(); - @$core.pragma('dart2js:noInline') - static LogoutUserResponse getDefault() => _defaultInstance ??= - $pb.GeneratedMessage.$_defaultFor(create); - static LogoutUserResponse? _defaultInstance; - - @$pb.TagNumber(1) - $core.bool get success => $_getBF(0); - @$pb.TagNumber(1) - set success($core.bool v) { - $_setBool(0, v); - } - - @$pb.TagNumber(1) - $core.bool hasSuccess() => $_has(0); - @$pb.TagNumber(1) - void clearSuccess() => clearField(1); - - @$pb.TagNumber(2) - $core.String get message => $_getSZ(1); - @$pb.TagNumber(2) - set message($core.String v) { - $_setString(1, v); - } - - @$pb.TagNumber(2) - $core.bool hasMessage() => $_has(1); - @$pb.TagNumber(2) - void clearMessage() => clearField(2); -} diff --git a/packages/users_repository/lib/src/gen/proto/users.pbenum.dart b/packages/users_repository/lib/src/gen/proto/users.pbenum.dart deleted file mode 100644 index d45a5b2..0000000 --- a/packages/users_repository/lib/src/gen/proto/users.pbenum.dart +++ /dev/null @@ -1,6 +0,0 @@ -/// -// Generated code. Do not modify. -// source: users.proto -// -// @dart = 2.12 -// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name diff --git a/packages/users_repository/lib/src/gen/proto/users.pbgrpc.dart b/packages/users_repository/lib/src/gen/proto/users.pbgrpc.dart deleted file mode 100644 index 7d02d51..0000000 --- a/packages/users_repository/lib/src/gen/proto/users.pbgrpc.dart +++ /dev/null @@ -1,185 +0,0 @@ -/// -// Generated code. Do not modify. -// source: users.proto -// -// @dart = 2.12 -// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name - -import 'dart:async' as $async; - -import 'dart:core' as $core; - -import 'package:grpc/service_api.dart' as $grpc; -import 'users.pb.dart' as $0; -export 'users.pb.dart'; - -class UsersClient extends $grpc.Client { - static final _$createUser = - $grpc.ClientMethod<$0.CreateUserRequest, $0.CreateUserResponse>( - '/users.Users/CreateUser', - ($0.CreateUserRequest value) => value.writeToBuffer(), - ($core.List<$core.int> value) => - $0.CreateUserResponse.fromBuffer(value)); - static final _$getUser = - $grpc.ClientMethod<$0.GetUserRequest, $0.GetUserResponse>( - '/users.Users/GetUser', - ($0.GetUserRequest value) => value.writeToBuffer(), - ($core.List<$core.int> value) => - $0.GetUserResponse.fromBuffer(value)); - static final _$updateUser = - $grpc.ClientMethod<$0.UpdateUserRequest, $0.UpdateUserResponse>( - '/users.Users/UpdateUser', - ($0.UpdateUserRequest value) => value.writeToBuffer(), - ($core.List<$core.int> value) => - $0.UpdateUserResponse.fromBuffer(value)); - static final _$deleteUser = - $grpc.ClientMethod<$0.DeleteUserRequest, $0.DeleteUserResponse>( - '/users.Users/DeleteUser', - ($0.DeleteUserRequest value) => value.writeToBuffer(), - ($core.List<$core.int> value) => - $0.DeleteUserResponse.fromBuffer(value)); - static final _$loginUser = - $grpc.ClientMethod<$0.LoginUserRequest, $0.LoginUserResponse>( - '/users.Users/LoginUser', - ($0.LoginUserRequest value) => value.writeToBuffer(), - ($core.List<$core.int> value) => - $0.LoginUserResponse.fromBuffer(value)); - static final _$logoutUser = - $grpc.ClientMethod<$0.LogoutUserRequest, $0.LogoutUserResponse>( - '/users.Users/LogoutUser', - ($0.LogoutUserRequest value) => value.writeToBuffer(), - ($core.List<$core.int> value) => - $0.LogoutUserResponse.fromBuffer(value)); - - UsersClient($grpc.ClientChannel channel, - {$grpc.CallOptions? options, - $core.Iterable<$grpc.ClientInterceptor>? interceptors}) - : super(channel, options: options, interceptors: interceptors); - - $grpc.ResponseFuture<$0.CreateUserResponse> createUser( - $0.CreateUserRequest request, - {$grpc.CallOptions? options}) { - return $createUnaryCall(_$createUser, request, options: options); - } - - $grpc.ResponseFuture<$0.GetUserResponse> getUser($0.GetUserRequest request, - {$grpc.CallOptions? options}) { - return $createUnaryCall(_$getUser, request, options: options); - } - - $grpc.ResponseFuture<$0.UpdateUserResponse> updateUser( - $0.UpdateUserRequest request, - {$grpc.CallOptions? options}) { - return $createUnaryCall(_$updateUser, request, options: options); - } - - $grpc.ResponseFuture<$0.DeleteUserResponse> deleteUser( - $0.DeleteUserRequest request, - {$grpc.CallOptions? options}) { - return $createUnaryCall(_$deleteUser, request, options: options); - } - - $grpc.ResponseFuture<$0.LoginUserResponse> loginUser( - $0.LoginUserRequest request, - {$grpc.CallOptions? options}) { - return $createUnaryCall(_$loginUser, request, options: options); - } - - $grpc.ResponseFuture<$0.LogoutUserResponse> logoutUser( - $0.LogoutUserRequest request, - {$grpc.CallOptions? options}) { - return $createUnaryCall(_$logoutUser, request, options: options); - } -} - -abstract class UsersServiceBase extends $grpc.Service { - $core.String get $name => 'users.Users'; - - UsersServiceBase() { - $addMethod($grpc.ServiceMethod<$0.CreateUserRequest, $0.CreateUserResponse>( - 'CreateUser', - createUser_Pre, - false, - false, - ($core.List<$core.int> value) => $0.CreateUserRequest.fromBuffer(value), - ($0.CreateUserResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$0.GetUserRequest, $0.GetUserResponse>( - 'GetUser', - getUser_Pre, - false, - false, - ($core.List<$core.int> value) => $0.GetUserRequest.fromBuffer(value), - ($0.GetUserResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$0.UpdateUserRequest, $0.UpdateUserResponse>( - 'UpdateUser', - updateUser_Pre, - false, - false, - ($core.List<$core.int> value) => $0.UpdateUserRequest.fromBuffer(value), - ($0.UpdateUserResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$0.DeleteUserRequest, $0.DeleteUserResponse>( - 'DeleteUser', - deleteUser_Pre, - false, - false, - ($core.List<$core.int> value) => $0.DeleteUserRequest.fromBuffer(value), - ($0.DeleteUserResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$0.LoginUserRequest, $0.LoginUserResponse>( - 'LoginUser', - loginUser_Pre, - false, - false, - ($core.List<$core.int> value) => $0.LoginUserRequest.fromBuffer(value), - ($0.LoginUserResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$0.LogoutUserRequest, $0.LogoutUserResponse>( - 'LogoutUser', - logoutUser_Pre, - false, - false, - ($core.List<$core.int> value) => $0.LogoutUserRequest.fromBuffer(value), - ($0.LogoutUserResponse value) => value.writeToBuffer())); - } - - $async.Future<$0.CreateUserResponse> createUser_Pre($grpc.ServiceCall call, - $async.Future<$0.CreateUserRequest> request) async { - return createUser(call, await request); - } - - $async.Future<$0.GetUserResponse> getUser_Pre( - $grpc.ServiceCall call, $async.Future<$0.GetUserRequest> request) async { - return getUser(call, await request); - } - - $async.Future<$0.UpdateUserResponse> updateUser_Pre($grpc.ServiceCall call, - $async.Future<$0.UpdateUserRequest> request) async { - return updateUser(call, await request); - } - - $async.Future<$0.DeleteUserResponse> deleteUser_Pre($grpc.ServiceCall call, - $async.Future<$0.DeleteUserRequest> request) async { - return deleteUser(call, await request); - } - - $async.Future<$0.LoginUserResponse> loginUser_Pre($grpc.ServiceCall call, - $async.Future<$0.LoginUserRequest> request) async { - return loginUser(call, await request); - } - - $async.Future<$0.LogoutUserResponse> logoutUser_Pre($grpc.ServiceCall call, - $async.Future<$0.LogoutUserRequest> request) async { - return logoutUser(call, await request); - } - - $async.Future<$0.CreateUserResponse> createUser( - $grpc.ServiceCall call, $0.CreateUserRequest request); - $async.Future<$0.GetUserResponse> getUser( - $grpc.ServiceCall call, $0.GetUserRequest request); - $async.Future<$0.UpdateUserResponse> updateUser( - $grpc.ServiceCall call, $0.UpdateUserRequest request); - $async.Future<$0.DeleteUserResponse> deleteUser( - $grpc.ServiceCall call, $0.DeleteUserRequest request); - $async.Future<$0.LoginUserResponse> loginUser( - $grpc.ServiceCall call, $0.LoginUserRequest request); - $async.Future<$0.LogoutUserResponse> logoutUser( - $grpc.ServiceCall call, $0.LogoutUserRequest request); -} diff --git a/packages/users_repository/lib/src/gen/proto/users.pbjson.dart b/packages/users_repository/lib/src/gen/proto/users.pbjson.dart deleted file mode 100644 index 2003773..0000000 --- a/packages/users_repository/lib/src/gen/proto/users.pbjson.dart +++ /dev/null @@ -1,158 +0,0 @@ -/// -// Generated code. Do not modify. -// source: users.proto -// -// @dart = 2.12 -// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name - -import 'dart:core' as $core; -import 'dart:convert' as $convert; -import 'dart:typed_data' as $typed_data; - -@$core.Deprecated('Use getUserRequestDescriptor instead') -const GetUserRequest$json = const { - '1': 'GetUserRequest', - '2': const [ - const {'1': 'username', '3': 1, '4': 1, '5': 9, '10': 'username'}, - ], -}; - -/// Descriptor for `GetUserRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List getUserRequestDescriptor = $convert.base64Decode( - 'Cg5HZXRVc2VyUmVxdWVzdBIaCgh1c2VybmFtZRgBIAEoCVIIdXNlcm5hbWU='); -@$core.Deprecated('Use getUserResponseDescriptor instead') -const GetUserResponse$json = const { - '1': 'GetUserResponse', - '2': const [ - const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, - const {'1': 'username', '3': 2, '4': 1, '5': 9, '10': 'username'}, - const {'1': 'email', '3': 3, '4': 1, '5': 9, '10': 'email'}, - const {'1': 'code', '3': 4, '4': 1, '5': 9, '10': 'code'}, - const {'1': 'message', '3': 5, '4': 1, '5': 9, '10': 'message'}, - ], -}; - -/// Descriptor for `GetUserResponse`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List getUserResponseDescriptor = $convert.base64Decode( - 'Cg9HZXRVc2VyUmVzcG9uc2USDgoCaWQYASABKAlSAmlkEhoKCHVzZXJuYW1lGAIgASgJUgh1c2VybmFtZRIUCgVlbWFpbBgDIAEoCVIFZW1haWwSEgoEY29kZRgEIAEoCVIEY29kZRIYCgdtZXNzYWdlGAUgASgJUgdtZXNzYWdl'); -@$core.Deprecated('Use deleteUserRequestDescriptor instead') -const DeleteUserRequest$json = const { - '1': 'DeleteUserRequest', - '2': const [ - const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, - ], -}; - -/// Descriptor for `DeleteUserRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List deleteUserRequestDescriptor = - $convert.base64Decode('ChFEZWxldGVVc2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQ='); -@$core.Deprecated('Use deleteUserResponseDescriptor instead') -const DeleteUserResponse$json = const { - '1': 'DeleteUserResponse', - '2': const [ - const {'1': 'code', '3': 1, '4': 1, '5': 9, '10': 'code'}, - const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, - ], -}; - -/// Descriptor for `DeleteUserResponse`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List deleteUserResponseDescriptor = $convert.base64Decode( - 'ChJEZWxldGVVc2VyUmVzcG9uc2USEgoEY29kZRgBIAEoCVIEY29kZRIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdl'); -@$core.Deprecated('Use createUserRequestDescriptor instead') -const CreateUserRequest$json = const { - '1': 'CreateUserRequest', - '2': const [ - const {'1': 'username', '3': 1, '4': 1, '5': 9, '10': 'username'}, - const {'1': 'email', '3': 2, '4': 1, '5': 9, '10': 'email'}, - const {'1': 'password', '3': 3, '4': 1, '5': 9, '10': 'password'}, - ], -}; - -/// Descriptor for `CreateUserRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List createUserRequestDescriptor = $convert.base64Decode( - 'ChFDcmVhdGVVc2VyUmVxdWVzdBIaCgh1c2VybmFtZRgBIAEoCVIIdXNlcm5hbWUSFAoFZW1haWwYAiABKAlSBWVtYWlsEhoKCHBhc3N3b3JkGAMgASgJUghwYXNzd29yZA=='); -@$core.Deprecated('Use createUserResponseDescriptor instead') -const CreateUserResponse$json = const { - '1': 'CreateUserResponse', - '2': const [ - const {'1': 'code', '3': 1, '4': 1, '5': 9, '10': 'code'}, - const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, - ], -}; - -/// Descriptor for `CreateUserResponse`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List createUserResponseDescriptor = $convert.base64Decode( - 'ChJDcmVhdGVVc2VyUmVzcG9uc2USEgoEY29kZRgBIAEoCVIEY29kZRIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdl'); -@$core.Deprecated('Use loginUserRequestDescriptor instead') -const LoginUserRequest$json = const { - '1': 'LoginUserRequest', - '2': const [ - const {'1': 'username', '3': 1, '4': 1, '5': 9, '10': 'username'}, - const {'1': 'password', '3': 2, '4': 1, '5': 9, '10': 'password'}, - ], -}; - -/// Descriptor for `LoginUserRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List loginUserRequestDescriptor = $convert.base64Decode( - 'ChBMb2dpblVzZXJSZXF1ZXN0EhoKCHVzZXJuYW1lGAEgASgJUgh1c2VybmFtZRIaCghwYXNzd29yZBgCIAEoCVIIcGFzc3dvcmQ='); -@$core.Deprecated('Use loginUserResponseDescriptor instead') -const LoginUserResponse$json = const { - '1': 'LoginUserResponse', - '2': const [ - const {'1': 'success', '3': 1, '4': 1, '5': 8, '10': 'success'}, - const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, - ], -}; - -/// Descriptor for `LoginUserResponse`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List loginUserResponseDescriptor = $convert.base64Decode( - 'ChFMb2dpblVzZXJSZXNwb25zZRIYCgdzdWNjZXNzGAEgASgIUgdzdWNjZXNzEhgKB21lc3NhZ2UYAiABKAlSB21lc3NhZ2U='); -@$core.Deprecated('Use updateUserRequestDescriptor instead') -const UpdateUserRequest$json = const { - '1': 'UpdateUserRequest', - '2': const [ - const {'1': 'username', '3': 2, '4': 1, '5': 9, '10': 'username'}, - const {'1': 'email', '3': 3, '4': 1, '5': 9, '10': 'email'}, - const {'1': 'password', '3': 4, '4': 1, '5': 9, '10': 'password'}, - const {'1': 'id', '3': 5, '4': 1, '5': 9, '10': 'id'}, - ], -}; - -/// Descriptor for `UpdateUserRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List updateUserRequestDescriptor = $convert.base64Decode( - 'ChFVcGRhdGVVc2VyUmVxdWVzdBIaCgh1c2VybmFtZRgCIAEoCVIIdXNlcm5hbWUSFAoFZW1haWwYAyABKAlSBWVtYWlsEhoKCHBhc3N3b3JkGAQgASgJUghwYXNzd29yZBIOCgJpZBgFIAEoCVICaWQ='); -@$core.Deprecated('Use updateUserResponseDescriptor instead') -const UpdateUserResponse$json = const { - '1': 'UpdateUserResponse', - '2': const [ - const {'1': 'code', '3': 1, '4': 1, '5': 9, '10': 'code'}, - const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, - ], -}; - -/// Descriptor for `UpdateUserResponse`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List updateUserResponseDescriptor = $convert.base64Decode( - 'ChJVcGRhdGVVc2VyUmVzcG9uc2USEgoEY29kZRgBIAEoCVIEY29kZRIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdl'); -@$core.Deprecated('Use logoutUserRequestDescriptor instead') -const LogoutUserRequest$json = const { - '1': 'LogoutUserRequest', - '2': const [ - const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, - ], -}; - -/// Descriptor for `LogoutUserRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List logoutUserRequestDescriptor = - $convert.base64Decode('ChFMb2dvdXRVc2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQ='); -@$core.Deprecated('Use logoutUserResponseDescriptor instead') -const LogoutUserResponse$json = const { - '1': 'LogoutUserResponse', - '2': const [ - const {'1': 'success', '3': 1, '4': 1, '5': 8, '10': 'success'}, - const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, - ], -}; - -/// Descriptor for `LogoutUserResponse`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List logoutUserResponseDescriptor = $convert.base64Decode( - 'ChJMb2dvdXRVc2VyUmVzcG9uc2USGAoHc3VjY2VzcxgBIAEoCFIHc3VjY2VzcxIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdl'); diff --git a/packages/users_repository/lib/src/infrastructure/users_repository.dart b/packages/users_repository/lib/src/infrastructure/users_repository.dart index 9ffa10a..c0dfbe7 100644 --- a/packages/users_repository/lib/src/infrastructure/users_repository.dart +++ b/packages/users_repository/lib/src/infrastructure/users_repository.dart @@ -5,7 +5,7 @@ import 'package:grpc/grpc.dart'; import '../domain/core/typedefs.dart'; import '../domain/users/call_failure.dart'; import '../domain/users/users_repository_i.dart'; -import '../gen/proto/users.pbgrpc.dart'; +import '../gen/proto/v1/users.pbgrpc.dart'; class UsersRepository implements UsersRepositoryI { @override diff --git a/packages/users_repository/lib/users_repository.dart b/packages/users_repository/lib/users_repository.dart index e4c4244..6619dba 100644 --- a/packages/users_repository/lib/users_repository.dart +++ b/packages/users_repository/lib/users_repository.dart @@ -1,4 +1,5 @@ library users_repository; -export 'src/gen/proto/users.pb.dart'; +export 'src/domain/users/users_repository_i.dart'; +export 'src/gen/proto/v1/users.pb.dart'; export 'src/infrastructure/users_repository.dart'; From dde78dd2236914cf81d3fcd2e5e6116ef22d81a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Tue, 18 Apr 2023 23:49:50 +0200 Subject: [PATCH 02/19] add bloc consumer and bloc events in presentation layer --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 30 ++++++++ .../sign_in_form_bloc/sign_in_form_event.dart | 5 +- lib/domain/core/errors.dart | 2 +- .../text_fields/custom_text_form_field.dart | 31 ++++---- .../form/text_fields/email_form_field.dart | 5 ++ .../form/text_fields/password_form_field.dart | 7 ++ .../login_page/widgets/sign_in_form.dart | 71 +++++++++++-------- 7 files changed, 104 insertions(+), 47 deletions(-) diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index 55f6eb8..f26a832 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -1,4 +1,5 @@ import 'package:bloc/bloc.dart'; +import 'package:flutter/foundation.dart'; import 'package:fpdart/fpdart.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:users_repository/users_repository.dart'; @@ -23,7 +24,36 @@ class SignInFormBloc extends Bloc { emailAddress: EmailAddress(event.password), )); }); + + on((event, emit) { + }); } final UsersRepositoryI _usersRepository; + + @override + void onTransition(Transition transition) { + super.onTransition(transition); + debugPrint(transition.toString()); + } + + @override + void onChange(Change change) { + super.onChange(change); + debugPrint(change.toString()); + debugPrint(change.currentState.toString()); + debugPrint(change.nextState.toString()); + } + + @override + void onError(Object error, StackTrace stackTrace) { + super.onError(error, stackTrace); + debugPrint(error.toString()); + } + + @override + void onEvent(SignInFormEvent event) { + super.onEvent(event); + debugPrint(event.toString()); + } } diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart index 0b51c85..d69ac09 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart @@ -7,8 +7,5 @@ class SignInFormEvent with _$SignInFormEvent { const factory SignInFormEvent.passwordChanged(String password) = PasswordChanged; - const factory SignInFormEvent.signInWithEmailWithPasswordPressed({ - required String email, - required String password, - }) = SignInWithEmailWithPasswordPressed; + const factory SignInFormEvent.signInWithEmailWithPasswordPressed() = SignInWithEmailWithPasswordPressed; } diff --git a/lib/domain/core/errors.dart b/lib/domain/core/errors.dart index 4429f85..b92a836 100644 --- a/lib/domain/core/errors.dart +++ b/lib/domain/core/errors.dart @@ -9,7 +9,7 @@ class UnexpectedValueError extends Error { @override String toString() { - const explanation = "Encountered a ValueFailure at an unrecoverable point."; + const explanation = 'Encountered a ValueFailure at an unrecoverable point.'; return Error.safeToString('$explanation Failure was: $valueFailure'); } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart index 9edfe8c..dce86d6 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart @@ -12,6 +12,7 @@ class CustomTextFormField extends StatelessWidget { this.prefixIcon, this.suffixIcon, this.obscureText = false, + this.onChanged, this.onTap, this.readOnly = false, }) : super(key: key); @@ -22,23 +23,24 @@ class CustomTextFormField extends StatelessWidget { final Widget? prefixIcon; final Widget? suffixIcon; final bool obscureText; + final Function(String)? onChanged; final Function()? onTap; final bool readOnly; @override Widget build(BuildContext context) { return TextFormField( - controller: controller, - obscureText: obscureText, - decoration: getInputDecoration( - hintText: hintText, - prefixIcon: prefixIcon, - suffixIcon: suffixIcon, - ), - keyboardType: keyboardType, - onTap: onTap, - readOnly: readOnly, - ); + controller: controller, + obscureText: obscureText, + decoration: getInputDecoration( + hintText: hintText, + prefixIcon: prefixIcon, + suffixIcon: suffixIcon, + ), + keyboardType: keyboardType, + onChanged: onChanged, + readOnly: readOnly, + onTap: onTap); } @override @@ -48,9 +50,10 @@ class CustomTextFormField extends StatelessWidget { ..add(StringProperty('hintText', hintText)) ..add(DiagnosticsProperty('keyboardType', keyboardType)) ..add(DiagnosticsProperty('obscureText', obscureText)) - ..add(ObjectFlagProperty.has('onTap', onTap)) + ..add(ObjectFlagProperty.has('onChanged', onChanged)) ..add(DiagnosticsProperty('readOnly', readOnly)) - ..add(DiagnosticsProperty( - 'controller', controller)); + ..add( + DiagnosticsProperty('controller', controller)) + ..add(ObjectFlagProperty.has('onTap', onTap)); } } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart index d2da22d..8bebe7b 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../../../utils/extensions.dart'; import 'custom_text_form_field.dart'; @@ -12,6 +14,9 @@ class EmailFormField extends StatelessWidget { prefixIcon: const Icon(Icons.email), hintText: context.l10n.email, keyboardType: TextInputType.emailAddress, + onChanged: (value) { + context.read().add(SignInFormEvent.emailChanged(value)); + }, ); } } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart index 08ef358..cfd240f 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart @@ -1,6 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../../../utils/extensions.dart'; import 'custom_text_form_field.dart'; @@ -38,6 +40,11 @@ class _PasswordFormFieldState extends State { : const Icon(Icons.visibility), ), obscureText: _obscureText, + onChanged: (value) { + context + .read() + .add(SignInFormEvent.passwordChanged(value)); + } ), if (widget.onPressed != null) TextButton( diff --git a/lib/presentation/pages/login_page/widgets/sign_in_form.dart b/lib/presentation/pages/login_page/widgets/sign_in_form.dart index 7cd744e..c716dad 100644 --- a/lib/presentation/pages/login_page/widgets/sign_in_form.dart +++ b/lib/presentation/pages/login_page/widgets/sign_in_form.dart @@ -1,6 +1,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import '../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../utils/extensions.dart'; import '../../../core/widgets/authentication/form/form_submit_buton.dart'; @@ -9,6 +10,7 @@ import '../../../core/widgets/authentication/form/text_fields/email_form_field.d import '../../../core/widgets/authentication/form/text_fields/password_form_field.dart'; import '../../../core/widgets/default_padding.dart'; import '../../../router/router.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; class SignInForm extends StatelessWidget { const SignInForm({ @@ -17,34 +19,47 @@ class SignInForm extends StatelessWidget { @override Widget build(BuildContext context) { - return Form( - child: Column(children: [ - const DefaultPadding( - child: EmailFormField(), - ), - DefaultPadding( - child: PasswordFormField( - onPressed: () => context.router.push(const ResetPasswordRoute()), - ), - ), - const SizedBox( - height: 20, - ), - DefaultPadding( - child: FormSubmitButton( - buttonText: context.l10n.authSignIn, - onPressed: () {}, - ), - ), - const SizedBox( - height: 30, - ), - SwitchFormButton( - leadingText: context.l10n.authNoAccount, - buttonText: context.l10n.authSignUp, - route: const RegisterRoute(), - ) - ]), + return BlocConsumer( + listener: (context, state) { + // TODO: implement listener + }, + builder: (context, state) { + return state.isSubmitting + ? const Center(child: CircularProgressIndicator()) + : Form( + child: Column(children: [ + const DefaultPadding( + child: EmailFormField(), + ), + DefaultPadding( + child: PasswordFormField( + onPressed: () => + context.router.push(const ResetPasswordRoute()), + ), + ), + const SizedBox( + height: 20, + ), + DefaultPadding( + child: FormSubmitButton( + buttonText: context.l10n.authSignIn, + onPressed: () => context.read().add( + const SignInFormEvent + .signInWithEmailWithPasswordPressed(), + ), + ), + ), + const SizedBox( + height: 30, + ), + SwitchFormButton( + leadingText: context.l10n.authNoAccount, + buttonText: context.l10n.authSignUp, + route: const RegisterRoute(), + ) + ]), + ); + }, ); } } From dca3f2cf17855da0966e6180627cd54c5a240bb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Wed, 26 Apr 2023 22:54:18 +0200 Subject: [PATCH 03/19] add proto --- .gitignore | 5 - lib/gen/assets.gen.dart | 105 ++ .../src/domain/users/users_repository_i.dart | 9 + .../lib/src/gen/proto/v1/users.pb.dart | 908 ++++++++++++++++++ .../lib/src/gen/proto/v1/users.pbenum.dart | 26 + .../lib/src/gen/proto/v1/users.pbgrpc.dart | 185 ++++ .../lib/src/gen/proto/v1/users.pbjson.dart | 171 ++++ 7 files changed, 1404 insertions(+), 5 deletions(-) create mode 100644 lib/gen/assets.gen.dart create mode 100644 packages/users_repository/lib/src/gen/proto/v1/users.pb.dart create mode 100644 packages/users_repository/lib/src/gen/proto/v1/users.pbenum.dart create mode 100644 packages/users_repository/lib/src/gen/proto/v1/users.pbgrpc.dart create mode 100644 packages/users_repository/lib/src/gen/proto/v1/users.pbjson.dart diff --git a/.gitignore b/.gitignore index 6f88aa4..b263275 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,6 @@ **/*.g.dart **/*.gr.dart **/*.freezed.dart -**/*.pb.dart -**/*.pbenum.dart -**/*.pbgrpc.dart -**/*.pbjson.dart -**/gen/ .vscode/ diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart new file mode 100644 index 0000000..e53a8ef --- /dev/null +++ b/lib/gen/assets.gen.dart @@ -0,0 +1,105 @@ +/// GENERATED CODE - DO NOT MODIFY BY HAND +/// ***************************************************** +/// FlutterGen +/// ***************************************************** + +// coverage:ignore-file +// ignore_for_file: type=lint +// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use + +import 'package:flutter/widgets.dart'; + +class $AssetsImagesGen { + const $AssetsImagesGen(); + + /// File path: assets/images/app_icon.png + AssetGenImage get appIcon => + const AssetGenImage('assets/images/app_icon.png'); + + /// File path: assets/images/app_logo.png + AssetGenImage get appLogo => + const AssetGenImage('assets/images/app_logo.png'); + + /// File path: assets/images/google_maps_mock.png + AssetGenImage get googleMapsMock => + const AssetGenImage('assets/images/google_maps_mock.png'); + + /// File path: assets/images/splash_screen.png + AssetGenImage get splashScreen => + const AssetGenImage('assets/images/splash_screen.png'); + + /// List of all assets + List get values => + [appIcon, appLogo, googleMapsMock, splashScreen]; +} + +class Assets { + Assets._(); + + static const $AssetsImagesGen images = $AssetsImagesGen(); +} + +class AssetGenImage { + const AssetGenImage(this._assetName); + + final String _assetName; + + Image image({ + Key? key, + AssetBundle? bundle, + ImageFrameBuilder? frameBuilder, + ImageErrorWidgetBuilder? errorBuilder, + String? semanticLabel, + bool excludeFromSemantics = false, + double? scale, + double? width, + double? height, + Color? color, + Animation? opacity, + BlendMode? colorBlendMode, + BoxFit? fit, + AlignmentGeometry alignment = Alignment.center, + ImageRepeat repeat = ImageRepeat.noRepeat, + Rect? centerSlice, + bool matchTextDirection = false, + bool gaplessPlayback = false, + bool isAntiAlias = false, + String? package, + FilterQuality filterQuality = FilterQuality.low, + int? cacheWidth, + int? cacheHeight, + }) { + return Image.asset( + _assetName, + key: key, + bundle: bundle, + frameBuilder: frameBuilder, + errorBuilder: errorBuilder, + semanticLabel: semanticLabel, + excludeFromSemantics: excludeFromSemantics, + scale: scale, + width: width, + height: height, + color: color, + opacity: opacity, + colorBlendMode: colorBlendMode, + fit: fit, + alignment: alignment, + repeat: repeat, + centerSlice: centerSlice, + matchTextDirection: matchTextDirection, + gaplessPlayback: gaplessPlayback, + isAntiAlias: isAntiAlias, + package: package, + filterQuality: filterQuality, + cacheWidth: cacheWidth, + cacheHeight: cacheHeight, + ); + } + + ImageProvider provider() => AssetImage(_assetName); + + String get path => _assetName; + + String get keyName => _assetName; +} diff --git a/packages/users_repository/lib/src/domain/users/users_repository_i.dart b/packages/users_repository/lib/src/domain/users/users_repository_i.dart index cb7dc88..449cc4f 100644 --- a/packages/users_repository/lib/src/domain/users/users_repository_i.dart +++ b/packages/users_repository/lib/src/domain/users/users_repository_i.dart @@ -2,5 +2,14 @@ import '../core/typedefs.dart'; abstract class UsersRepositoryI { Future getUser(String username); + Future updateUser(String username); + + Future createUser(String username, String password, String email); + + Future deleteUser(String username); + + Future loginUser(String email, String password); + + Future logoutUser(String id); } diff --git a/packages/users_repository/lib/src/gen/proto/v1/users.pb.dart b/packages/users_repository/lib/src/gen/proto/v1/users.pb.dart new file mode 100644 index 0000000..b37d085 --- /dev/null +++ b/packages/users_repository/lib/src/gen/proto/v1/users.pb.dart @@ -0,0 +1,908 @@ +/// +// Generated code. Do not modify. +// source: users.proto +// +// @dart = 2.12 +// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'users.pbenum.dart'; + +export 'users.pbenum.dart'; + +class UserDTO extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'UserDTO', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'username') + ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'email') + ..hasRequiredFields = false + ; + + UserDTO._() : super(); + factory UserDTO({ + $core.String? id, + $core.String? username, + $core.String? email, + }) { + final _result = create(); + if (id != null) { + _result.id = id; + } + if (username != null) { + _result.username = username; + } + if (email != null) { + _result.email = email; + } + return _result; + } + factory UserDTO.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UserDTO.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UserDTO clone() => UserDTO()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UserDTO copyWith(void Function(UserDTO) updates) => super.copyWith((message) => updates(message as UserDTO)) as UserDTO; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static UserDTO create() => UserDTO._(); + UserDTO createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UserDTO getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UserDTO? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get username => $_getSZ(1); + @$pb.TagNumber(2) + set username($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasUsername() => $_has(1); + @$pb.TagNumber(2) + void clearUsername() => clearField(2); + + @$pb.TagNumber(3) + $core.String get email => $_getSZ(2); + @$pb.TagNumber(3) + set email($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasEmail() => $_has(2); + @$pb.TagNumber(3) + void clearEmail() => clearField(3); +} + +class GetUserRequest extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'GetUserRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'username') + ..hasRequiredFields = false + ; + + GetUserRequest._() : super(); + factory GetUserRequest({ + $core.String? username, + }) { + final _result = create(); + if (username != null) { + _result.username = username; + } + return _result; + } + factory GetUserRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetUserRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetUserRequest clone() => GetUserRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetUserRequest copyWith(void Function(GetUserRequest) updates) => super.copyWith((message) => updates(message as GetUserRequest)) as GetUserRequest; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static GetUserRequest create() => GetUserRequest._(); + GetUserRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetUserRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetUserRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get username => $_getSZ(0); + @$pb.TagNumber(1) + set username($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasUsername() => $_has(0); + @$pb.TagNumber(1) + void clearUsername() => clearField(1); +} + +class GetUserResponse extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'GetUserResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'username') + ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'email') + ..e(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: Status.SUCCESS, valueOf: Status.valueOf, enumValues: Status.values) + ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message') + ..hasRequiredFields = false + ; + + GetUserResponse._() : super(); + factory GetUserResponse({ + $core.String? id, + $core.String? username, + $core.String? email, + Status? status, + $core.String? message, + }) { + final _result = create(); + if (id != null) { + _result.id = id; + } + if (username != null) { + _result.username = username; + } + if (email != null) { + _result.email = email; + } + if (status != null) { + _result.status = status; + } + if (message != null) { + _result.message = message; + } + return _result; + } + factory GetUserResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetUserResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetUserResponse clone() => GetUserResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetUserResponse copyWith(void Function(GetUserResponse) updates) => super.copyWith((message) => updates(message as GetUserResponse)) as GetUserResponse; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static GetUserResponse create() => GetUserResponse._(); + GetUserResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetUserResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetUserResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get username => $_getSZ(1); + @$pb.TagNumber(2) + set username($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasUsername() => $_has(1); + @$pb.TagNumber(2) + void clearUsername() => clearField(2); + + @$pb.TagNumber(3) + $core.String get email => $_getSZ(2); + @$pb.TagNumber(3) + set email($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasEmail() => $_has(2); + @$pb.TagNumber(3) + void clearEmail() => clearField(3); + + @$pb.TagNumber(4) + Status get status => $_getN(3); + @$pb.TagNumber(4) + set status(Status v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasStatus() => $_has(3); + @$pb.TagNumber(4) + void clearStatus() => clearField(4); + + @$pb.TagNumber(5) + $core.String get message => $_getSZ(4); + @$pb.TagNumber(5) + set message($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasMessage() => $_has(4); + @$pb.TagNumber(5) + void clearMessage() => clearField(5); +} + +class DeleteUserRequest extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteUserRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') + ..hasRequiredFields = false + ; + + DeleteUserRequest._() : super(); + factory DeleteUserRequest({ + $core.String? id, + }) { + final _result = create(); + if (id != null) { + _result.id = id; + } + return _result; + } + factory DeleteUserRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeleteUserRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeleteUserRequest clone() => DeleteUserRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeleteUserRequest copyWith(void Function(DeleteUserRequest) updates) => super.copyWith((message) => updates(message as DeleteUserRequest)) as DeleteUserRequest; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static DeleteUserRequest create() => DeleteUserRequest._(); + DeleteUserRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeleteUserRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeleteUserRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); +} + +class DeleteUserResponse extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeleteUserResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..e(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: Status.SUCCESS, valueOf: Status.valueOf, enumValues: Status.values) + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message') + ..hasRequiredFields = false + ; + + DeleteUserResponse._() : super(); + factory DeleteUserResponse({ + Status? status, + $core.String? message, + }) { + final _result = create(); + if (status != null) { + _result.status = status; + } + if (message != null) { + _result.message = message; + } + return _result; + } + factory DeleteUserResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeleteUserResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeleteUserResponse clone() => DeleteUserResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeleteUserResponse copyWith(void Function(DeleteUserResponse) updates) => super.copyWith((message) => updates(message as DeleteUserResponse)) as DeleteUserResponse; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static DeleteUserResponse create() => DeleteUserResponse._(); + DeleteUserResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeleteUserResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeleteUserResponse? _defaultInstance; + + @$pb.TagNumber(1) + Status get status => $_getN(0); + @$pb.TagNumber(1) + set status(Status v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasStatus() => $_has(0); + @$pb.TagNumber(1) + void clearStatus() => clearField(1); + + @$pb.TagNumber(2) + $core.String get message => $_getSZ(1); + @$pb.TagNumber(2) + set message($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasMessage() => $_has(1); + @$pb.TagNumber(2) + void clearMessage() => clearField(2); +} + +class CreateUserRequest extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'CreateUserRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'username') + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'email') + ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'password') + ..hasRequiredFields = false + ; + + CreateUserRequest._() : super(); + factory CreateUserRequest({ + $core.String? username, + $core.String? email, + $core.String? password, + }) { + final _result = create(); + if (username != null) { + _result.username = username; + } + if (email != null) { + _result.email = email; + } + if (password != null) { + _result.password = password; + } + return _result; + } + factory CreateUserRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreateUserRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreateUserRequest clone() => CreateUserRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreateUserRequest copyWith(void Function(CreateUserRequest) updates) => super.copyWith((message) => updates(message as CreateUserRequest)) as CreateUserRequest; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static CreateUserRequest create() => CreateUserRequest._(); + CreateUserRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreateUserRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreateUserRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get username => $_getSZ(0); + @$pb.TagNumber(1) + set username($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasUsername() => $_has(0); + @$pb.TagNumber(1) + void clearUsername() => clearField(1); + + @$pb.TagNumber(2) + $core.String get email => $_getSZ(1); + @$pb.TagNumber(2) + set email($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasEmail() => $_has(1); + @$pb.TagNumber(2) + void clearEmail() => clearField(2); + + @$pb.TagNumber(3) + $core.String get password => $_getSZ(2); + @$pb.TagNumber(3) + set password($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasPassword() => $_has(2); + @$pb.TagNumber(3) + void clearPassword() => clearField(3); +} + +class CreateUserResponse extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'CreateUserResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..e(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: Status.SUCCESS, valueOf: Status.valueOf, enumValues: Status.values) + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message') + ..hasRequiredFields = false + ; + + CreateUserResponse._() : super(); + factory CreateUserResponse({ + Status? status, + $core.String? message, + }) { + final _result = create(); + if (status != null) { + _result.status = status; + } + if (message != null) { + _result.message = message; + } + return _result; + } + factory CreateUserResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreateUserResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreateUserResponse clone() => CreateUserResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreateUserResponse copyWith(void Function(CreateUserResponse) updates) => super.copyWith((message) => updates(message as CreateUserResponse)) as CreateUserResponse; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static CreateUserResponse create() => CreateUserResponse._(); + CreateUserResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreateUserResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreateUserResponse? _defaultInstance; + + @$pb.TagNumber(1) + Status get status => $_getN(0); + @$pb.TagNumber(1) + set status(Status v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasStatus() => $_has(0); + @$pb.TagNumber(1) + void clearStatus() => clearField(1); + + @$pb.TagNumber(2) + $core.String get message => $_getSZ(1); + @$pb.TagNumber(2) + set message($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasMessage() => $_has(1); + @$pb.TagNumber(2) + void clearMessage() => clearField(2); +} + +class LoginUserRequest extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'LoginUserRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'username') + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'password') + ..hasRequiredFields = false + ; + + LoginUserRequest._() : super(); + factory LoginUserRequest({ + $core.String? username, + $core.String? password, + }) { + final _result = create(); + if (username != null) { + _result.username = username; + } + if (password != null) { + _result.password = password; + } + return _result; + } + factory LoginUserRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory LoginUserRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + LoginUserRequest clone() => LoginUserRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + LoginUserRequest copyWith(void Function(LoginUserRequest) updates) => super.copyWith((message) => updates(message as LoginUserRequest)) as LoginUserRequest; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static LoginUserRequest create() => LoginUserRequest._(); + LoginUserRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static LoginUserRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static LoginUserRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get username => $_getSZ(0); + @$pb.TagNumber(1) + set username($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasUsername() => $_has(0); + @$pb.TagNumber(1) + void clearUsername() => clearField(1); + + @$pb.TagNumber(2) + $core.String get password => $_getSZ(1); + @$pb.TagNumber(2) + set password($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasPassword() => $_has(1); + @$pb.TagNumber(2) + void clearPassword() => clearField(2); +} + +class LoginUserResponse extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'LoginUserResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..e(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: Status.SUCCESS, valueOf: Status.valueOf, enumValues: Status.values) + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message') + ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'jwtToken') + ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'refreshToken') + ..aOM(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'userDTO', protoName: 'userDTO', subBuilder: UserDTO.create) + ..hasRequiredFields = false + ; + + LoginUserResponse._() : super(); + factory LoginUserResponse({ + Status? status, + $core.String? message, + $core.String? jwtToken, + $core.String? refreshToken, + UserDTO? userDTO, + }) { + final _result = create(); + if (status != null) { + _result.status = status; + } + if (message != null) { + _result.message = message; + } + if (jwtToken != null) { + _result.jwtToken = jwtToken; + } + if (refreshToken != null) { + _result.refreshToken = refreshToken; + } + if (userDTO != null) { + _result.userDTO = userDTO; + } + return _result; + } + factory LoginUserResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory LoginUserResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + LoginUserResponse clone() => LoginUserResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + LoginUserResponse copyWith(void Function(LoginUserResponse) updates) => super.copyWith((message) => updates(message as LoginUserResponse)) as LoginUserResponse; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static LoginUserResponse create() => LoginUserResponse._(); + LoginUserResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static LoginUserResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static LoginUserResponse? _defaultInstance; + + @$pb.TagNumber(1) + Status get status => $_getN(0); + @$pb.TagNumber(1) + set status(Status v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasStatus() => $_has(0); + @$pb.TagNumber(1) + void clearStatus() => clearField(1); + + @$pb.TagNumber(2) + $core.String get message => $_getSZ(1); + @$pb.TagNumber(2) + set message($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasMessage() => $_has(1); + @$pb.TagNumber(2) + void clearMessage() => clearField(2); + + @$pb.TagNumber(3) + $core.String get jwtToken => $_getSZ(2); + @$pb.TagNumber(3) + set jwtToken($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasJwtToken() => $_has(2); + @$pb.TagNumber(3) + void clearJwtToken() => clearField(3); + + @$pb.TagNumber(4) + $core.String get refreshToken => $_getSZ(3); + @$pb.TagNumber(4) + set refreshToken($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasRefreshToken() => $_has(3); + @$pb.TagNumber(4) + void clearRefreshToken() => clearField(4); + + @$pb.TagNumber(5) + UserDTO get userDTO => $_getN(4); + @$pb.TagNumber(5) + set userDTO(UserDTO v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasUserDTO() => $_has(4); + @$pb.TagNumber(5) + void clearUserDTO() => clearField(5); + @$pb.TagNumber(5) + UserDTO ensureUserDTO() => $_ensure(4); +} + +class UpdateUserRequest extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'UpdateUserRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'username') + ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'email') + ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'password') + ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') + ..hasRequiredFields = false + ; + + UpdateUserRequest._() : super(); + factory UpdateUserRequest({ + $core.String? username, + $core.String? email, + $core.String? password, + $core.String? id, + }) { + final _result = create(); + if (username != null) { + _result.username = username; + } + if (email != null) { + _result.email = email; + } + if (password != null) { + _result.password = password; + } + if (id != null) { + _result.id = id; + } + return _result; + } + factory UpdateUserRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdateUserRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdateUserRequest clone() => UpdateUserRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdateUserRequest copyWith(void Function(UpdateUserRequest) updates) => super.copyWith((message) => updates(message as UpdateUserRequest)) as UpdateUserRequest; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static UpdateUserRequest create() => UpdateUserRequest._(); + UpdateUserRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdateUserRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdateUserRequest? _defaultInstance; + + @$pb.TagNumber(2) + $core.String get username => $_getSZ(0); + @$pb.TagNumber(2) + set username($core.String v) { $_setString(0, v); } + @$pb.TagNumber(2) + $core.bool hasUsername() => $_has(0); + @$pb.TagNumber(2) + void clearUsername() => clearField(2); + + @$pb.TagNumber(3) + $core.String get email => $_getSZ(1); + @$pb.TagNumber(3) + set email($core.String v) { $_setString(1, v); } + @$pb.TagNumber(3) + $core.bool hasEmail() => $_has(1); + @$pb.TagNumber(3) + void clearEmail() => clearField(3); + + @$pb.TagNumber(4) + $core.String get password => $_getSZ(2); + @$pb.TagNumber(4) + set password($core.String v) { $_setString(2, v); } + @$pb.TagNumber(4) + $core.bool hasPassword() => $_has(2); + @$pb.TagNumber(4) + void clearPassword() => clearField(4); + + @$pb.TagNumber(5) + $core.String get id => $_getSZ(3); + @$pb.TagNumber(5) + set id($core.String v) { $_setString(3, v); } + @$pb.TagNumber(5) + $core.bool hasId() => $_has(3); + @$pb.TagNumber(5) + void clearId() => clearField(5); +} + +class UpdateUserResponse extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'UpdateUserResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..e(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: Status.SUCCESS, valueOf: Status.valueOf, enumValues: Status.values) + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message') + ..hasRequiredFields = false + ; + + UpdateUserResponse._() : super(); + factory UpdateUserResponse({ + Status? status, + $core.String? message, + }) { + final _result = create(); + if (status != null) { + _result.status = status; + } + if (message != null) { + _result.message = message; + } + return _result; + } + factory UpdateUserResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdateUserResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdateUserResponse clone() => UpdateUserResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdateUserResponse copyWith(void Function(UpdateUserResponse) updates) => super.copyWith((message) => updates(message as UpdateUserResponse)) as UpdateUserResponse; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static UpdateUserResponse create() => UpdateUserResponse._(); + UpdateUserResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdateUserResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdateUserResponse? _defaultInstance; + + @$pb.TagNumber(1) + Status get status => $_getN(0); + @$pb.TagNumber(1) + set status(Status v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasStatus() => $_has(0); + @$pb.TagNumber(1) + void clearStatus() => clearField(1); + + @$pb.TagNumber(2) + $core.String get message => $_getSZ(1); + @$pb.TagNumber(2) + set message($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasMessage() => $_has(1); + @$pb.TagNumber(2) + void clearMessage() => clearField(2); +} + +class LogoutUserRequest extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'LogoutUserRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') + ..hasRequiredFields = false + ; + + LogoutUserRequest._() : super(); + factory LogoutUserRequest({ + $core.String? id, + }) { + final _result = create(); + if (id != null) { + _result.id = id; + } + return _result; + } + factory LogoutUserRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory LogoutUserRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + LogoutUserRequest clone() => LogoutUserRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + LogoutUserRequest copyWith(void Function(LogoutUserRequest) updates) => super.copyWith((message) => updates(message as LogoutUserRequest)) as LogoutUserRequest; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static LogoutUserRequest create() => LogoutUserRequest._(); + LogoutUserRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static LogoutUserRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static LogoutUserRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); +} + +class LogoutUserResponse extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'LogoutUserResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'users.v1'), createEmptyInstance: create) + ..e(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: Status.SUCCESS, valueOf: Status.valueOf, enumValues: Status.values) + ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message') + ..hasRequiredFields = false + ; + + LogoutUserResponse._() : super(); + factory LogoutUserResponse({ + Status? status, + $core.String? message, + }) { + final _result = create(); + if (status != null) { + _result.status = status; + } + if (message != null) { + _result.message = message; + } + return _result; + } + factory LogoutUserResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory LogoutUserResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + LogoutUserResponse clone() => LogoutUserResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + LogoutUserResponse copyWith(void Function(LogoutUserResponse) updates) => super.copyWith((message) => updates(message as LogoutUserResponse)) as LogoutUserResponse; // ignore: deprecated_member_use + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static LogoutUserResponse create() => LogoutUserResponse._(); + LogoutUserResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static LogoutUserResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static LogoutUserResponse? _defaultInstance; + + @$pb.TagNumber(1) + Status get status => $_getN(0); + @$pb.TagNumber(1) + set status(Status v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasStatus() => $_has(0); + @$pb.TagNumber(1) + void clearStatus() => clearField(1); + + @$pb.TagNumber(2) + $core.String get message => $_getSZ(1); + @$pb.TagNumber(2) + set message($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasMessage() => $_has(1); + @$pb.TagNumber(2) + void clearMessage() => clearField(2); +} + diff --git a/packages/users_repository/lib/src/gen/proto/v1/users.pbenum.dart b/packages/users_repository/lib/src/gen/proto/v1/users.pbenum.dart new file mode 100644 index 0000000..9004a1c --- /dev/null +++ b/packages/users_repository/lib/src/gen/proto/v1/users.pbenum.dart @@ -0,0 +1,26 @@ +/// +// Generated code. Do not modify. +// source: users.proto +// +// @dart = 2.12 +// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name + +// ignore_for_file: UNDEFINED_SHOWN_NAME +import 'dart:core' as $core; +import 'package:protobuf/protobuf.dart' as $pb; + +class Status extends $pb.ProtobufEnum { + static const Status SUCCESS = Status._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'SUCCESS'); + static const Status ERROR = Status._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ERROR'); + + static const $core.List values = [ + SUCCESS, + ERROR, + ]; + + static final $core.Map<$core.int, Status> _byValue = $pb.ProtobufEnum.initByValue(values); + static Status? valueOf($core.int value) => _byValue[value]; + + const Status._($core.int v, $core.String n) : super(v, n); +} + diff --git a/packages/users_repository/lib/src/gen/proto/v1/users.pbgrpc.dart b/packages/users_repository/lib/src/gen/proto/v1/users.pbgrpc.dart new file mode 100644 index 0000000..f980b24 --- /dev/null +++ b/packages/users_repository/lib/src/gen/proto/v1/users.pbgrpc.dart @@ -0,0 +1,185 @@ +/// +// Generated code. Do not modify. +// source: users.proto +// +// @dart = 2.12 +// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name + +import 'dart:async' as $async; + +import 'dart:core' as $core; + +import 'package:grpc/service_api.dart' as $grpc; +import 'users.pb.dart' as $0; +export 'users.pb.dart'; + +class UsersClient extends $grpc.Client { + static final _$createUser = + $grpc.ClientMethod<$0.CreateUserRequest, $0.CreateUserResponse>( + '/users.v1.Users/CreateUser', + ($0.CreateUserRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => + $0.CreateUserResponse.fromBuffer(value)); + static final _$getUser = + $grpc.ClientMethod<$0.GetUserRequest, $0.GetUserResponse>( + '/users.v1.Users/GetUser', + ($0.GetUserRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => + $0.GetUserResponse.fromBuffer(value)); + static final _$updateUser = + $grpc.ClientMethod<$0.UpdateUserRequest, $0.UpdateUserResponse>( + '/users.v1.Users/UpdateUser', + ($0.UpdateUserRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => + $0.UpdateUserResponse.fromBuffer(value)); + static final _$deleteUser = + $grpc.ClientMethod<$0.DeleteUserRequest, $0.DeleteUserResponse>( + '/users.v1.Users/DeleteUser', + ($0.DeleteUserRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => + $0.DeleteUserResponse.fromBuffer(value)); + static final _$loginUser = + $grpc.ClientMethod<$0.LoginUserRequest, $0.LoginUserResponse>( + '/users.v1.Users/LoginUser', + ($0.LoginUserRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => + $0.LoginUserResponse.fromBuffer(value)); + static final _$logoutUser = + $grpc.ClientMethod<$0.LogoutUserRequest, $0.LogoutUserResponse>( + '/users.v1.Users/LogoutUser', + ($0.LogoutUserRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => + $0.LogoutUserResponse.fromBuffer(value)); + + UsersClient($grpc.ClientChannel channel, + {$grpc.CallOptions? options, + $core.Iterable<$grpc.ClientInterceptor>? interceptors}) + : super(channel, options: options, interceptors: interceptors); + + $grpc.ResponseFuture<$0.CreateUserResponse> createUser( + $0.CreateUserRequest request, + {$grpc.CallOptions? options}) { + return $createUnaryCall(_$createUser, request, options: options); + } + + $grpc.ResponseFuture<$0.GetUserResponse> getUser($0.GetUserRequest request, + {$grpc.CallOptions? options}) { + return $createUnaryCall(_$getUser, request, options: options); + } + + $grpc.ResponseFuture<$0.UpdateUserResponse> updateUser( + $0.UpdateUserRequest request, + {$grpc.CallOptions? options}) { + return $createUnaryCall(_$updateUser, request, options: options); + } + + $grpc.ResponseFuture<$0.DeleteUserResponse> deleteUser( + $0.DeleteUserRequest request, + {$grpc.CallOptions? options}) { + return $createUnaryCall(_$deleteUser, request, options: options); + } + + $grpc.ResponseFuture<$0.LoginUserResponse> loginUser( + $0.LoginUserRequest request, + {$grpc.CallOptions? options}) { + return $createUnaryCall(_$loginUser, request, options: options); + } + + $grpc.ResponseFuture<$0.LogoutUserResponse> logoutUser( + $0.LogoutUserRequest request, + {$grpc.CallOptions? options}) { + return $createUnaryCall(_$logoutUser, request, options: options); + } +} + +abstract class UsersServiceBase extends $grpc.Service { + $core.String get $name => 'users.v1.Users'; + + UsersServiceBase() { + $addMethod($grpc.ServiceMethod<$0.CreateUserRequest, $0.CreateUserResponse>( + 'CreateUser', + createUser_Pre, + false, + false, + ($core.List<$core.int> value) => $0.CreateUserRequest.fromBuffer(value), + ($0.CreateUserResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$0.GetUserRequest, $0.GetUserResponse>( + 'GetUser', + getUser_Pre, + false, + false, + ($core.List<$core.int> value) => $0.GetUserRequest.fromBuffer(value), + ($0.GetUserResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$0.UpdateUserRequest, $0.UpdateUserResponse>( + 'UpdateUser', + updateUser_Pre, + false, + false, + ($core.List<$core.int> value) => $0.UpdateUserRequest.fromBuffer(value), + ($0.UpdateUserResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$0.DeleteUserRequest, $0.DeleteUserResponse>( + 'DeleteUser', + deleteUser_Pre, + false, + false, + ($core.List<$core.int> value) => $0.DeleteUserRequest.fromBuffer(value), + ($0.DeleteUserResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$0.LoginUserRequest, $0.LoginUserResponse>( + 'LoginUser', + loginUser_Pre, + false, + false, + ($core.List<$core.int> value) => $0.LoginUserRequest.fromBuffer(value), + ($0.LoginUserResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$0.LogoutUserRequest, $0.LogoutUserResponse>( + 'LogoutUser', + logoutUser_Pre, + false, + false, + ($core.List<$core.int> value) => $0.LogoutUserRequest.fromBuffer(value), + ($0.LogoutUserResponse value) => value.writeToBuffer())); + } + + $async.Future<$0.CreateUserResponse> createUser_Pre($grpc.ServiceCall call, + $async.Future<$0.CreateUserRequest> request) async { + return createUser(call, await request); + } + + $async.Future<$0.GetUserResponse> getUser_Pre( + $grpc.ServiceCall call, $async.Future<$0.GetUserRequest> request) async { + return getUser(call, await request); + } + + $async.Future<$0.UpdateUserResponse> updateUser_Pre($grpc.ServiceCall call, + $async.Future<$0.UpdateUserRequest> request) async { + return updateUser(call, await request); + } + + $async.Future<$0.DeleteUserResponse> deleteUser_Pre($grpc.ServiceCall call, + $async.Future<$0.DeleteUserRequest> request) async { + return deleteUser(call, await request); + } + + $async.Future<$0.LoginUserResponse> loginUser_Pre($grpc.ServiceCall call, + $async.Future<$0.LoginUserRequest> request) async { + return loginUser(call, await request); + } + + $async.Future<$0.LogoutUserResponse> logoutUser_Pre($grpc.ServiceCall call, + $async.Future<$0.LogoutUserRequest> request) async { + return logoutUser(call, await request); + } + + $async.Future<$0.CreateUserResponse> createUser( + $grpc.ServiceCall call, $0.CreateUserRequest request); + $async.Future<$0.GetUserResponse> getUser( + $grpc.ServiceCall call, $0.GetUserRequest request); + $async.Future<$0.UpdateUserResponse> updateUser( + $grpc.ServiceCall call, $0.UpdateUserRequest request); + $async.Future<$0.DeleteUserResponse> deleteUser( + $grpc.ServiceCall call, $0.DeleteUserRequest request); + $async.Future<$0.LoginUserResponse> loginUser( + $grpc.ServiceCall call, $0.LoginUserRequest request); + $async.Future<$0.LogoutUserResponse> logoutUser( + $grpc.ServiceCall call, $0.LogoutUserRequest request); +} diff --git a/packages/users_repository/lib/src/gen/proto/v1/users.pbjson.dart b/packages/users_repository/lib/src/gen/proto/v1/users.pbjson.dart new file mode 100644 index 0000000..d39ad13 --- /dev/null +++ b/packages/users_repository/lib/src/gen/proto/v1/users.pbjson.dart @@ -0,0 +1,171 @@ +/// +// Generated code. Do not modify. +// source: users.proto +// +// @dart = 2.12 +// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name + +import 'dart:core' as $core; +import 'dart:convert' as $convert; +import 'dart:typed_data' as $typed_data; +@$core.Deprecated('Use statusDescriptor instead') +const Status$json = const { + '1': 'Status', + '2': const [ + const {'1': 'SUCCESS', '2': 0}, + const {'1': 'ERROR', '2': 1}, + ], +}; + +/// Descriptor for `Status`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List statusDescriptor = $convert.base64Decode('CgZTdGF0dXMSCwoHU1VDQ0VTUxAAEgkKBUVSUk9SEAE='); +@$core.Deprecated('Use userDTODescriptor instead') +const UserDTO$json = const { + '1': 'UserDTO', + '2': const [ + const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + const {'1': 'username', '3': 2, '4': 1, '5': 9, '10': 'username'}, + const {'1': 'email', '3': 3, '4': 1, '5': 9, '10': 'email'}, + ], +}; + +/// Descriptor for `UserDTO`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List userDTODescriptor = $convert.base64Decode('CgdVc2VyRFRPEg4KAmlkGAEgASgJUgJpZBIaCgh1c2VybmFtZRgCIAEoCVIIdXNlcm5hbWUSFAoFZW1haWwYAyABKAlSBWVtYWls'); +@$core.Deprecated('Use getUserRequestDescriptor instead') +const GetUserRequest$json = const { + '1': 'GetUserRequest', + '2': const [ + const {'1': 'username', '3': 1, '4': 1, '5': 9, '10': 'username'}, + ], +}; + +/// Descriptor for `GetUserRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getUserRequestDescriptor = $convert.base64Decode('Cg5HZXRVc2VyUmVxdWVzdBIaCgh1c2VybmFtZRgBIAEoCVIIdXNlcm5hbWU='); +@$core.Deprecated('Use getUserResponseDescriptor instead') +const GetUserResponse$json = const { + '1': 'GetUserResponse', + '2': const [ + const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + const {'1': 'username', '3': 2, '4': 1, '5': 9, '10': 'username'}, + const {'1': 'email', '3': 3, '4': 1, '5': 9, '10': 'email'}, + const {'1': 'status', '3': 4, '4': 1, '5': 14, '6': '.users.v1.Status', '10': 'status'}, + const {'1': 'message', '3': 5, '4': 1, '5': 9, '10': 'message'}, + ], +}; + +/// Descriptor for `GetUserResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getUserResponseDescriptor = $convert.base64Decode('Cg9HZXRVc2VyUmVzcG9uc2USDgoCaWQYASABKAlSAmlkEhoKCHVzZXJuYW1lGAIgASgJUgh1c2VybmFtZRIUCgVlbWFpbBgDIAEoCVIFZW1haWwSKAoGc3RhdHVzGAQgASgOMhAudXNlcnMudjEuU3RhdHVzUgZzdGF0dXMSGAoHbWVzc2FnZRgFIAEoCVIHbWVzc2FnZQ=='); +@$core.Deprecated('Use deleteUserRequestDescriptor instead') +const DeleteUserRequest$json = const { + '1': 'DeleteUserRequest', + '2': const [ + const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + ], +}; + +/// Descriptor for `DeleteUserRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deleteUserRequestDescriptor = $convert.base64Decode('ChFEZWxldGVVc2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQ='); +@$core.Deprecated('Use deleteUserResponseDescriptor instead') +const DeleteUserResponse$json = const { + '1': 'DeleteUserResponse', + '2': const [ + const {'1': 'status', '3': 1, '4': 1, '5': 14, '6': '.users.v1.Status', '10': 'status'}, + const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, + ], +}; + +/// Descriptor for `DeleteUserResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deleteUserResponseDescriptor = $convert.base64Decode('ChJEZWxldGVVc2VyUmVzcG9uc2USKAoGc3RhdHVzGAEgASgOMhAudXNlcnMudjEuU3RhdHVzUgZzdGF0dXMSGAoHbWVzc2FnZRgCIAEoCVIHbWVzc2FnZQ=='); +@$core.Deprecated('Use createUserRequestDescriptor instead') +const CreateUserRequest$json = const { + '1': 'CreateUserRequest', + '2': const [ + const {'1': 'username', '3': 1, '4': 1, '5': 9, '10': 'username'}, + const {'1': 'email', '3': 2, '4': 1, '5': 9, '10': 'email'}, + const {'1': 'password', '3': 3, '4': 1, '5': 9, '10': 'password'}, + ], +}; + +/// Descriptor for `CreateUserRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createUserRequestDescriptor = $convert.base64Decode('ChFDcmVhdGVVc2VyUmVxdWVzdBIaCgh1c2VybmFtZRgBIAEoCVIIdXNlcm5hbWUSFAoFZW1haWwYAiABKAlSBWVtYWlsEhoKCHBhc3N3b3JkGAMgASgJUghwYXNzd29yZA=='); +@$core.Deprecated('Use createUserResponseDescriptor instead') +const CreateUserResponse$json = const { + '1': 'CreateUserResponse', + '2': const [ + const {'1': 'status', '3': 1, '4': 1, '5': 14, '6': '.users.v1.Status', '10': 'status'}, + const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, + ], +}; + +/// Descriptor for `CreateUserResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createUserResponseDescriptor = $convert.base64Decode('ChJDcmVhdGVVc2VyUmVzcG9uc2USKAoGc3RhdHVzGAEgASgOMhAudXNlcnMudjEuU3RhdHVzUgZzdGF0dXMSGAoHbWVzc2FnZRgCIAEoCVIHbWVzc2FnZQ=='); +@$core.Deprecated('Use loginUserRequestDescriptor instead') +const LoginUserRequest$json = const { + '1': 'LoginUserRequest', + '2': const [ + const {'1': 'username', '3': 1, '4': 1, '5': 9, '10': 'username'}, + const {'1': 'password', '3': 2, '4': 1, '5': 9, '10': 'password'}, + ], +}; + +/// Descriptor for `LoginUserRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List loginUserRequestDescriptor = $convert.base64Decode('ChBMb2dpblVzZXJSZXF1ZXN0EhoKCHVzZXJuYW1lGAEgASgJUgh1c2VybmFtZRIaCghwYXNzd29yZBgCIAEoCVIIcGFzc3dvcmQ='); +@$core.Deprecated('Use loginUserResponseDescriptor instead') +const LoginUserResponse$json = const { + '1': 'LoginUserResponse', + '2': const [ + const {'1': 'status', '3': 1, '4': 1, '5': 14, '6': '.users.v1.Status', '10': 'status'}, + const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, + const {'1': 'jwt_token', '3': 3, '4': 1, '5': 9, '10': 'jwtToken'}, + const {'1': 'refresh_token', '3': 4, '4': 1, '5': 9, '10': 'refreshToken'}, + const {'1': 'userDTO', '3': 5, '4': 1, '5': 11, '6': '.users.v1.UserDTO', '10': 'userDTO'}, + ], +}; + +/// Descriptor for `LoginUserResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List loginUserResponseDescriptor = $convert.base64Decode('ChFMb2dpblVzZXJSZXNwb25zZRIoCgZzdGF0dXMYASABKA4yEC51c2Vycy52MS5TdGF0dXNSBnN0YXR1cxIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdlEhsKCWp3dF90b2tlbhgDIAEoCVIIand0VG9rZW4SIwoNcmVmcmVzaF90b2tlbhgEIAEoCVIMcmVmcmVzaFRva2VuEisKB3VzZXJEVE8YBSABKAsyES51c2Vycy52MS5Vc2VyRFRPUgd1c2VyRFRP'); +@$core.Deprecated('Use updateUserRequestDescriptor instead') +const UpdateUserRequest$json = const { + '1': 'UpdateUserRequest', + '2': const [ + const {'1': 'username', '3': 2, '4': 1, '5': 9, '10': 'username'}, + const {'1': 'email', '3': 3, '4': 1, '5': 9, '10': 'email'}, + const {'1': 'password', '3': 4, '4': 1, '5': 9, '10': 'password'}, + const {'1': 'id', '3': 5, '4': 1, '5': 9, '10': 'id'}, + ], +}; + +/// Descriptor for `UpdateUserRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updateUserRequestDescriptor = $convert.base64Decode('ChFVcGRhdGVVc2VyUmVxdWVzdBIaCgh1c2VybmFtZRgCIAEoCVIIdXNlcm5hbWUSFAoFZW1haWwYAyABKAlSBWVtYWlsEhoKCHBhc3N3b3JkGAQgASgJUghwYXNzd29yZBIOCgJpZBgFIAEoCVICaWQ='); +@$core.Deprecated('Use updateUserResponseDescriptor instead') +const UpdateUserResponse$json = const { + '1': 'UpdateUserResponse', + '2': const [ + const {'1': 'status', '3': 1, '4': 1, '5': 14, '6': '.users.v1.Status', '10': 'status'}, + const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, + ], +}; + +/// Descriptor for `UpdateUserResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updateUserResponseDescriptor = $convert.base64Decode('ChJVcGRhdGVVc2VyUmVzcG9uc2USKAoGc3RhdHVzGAEgASgOMhAudXNlcnMudjEuU3RhdHVzUgZzdGF0dXMSGAoHbWVzc2FnZRgCIAEoCVIHbWVzc2FnZQ=='); +@$core.Deprecated('Use logoutUserRequestDescriptor instead') +const LogoutUserRequest$json = const { + '1': 'LogoutUserRequest', + '2': const [ + const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + ], +}; + +/// Descriptor for `LogoutUserRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List logoutUserRequestDescriptor = $convert.base64Decode('ChFMb2dvdXRVc2VyUmVxdWVzdBIOCgJpZBgBIAEoCVICaWQ='); +@$core.Deprecated('Use logoutUserResponseDescriptor instead') +const LogoutUserResponse$json = const { + '1': 'LogoutUserResponse', + '2': const [ + const {'1': 'status', '3': 1, '4': 1, '5': 14, '6': '.users.v1.Status', '10': 'status'}, + const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, + ], +}; + +/// Descriptor for `LogoutUserResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List logoutUserResponseDescriptor = $convert.base64Decode('ChJMb2dvdXRVc2VyUmVzcG9uc2USKAoGc3RhdHVzGAEgASgOMhAudXNlcnMudjEuU3RhdHVzUgZzdGF0dXMSGAoHbWVzc2FnZRgCIAEoCVIHbWVzc2FnZQ=='); From d3501b142d97992a0082435ef631deb83bdb1e17 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Wed, 26 Apr 2023 22:56:06 +0200 Subject: [PATCH 04/19] users_repository class fix --- .../src/infrastructure/users_repository.dart | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/packages/users_repository/lib/src/infrastructure/users_repository.dart b/packages/users_repository/lib/src/infrastructure/users_repository.dart index c0dfbe7..2effae3 100644 --- a/packages/users_repository/lib/src/infrastructure/users_repository.dart +++ b/packages/users_repository/lib/src/infrastructure/users_repository.dart @@ -42,4 +42,29 @@ class UsersRepository implements UsersRepositoryI { // TODO: implement updateUser throw UnimplementedError(); } + + @override + Future createUser( + String username, String password, String email) { + // TODO: implement createUser + throw UnimplementedError(); + } + + @override + Future deleteUser(String username) { + // TODO: implement deleteUser + throw UnimplementedError(); + } + + @override + Future loginUser(String email, String password) { + // TODO: implement loginUser + throw UnimplementedError(); + } + + @override + Future logoutUser(String id) { + // TODO: implement logoutUser + throw UnimplementedError(); + } } From 4eee1455649e0406534f469e06dd504b2d08b296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Wed, 17 May 2023 00:35:35 +0200 Subject: [PATCH 05/19] add user bloc and bloc listener wrapping splash page to mock authentication flow --- ios/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../sign_in_form_bloc/sign_in_form_bloc.dart | 33 +++- .../sign_in_form_bloc/sign_in_form_state.dart | 4 +- lib/application/auth/user_bloc/user_bloc.dart | 54 ++++++ .../auth/user_bloc/user_event.dart | 10 ++ .../auth/user_bloc/user_state.dart | 14 ++ lib/domain/auth/user.dart | 12 ++ lib/gen/assets.gen.dart | 11 +- lib/presentation/core/my_app_widget.dart | 11 +- .../text_fields/custom_text_form_field.dart | 31 ++-- .../form/text_fields/email_form_field.dart | 8 + .../form/text_fields/password_form_field.dart | 55 +++--- .../pages/login_page/login_page_view.dart | 35 ++-- .../login_page/widgets/sign_in_form.dart | 71 ++++---- .../pages/splash_page/splash_page_view.dart | 33 +++- .../src/domain/users/users_repository_i.dart | 4 + .../src/infrastructure/users_repository.dart | 42 +++-- packages/users_repository/pubspec.lock | 18 +- packages/users_repository/pubspec.yaml | 2 +- pubspec.lock | 170 +++++++++--------- pubspec.yaml | 2 +- 22 files changed, 405 insertions(+), 219 deletions(-) create mode 100644 lib/application/auth/user_bloc/user_bloc.dart create mode 100644 lib/application/auth/user_bloc/user_event.dart create mode 100644 lib/application/auth/user_bloc/user_state.dart create mode 100644 lib/domain/auth/user.dart diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index f58dea2..3218a96 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -127,7 +127,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a..a6b826d 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ { @@ -21,11 +23,38 @@ class SignInFormBloc extends Bloc { on((event, emit) { emit(state.copyWith( - emailAddress: EmailAddress(event.password), + password: Password(event.password), )); }); - on((event, emit) { + on((event, emit) async { + emit(state.copyWith( + isSubmitting: true, + )); + + final usernameString = state.emailAddress + .getOrCrash(); // for now it will also work as username + final passwordString = state.password.getOrCrash(); + + final result = await _usersRepository.createUser( + usernameString, + passwordString, + usernameString, + ); + + emit(state.copyWith( + isSubmitting: false, + )); + + if (result.isLeft()) { + emit(state.copyWith( + authResult: left(const AuthFailure.serverError()), + )); + return; + } + emit(state.copyWith( + authResult: right(unit), + )); }); } diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart index b1ac12f..1e7c082 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart @@ -7,7 +7,7 @@ class SignInFormState with _$SignInFormState { required Password password, required bool showErrorMessages, required bool isSubmitting, - required Either authFailureOrSuccessOption, + required Either authResult, }) = _SignInFormState; factory SignInFormState.initial() => SignInFormState( @@ -15,6 +15,6 @@ class SignInFormState with _$SignInFormState { password: Password(''), isSubmitting: false, showErrorMessages: false, - authFailureOrSuccessOption: right(unit), + authResult: right(unit), ); } diff --git a/lib/application/auth/user_bloc/user_bloc.dart b/lib/application/auth/user_bloc/user_bloc.dart new file mode 100644 index 0000000..de5c411 --- /dev/null +++ b/lib/application/auth/user_bloc/user_bloc.dart @@ -0,0 +1,54 @@ +import 'package:bloc/bloc.dart'; +import 'package:fpdart/fpdart.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../../../domain/auth/user.dart'; + +part 'user_event.dart'; + +part 'user_state.dart'; + +part 'user_bloc.freezed.dart'; + +class UserBloc extends Bloc { + UserBloc() : super(UserState.initial()) { + on((event, emit) { + emit(state.copyWith( + isCheckingAuthStatus: some(true), + )); + + // check token in cache? mock for now + final token = DateTime.now().second % 2 == 0 ? some('token') : none(); + if (token.isNone()) { + emit(state.copyWith( + isCheckingAuthStatus: some(false), + )); + return; + } + + // fetch user + const user = User( + id: 'id', + username: 'username', + email: 'email', + ); + emit(state.copyWith( + user: some(user), + isCheckingAuthStatus: some(false), + )); + }); + + on((event, emit) { + emit(state.copyWith( + user: some(event.user), + )); + }); + + on((event, emit){ + // TODO remove token from cache + emit(state.copyWith( + user: none(), + )); + }); + } +} diff --git a/lib/application/auth/user_bloc/user_event.dart b/lib/application/auth/user_bloc/user_event.dart new file mode 100644 index 0000000..48806bd --- /dev/null +++ b/lib/application/auth/user_bloc/user_event.dart @@ -0,0 +1,10 @@ +part of 'user_bloc.dart'; + +@freezed +class UserEvent with _$UserEvent { + const factory UserEvent.authCheckRequested() = AuthCheckRequested; + + const factory UserEvent.signedOut() = SignedOut; + + const factory UserEvent.loggedIn(User user) = LoggedIn; +} diff --git a/lib/application/auth/user_bloc/user_state.dart b/lib/application/auth/user_bloc/user_state.dart new file mode 100644 index 0000000..4f04522 --- /dev/null +++ b/lib/application/auth/user_bloc/user_state.dart @@ -0,0 +1,14 @@ +part of 'user_bloc.dart'; + +@freezed +class UserState with _$UserState { + factory UserState({ + required Option user, + required Option isCheckingAuthStatus, + }) = _UserState; + + factory UserState.initial() => UserState( + user: none(), + isCheckingAuthStatus: none(), + ); +} diff --git a/lib/domain/auth/user.dart b/lib/domain/auth/user.dart new file mode 100644 index 0000000..2d33b59 --- /dev/null +++ b/lib/domain/auth/user.dart @@ -0,0 +1,12 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'user.freezed.dart'; + +@freezed +class User with _$User { + const factory User({ + required String id, + required String username, + required String email, + }) = _User; +} diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index e53a8ef..e43c986 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -97,7 +97,16 @@ class AssetGenImage { ); } - ImageProvider provider() => AssetImage(_assetName); + ImageProvider provider({ + AssetBundle? bundle, + String? package, + }) { + return AssetImage( + _assetName, + bundle: bundle, + package: package, + ); + } String get path => _assetName; diff --git a/lib/presentation/core/my_app_widget.dart b/lib/presentation/core/my_app_widget.dart index c5af064..f575527 100644 --- a/lib/presentation/core/my_app_widget.dart +++ b/lib/presentation/core/my_app_widget.dart @@ -5,6 +5,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:users_repository/users_repository.dart'; +import '../../application/auth/user_bloc/user_bloc.dart'; import '../router/router.dart'; class MyAppWidget extends StatelessWidget { @@ -14,7 +15,13 @@ class MyAppWidget extends StatelessWidget { Widget build(BuildContext context) { return RepositoryProvider( create: (context) => UsersRepository(), - child: _MyAppRouter(_appRouter), + child: BlocProvider( + create: (context) => UserBloc() + ..add( + const UserEvent.authCheckRequested(), + ), + child: _MyAppRouter(_appRouter), + ), ); } } @@ -35,7 +42,7 @@ class _MyAppRouter extends StatelessWidget { ), themeMode: ThemeMode.dark, debugShowCheckedModeBanner: false, - title: 'Road Runner', + title: 'Via Go', routerDelegate: router.delegate(), routeInformationParser: router.defaultRouteParser(), localizationsDelegates: const [ diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart index dce86d6..5ccda4e 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart @@ -15,6 +15,7 @@ class CustomTextFormField extends StatelessWidget { this.onChanged, this.onTap, this.readOnly = false, + this.validator, }) : super(key: key); final TextEditingController? controller; @@ -26,21 +27,25 @@ class CustomTextFormField extends StatelessWidget { final Function(String)? onChanged; final Function()? onTap; final bool readOnly; + final String? Function(String?)? validator; @override Widget build(BuildContext context) { return TextFormField( - controller: controller, - obscureText: obscureText, - decoration: getInputDecoration( - hintText: hintText, - prefixIcon: prefixIcon, - suffixIcon: suffixIcon, - ), - keyboardType: keyboardType, - onChanged: onChanged, - readOnly: readOnly, - onTap: onTap); + controller: controller, + obscureText: obscureText, + decoration: getInputDecoration( + hintText: hintText, + prefixIcon: prefixIcon, + suffixIcon: suffixIcon, + ), + keyboardType: keyboardType, + onChanged: onChanged, + readOnly: readOnly, + onTap: onTap, + validator: validator, + autovalidateMode: AutovalidateMode.onUserInteraction, + ); } @override @@ -54,6 +59,8 @@ class CustomTextFormField extends StatelessWidget { ..add(DiagnosticsProperty('readOnly', readOnly)) ..add( DiagnosticsProperty('controller', controller)) - ..add(ObjectFlagProperty.has('onTap', onTap)); + ..add(ObjectFlagProperty.has('onTap', onTap)) + ..add(ObjectFlagProperty.has( + 'validator', validator)); } } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart index 8bebe7b..c568c2c 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart @@ -17,6 +17,14 @@ class EmailFormField extends StatelessWidget { onChanged: (value) { context.read().add(SignInFormEvent.emailChanged(value)); }, + validator: (_) => + context.read().state.emailAddress.value.fold( + (f) => f.maybeMap( + invalidEmail: (_) => 'Invalid email', + orElse: () => null, + ), + (_) => null, + ), ); } } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart index cfd240f..3e8a320 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart @@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../../../utils/extensions.dart'; +import '../../../../constants/decorations.dart'; import 'custom_text_form_field.dart'; class PasswordFormField extends StatefulWidget { @@ -11,10 +12,12 @@ class PasswordFormField extends StatefulWidget { super.key, this.onPressed, }); + final Function()? onPressed; @override State createState() => _PasswordFormFieldState(); + @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); @@ -23,37 +26,33 @@ class PasswordFormField extends StatefulWidget { } class _PasswordFormFieldState extends State { - bool _obscureText = true; + // bool _obscureText = true; + @override Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - CustomTextFormField( - hintText: context.l10n.password, - keyboardType: TextInputType.visiblePassword, - prefixIcon: const Icon(Icons.lock), - suffixIcon: IconButton( - onPressed: () => setState(() => _obscureText = !_obscureText), - icon: _obscureText - ? const Icon(Icons.visibility_off) - : const Icon(Icons.visibility), - ), - obscureText: _obscureText, - onChanged: (value) { - context - .read() - .add(SignInFormEvent.passwordChanged(value)); - } + return TextFormField( + decoration: getInputDecoration( + hintText: context.l10n.password, + prefixIcon: const Icon(Icons.lock), + suffixIcon: IconButton( + icon: const Icon(Icons.remove_red_eye), + onPressed: widget.onPressed, ), - if (widget.onPressed != null) - TextButton( - onPressed: widget.onPressed, - child: Text( - context.l10n.authForgotPassword, - style: const TextStyle(fontWeight: FontWeight.bold), - )) - ], + ), + autocorrect: false, + obscureText: true, + autovalidateMode: AutovalidateMode.onUserInteraction, + onChanged: (value) => context.read().add( + SignInFormEvent.passwordChanged(value), + ), + validator: (_) => + context.read().state.password.value.fold( + (l) => l.maybeMap( + invalidPassword: (_) => 'Invalid password', + orElse: () => null, + ), + (_) => null, + ), ); } } diff --git a/lib/presentation/pages/login_page/login_page_view.dart b/lib/presentation/pages/login_page/login_page_view.dart index 239f8c0..eeba3f6 100644 --- a/lib/presentation/pages/login_page/login_page_view.dart +++ b/lib/presentation/pages/login_page/login_page_view.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../utils/extensions.dart'; import '../../core/widgets/authentication/app_logo.dart'; import '../../core/widgets/authentication/page_title.dart'; @@ -14,17 +16,28 @@ class LoginPageView extends StatelessWidget { return Scaffold( resizeToAvoidBottomInset: false, body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const AppLogo(), - DefaultPadding( - child: PageTitle(title: context.l10n.authLoginHeading), - ), - const SizedBox(height: 20), - const SignInForm(), - ], - )), + child: BlocConsumer( + listener: (context, state) { + // TODO: implement listener + }, + builder: (context, state) { + if(state.isSubmitting) { + return const Center(child: CircularProgressIndicator()); + } + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const AppLogo(), + DefaultPadding( + child: PageTitle(title: context.l10n.authLoginHeading), + ), + const SizedBox(height: 20), + const SignInForm(), + ], + ); + }, + ), + ), ); } } diff --git a/lib/presentation/pages/login_page/widgets/sign_in_form.dart b/lib/presentation/pages/login_page/widgets/sign_in_form.dart index c716dad..5be6404 100644 --- a/lib/presentation/pages/login_page/widgets/sign_in_form.dart +++ b/lib/presentation/pages/login_page/widgets/sign_in_form.dart @@ -19,47 +19,36 @@ class SignInForm extends StatelessWidget { @override Widget build(BuildContext context) { - return BlocConsumer( - listener: (context, state) { - // TODO: implement listener - }, - builder: (context, state) { - return state.isSubmitting - ? const Center(child: CircularProgressIndicator()) - : Form( - child: Column(children: [ - const DefaultPadding( - child: EmailFormField(), - ), - DefaultPadding( - child: PasswordFormField( - onPressed: () => - context.router.push(const ResetPasswordRoute()), - ), - ), - const SizedBox( - height: 20, - ), - DefaultPadding( - child: FormSubmitButton( - buttonText: context.l10n.authSignIn, - onPressed: () => context.read().add( - const SignInFormEvent - .signInWithEmailWithPasswordPressed(), - ), - ), - ), - const SizedBox( - height: 30, - ), - SwitchFormButton( - leadingText: context.l10n.authNoAccount, - buttonText: context.l10n.authSignUp, - route: const RegisterRoute(), - ) - ]), - ); - }, + return Form( + child: Column(children: [ + const DefaultPadding( + child: EmailFormField(), + ), + DefaultPadding( + child: PasswordFormField( + onPressed: () => context.router.push(const ResetPasswordRoute()), + ), + ), + const SizedBox( + height: 20, + ), + DefaultPadding( + child: FormSubmitButton( + buttonText: context.l10n.authSignIn, + onPressed: () => context.read().add( + const SignInFormEvent.signInWithEmailWithPasswordPressed(), + ), + ), + ), + const SizedBox( + height: 30, + ), + SwitchFormButton( + leadingText: context.l10n.authNoAccount, + buttonText: context.l10n.authSignUp, + route: const RegisterRoute(), + ) + ]), ); } } diff --git a/lib/presentation/pages/splash_page/splash_page_view.dart b/lib/presentation/pages/splash_page/splash_page_view.dart index 2b77451..d148ed4 100644 --- a/lib/presentation/pages/splash_page/splash_page_view.dart +++ b/lib/presentation/pages/splash_page/splash_page_view.dart @@ -1,5 +1,8 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:fpdart/fpdart.dart'; +import '../../../application/auth/user_bloc/user_bloc.dart'; import '../../../gen/assets.gen.dart'; import '../../router/router.dart'; @@ -9,15 +12,27 @@ class SplashPageView extends StatelessWidget { @override Widget build(BuildContext context) { - return SafeArea( - child: Scaffold( - backgroundColor: const Color(0xffC7AEAE), - body: InkWell( - onTap: () { - context.router.popForced(); - context.router.push(const HomeRoute()); - }, - child: Padding( + return BlocListener( + listener: (context, state) { + if (state.isCheckingAuthStatus.isNone()) { + return; + } + final isChecking = state.isCheckingAuthStatus.getOrElse(() => false); + if (isChecking) { + return; + } + + if (state.user.isSome()) { + context.router.replace(const HomeRoute()); + } else { + context.router.replace(const LoginRoute()); + } + + }, + child: SafeArea( + child: Scaffold( + backgroundColor: const Color(0xffC7AEAE), + body: Padding( padding: const EdgeInsets.all(10), child: Assets.images.splashScreen.image( fit: BoxFit.fill, diff --git a/packages/users_repository/lib/src/domain/users/users_repository_i.dart b/packages/users_repository/lib/src/domain/users/users_repository_i.dart index 449cc4f..9d4aa84 100644 --- a/packages/users_repository/lib/src/domain/users/users_repository_i.dart +++ b/packages/users_repository/lib/src/domain/users/users_repository_i.dart @@ -1,3 +1,5 @@ +import 'package:grpc/grpc.dart'; + import '../core/typedefs.dart'; abstract class UsersRepositoryI { @@ -12,4 +14,6 @@ abstract class UsersRepositoryI { Future loginUser(String email, String password); Future logoutUser(String id); + + late ClientChannel channel; } diff --git a/packages/users_repository/lib/src/infrastructure/users_repository.dart b/packages/users_repository/lib/src/infrastructure/users_repository.dart index 2effae3..67cfa0f 100644 --- a/packages/users_repository/lib/src/infrastructure/users_repository.dart +++ b/packages/users_repository/lib/src/infrastructure/users_repository.dart @@ -10,17 +10,8 @@ import '../gen/proto/v1/users.pbgrpc.dart'; class UsersRepository implements UsersRepositoryI { @override Future getUser(String username) async { - final channel = ClientChannel( - '192.168.0.100', - port: 50051, - options: ChannelOptions( - credentials: const ChannelCredentials.insecure(), - codecRegistry: - CodecRegistry(codecs: const [GzipCodec(), IdentityCodec()]), - ), - ); - final client = UsersClient(channel); + try { final response = await client.getUser( GetUserRequest()..username = username, @@ -45,9 +36,23 @@ class UsersRepository implements UsersRepositoryI { @override Future createUser( - String username, String password, String email) { - // TODO: implement createUser - throw UnimplementedError(); + String username, String password, String email) async { + final client = UsersClient(channel); + + try { + final response = await client.getUser( + GetUserRequest()..username = username, + ); + + await channel.shutdown(); + return right(response); + } on GrpcError catch (err) { + if (kDebugMode) { + debugPrint(err.toString()); + } + await channel.shutdown(); + return left(const CallFailure.serverError()); + } } @override @@ -67,4 +72,15 @@ class UsersRepository implements UsersRepositoryI { // TODO: implement logoutUser throw UnimplementedError(); } + + @override + ClientChannel channel = ClientChannel( + '192.168.0.100', + port: 50051, + options: ChannelOptions( + credentials: const ChannelCredentials.insecure(), + codecRegistry: + CodecRegistry(codecs: const [GzipCodec(), IdentityCodec()]), + ), + ); } diff --git a/packages/users_repository/pubspec.lock b/packages/users_repository/pubspec.lock index be02c41..36f7736 100644 --- a/packages/users_repository/pubspec.lock +++ b/packages/users_repository/pubspec.lock @@ -367,18 +367,18 @@ packages: dependency: transitive description: name: matcher - sha256: c94db23593b89766cda57aab9ac311e3616cf87c6fa4e9749df032f66f30dcb8 + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" url: "https://pub.dev" source: hosted - version: "0.12.14" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: @@ -484,10 +484,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -532,10 +532,10 @@ packages: dependency: transitive description: name: test_api - sha256: "6182294da5abf431177fccc1ee02401f6df30f766bc6130a0852c6b6d7ee6b2d" + sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 url: "https://pub.dev" source: hosted - version: "0.4.18" + version: "0.5.2" timing: dependency: transitive description: @@ -585,4 +585,4 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=3.0.0-290.0.dev <4.0.0" + dart: ">=3.1.0-112.0.dev <4.0.0" diff --git a/packages/users_repository/pubspec.yaml b/packages/users_repository/pubspec.yaml index 10f66a3..7fc1eed 100644 --- a/packages/users_repository/pubspec.yaml +++ b/packages/users_repository/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: 'none' version: 1.0.0+1 environment: - sdk: '>=3.0.0-290.0.dev <4.0.0' + sdk: '>=3.1.0-112.0.dev <4.0.0' dependencies: flutter: diff --git a/pubspec.lock b/pubspec.lock index 18eecc3..1407dab 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,34 +5,34 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: a36ec4843dc30ea6bf652bf25e3448db6c5e8bcf4aa55f063a5d1dad216d8214 + sha256: "405666cd3cf0ee0a48d21ec67e65406aad2c726d9fa58840d3375e7bdcd32a07" url: "https://pub.dev" source: hosted - version: "58.0.0" + version: "60.0.0" analyzer: dependency: "direct dev" description: name: analyzer - sha256: cc4242565347e98424ce9945c819c192ec0838cb9d1f6aa4a97cc96becbc5b27 + sha256: "1952250bd005bacb895a01bf1b4dc00e3ba1c526cf47dca54dfe24979c65f5b3" url: "https://pub.dev" source: hosted - version: "5.10.0" + version: "5.12.0" archive: dependency: transitive description: name: archive - sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d + sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" url: "https://pub.dev" source: hosted - version: "3.3.6" + version: "3.3.7" args: dependency: transitive description: name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" + sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" async: dependency: transitive description: @@ -77,10 +77,10 @@ packages: dependency: transitive description: name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" + sha256: "43865b79fbb78532e4bff7c33087aa43b1d488c4fdef014eaef568af6d8016dc" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.0" build_config: dependency: transitive description: @@ -109,18 +109,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "7b25ba738bc74c94187cebeb9cc29d38a32e8279ce950eabd821d3b454a5f03d" + sha256: "220ae4553e50d7c21a17c051afc7b183d28a24a420502e842f303f8e4e6edced" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.4" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292" + sha256: "30859c90e9ddaccc484f56303931f477b1f1ba2bab74aa32ed5d6ce15870f8cf" url: "https://pub.dev" source: hosted - version: "7.2.7" + version: "7.2.8" built_collection: dependency: transitive description: @@ -133,10 +133,10 @@ packages: dependency: transitive description: name: built_value - sha256: "31b7c748fd4b9adf8d25d72a4c4a59ef119f12876cf414f94f8af5131d5fa2b0" + sha256: "2f17434bd5d52a26762043d6b43bb53b3acd029b4d9071a329f46d67ef297e6d" url: "https://pub.dev" source: hosted - version: "8.4.4" + version: "8.5.0" change_app_package_name: dependency: "direct main" description: @@ -157,10 +157,10 @@ packages: dependency: transitive description: name: checked_yaml - sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.3" cli_util: dependency: transitive description: @@ -221,10 +221,10 @@ packages: dependency: transitive description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" cupertino_icons: dependency: "direct main" description: @@ -237,10 +237,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "6d691edde054969f0e0f26abb1b30834b5138b963793e56f69d3a9a4435e6352" + sha256: f4f1f73ab3fd2afcbcca165ee601fe980d966af6a21b5970c6c9376955c528ad url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" dartx: dependency: transitive description: @@ -253,10 +253,10 @@ packages: dependency: "direct main" description: name: dropdown_button2 - sha256: "4458d81bfd24207f3d58f66f78097064e02f810f94cf1bc80bf20fe7685ebc80" + sha256: "13bf78b6e5b6ca7256701988b22e078cd94b41bfab8d68a128651734702e0d1b" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.2" fake_async: dependency: transitive description: @@ -298,18 +298,18 @@ packages: dependency: transitive description: name: flutter_gen_core - sha256: e74db9fc706ce43ef0dfd4b296fcfa10f84c4d862b9b68a087e7c703f97c7a0a + sha256: e8637dd6a59860f89e5e71be0a27101ec32dad1a0ed7fd879fd23b6e91d5004d url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.3.1" flutter_gen_runner: dependency: "direct dev" description: name: flutter_gen_runner - sha256: "434511d7c3f7bb5c67d89a16451056093953bebf7afa8336baeceddfc6fe2a21" + sha256: "7de1bf4fc0439be0fef3178b6423d5c7f1f9f3a38a7c6fafe75d7f70ff4856d7" url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.3.1" flutter_launcher_icons: dependency: "direct dev" description: @@ -348,10 +348,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: e819441678f1679b719008ff2ff0ef045d66eed9f9ec81166ca0d9b02a187454 + sha256: "2edb9ef971d0f803860ecd9084afd48c717d002141ad77b69be3e976bee7190e" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.4" freezed_annotation: dependency: "direct main" description: @@ -388,10 +388,10 @@ packages: dependency: transitive description: name: graphs - sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 + sha256: "772db3d53d23361d4ffcf5a9bb091cf3ee9b22f2be52cd107cd7a2683a89ba0e" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" grpc: dependency: transitive description: @@ -404,10 +404,10 @@ packages: dependency: transitive description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "0.13.6" http2: dependency: transitive description: @@ -436,18 +436,18 @@ packages: dependency: transitive description: name: image - sha256: "483a389d6ccb292b570c31b3a193779b1b0178e7eb571986d9a49904b6861227" + sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf url: "https://pub.dev" source: hosted - version: "4.0.15" + version: "4.0.17" intl: dependency: "direct main" description: name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.18.0" + version: "0.18.1" io: dependency: transitive description: @@ -468,18 +468,18 @@ packages: dependency: transitive description: name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.8.1" lints: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + sha256: "6b0206b0bf4f04961fc5438198ccb3a885685cd67d4d4a32cc20ad7f8adbe015" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.0" logging: dependency: transitive description: @@ -492,18 +492,18 @@ packages: dependency: transitive description: name: matcher - sha256: c94db23593b89766cda57aab9ac311e3616cf87c6fa4e9749df032f66f30dcb8 + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" url: "https://pub.dev" source: hosted - version: "0.12.14" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: @@ -572,18 +572,18 @@ packages: dependency: transitive description: name: petitparser - sha256: a9346a3fbba7546a28374bdbcd7f54ea48bb47772bf3a7ab4bfaadc40bc8b8c6 + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "5.4.0" pointycastle: dependency: transitive description: name: pointycastle - sha256: c3120a968135aead39699267f4c74bc9a08e4e909e86bc1b0af5bfd78691123c + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" url: "https://pub.dev" source: hosted - version: "3.7.2" + version: "3.7.3" pool: dependency: transitive description: @@ -612,50 +612,50 @@ packages: dependency: transitive description: name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: ec85d7d55339d85f44ec2b682a82fea340071e8978257e5a43e69f79e98ef50c + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.2.3" shelf: dependency: transitive description: name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" shelf_static: dependency: transitive description: name: shelf_static - sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c + sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" sky_engine: dependency: transitive description: flutter @@ -665,10 +665,10 @@ packages: dependency: transitive description: name: source_gen - sha256: c2bea18c95cfa0276a366270afaa2850b09b4a76db95d546f3d003dcc7011298 + sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33" url: "https://pub.dev" source: hosted - version: "1.2.7" + version: "1.3.2" source_map_stack_trace: dependency: transitive description: @@ -689,10 +689,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -737,26 +737,26 @@ packages: dependency: transitive description: name: test - sha256: "5301f54eb6fe945daa99bc8df6ece3f88b5ceaa6f996f250efdaaf63e22886be" + sha256: "4f92f103ef63b1bbac6f4bd1930624fca81b2574464482512c4f0896319be575" url: "https://pub.dev" source: hosted - version: "1.23.1" + version: "1.24.2" test_api: dependency: transitive description: name: test_api - sha256: "6182294da5abf431177fccc1ee02401f6df30f766bc6130a0852c6b6d7ee6b2d" + sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 url: "https://pub.dev" source: hosted - version: "0.4.18" + version: "0.5.2" test_core: dependency: transitive description: name: test_core - sha256: d2e9240594b409565524802b84b7b39341da36dd6fd8e1660b53ad928ec3e9af + sha256: "3642b184882f79e76ca57a9230fb971e494c3c1fd09c21ae3083ce891bcc0aa1" url: "https://pub.dev" source: hosted - version: "0.4.24" + version: "0.5.2" time: dependency: transitive description: @@ -777,10 +777,10 @@ packages: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" users_repository: dependency: "direct main" description: @@ -800,26 +800,26 @@ packages: dependency: transitive description: name: vm_service - sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe + sha256: f3743ca475e0c9ef71df4ba15eb2d7684eecd5c8ba20a462462e4e8b561b2e11 url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "11.6.0" watcher: dependency: transitive description: name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.0" webkit_inspection_protocol: dependency: transitive description: @@ -832,18 +832,18 @@ packages: dependency: transitive description: name: xml - sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.3.0" yaml: dependency: transitive description: name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: - dart: ">=3.0.0-366.0.dev <4.0.0" + dart: ">=3.1.0-112.0.dev <4.0.0" flutter: ">=3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index e9b189a..5364133 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: "none" version: 1.0.0+1 environment: - sdk: ">=3.0.0-366.0.dev" + sdk: ">=3.1.0-112.0.dev" dependencies: flutter: From 31c2bae586e10bbd7af16312b93b1acc19b83c14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Thu, 18 May 2023 22:16:19 +0200 Subject: [PATCH 06/19] implement bloc listener to display snackbar on auth failrue --- ios/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../sign_in_form_bloc/sign_in_form_bloc.dart | 19 +++++++---- .../pages/login_page/login_page_view.dart | 34 +++++++++++++++++-- .../login_page/widgets/auth_snackbar.dart | 6 ++++ .../pages/splash_page/splash_page_view.dart | 1 - .../lib/src/domain/core/typedefs.dart | 2 +- .../src/domain/users/users_repository_i.dart | 17 ++++++---- .../src/infrastructure/users_repository.dart | 20 ++++++----- packages/users_repository/pubspec.lock | 14 ++++---- packages/users_repository/pubspec.yaml | 2 +- pubspec.lock | 34 ++++++++++++------- pubspec.yaml | 3 +- 13 files changed, 108 insertions(+), 48 deletions(-) create mode 100644 lib/presentation/pages/login_page/widgets/auth_snackbar.dart diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 3218a96..f58dea2 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -127,7 +127,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a6b826d..c87d15a 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ { isSubmitting: true, )); - final usernameString = state.emailAddress - .getOrCrash(); // for now it will also work as username - final passwordString = state.password.getOrCrash(); + final isUsernameValid = state.emailAddress.isValid(); + final isPasswordValid = state.password.isValid(); + + if (!isUsernameValid || !isPasswordValid) { + emit(state.copyWith( + authResult: left(const AuthFailure.invalidEmailOrPassword()), + isSubmitting: false, + )); + return; + } final result = await _usersRepository.createUser( - usernameString, - passwordString, - usernameString, + state.emailAddress.getOrCrash(), + state.password.getOrCrash(), + state.emailAddress.getOrCrash(), ); emit(state.copyWith( diff --git a/lib/presentation/pages/login_page/login_page_view.dart b/lib/presentation/pages/login_page/login_page_view.dart index eeba3f6..acee246 100644 --- a/lib/presentation/pages/login_page/login_page_view.dart +++ b/lib/presentation/pages/login_page/login_page_view.dart @@ -2,10 +2,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; +import '../../../domain/auth/auth_failure.dart'; import '../../../utils/extensions.dart'; import '../../core/widgets/authentication/app_logo.dart'; import '../../core/widgets/authentication/page_title.dart'; import '../../core/widgets/default_padding.dart'; +import 'widgets/auth_snackbar.dart'; import 'widgets/sign_in_form.dart'; class LoginPageView extends StatelessWidget { @@ -17,11 +19,39 @@ class LoginPageView extends StatelessWidget { resizeToAvoidBottomInset: false, body: Center( child: BlocConsumer( + listenWhen: (previous, current) { + if (previous.authResult.isRight() && current.authResult.isLeft()) { + return true; + } + return false; + }, listener: (context, state) { - // TODO: implement listener + var snackBarContent = ''; + + // I do not like this approach, but I don't know how to do it better. + // It seems kinda ugly but maybe + // TODO - find a better way to do this, replace raw strings with l10n + state.authResult.fold( + (failure) { + failure.map( + cancelledByUser: (_) => snackBarContent = + 'You have canceled the sign in process.', + serverError: (_) => snackBarContent = 'Server error.', + emailAlreadyInUse: (_) => + snackBarContent = 'Email already in use.', + invalidEmailOrPassword: (_) => + snackBarContent = 'Invalid email or password.', + ); + + ScaffoldMessenger.of(context).showSnackBar( + authSnackBar(content: snackBarContent), + ); + }, + (r) => null, + ); }, builder: (context, state) { - if(state.isSubmitting) { + if (state.isSubmitting) { return const Center(child: CircularProgressIndicator()); } return Column( diff --git a/lib/presentation/pages/login_page/widgets/auth_snackbar.dart b/lib/presentation/pages/login_page/widgets/auth_snackbar.dart new file mode 100644 index 0000000..8421e20 --- /dev/null +++ b/lib/presentation/pages/login_page/widgets/auth_snackbar.dart @@ -0,0 +1,6 @@ +import 'package:flutter/material.dart'; + +SnackBar authSnackBar({required String content}) => SnackBar( + content: Text(content), + duration: const Duration(seconds: 3), + ); diff --git a/lib/presentation/pages/splash_page/splash_page_view.dart b/lib/presentation/pages/splash_page/splash_page_view.dart index d148ed4..b7b0ff3 100644 --- a/lib/presentation/pages/splash_page/splash_page_view.dart +++ b/lib/presentation/pages/splash_page/splash_page_view.dart @@ -27,7 +27,6 @@ class SplashPageView extends StatelessWidget { } else { context.router.replace(const LoginRoute()); } - }, child: SafeArea( child: Scaffold( diff --git a/packages/users_repository/lib/src/domain/core/typedefs.dart b/packages/users_repository/lib/src/domain/core/typedefs.dart index e241970..f53404b 100644 --- a/packages/users_repository/lib/src/domain/core/typedefs.dart +++ b/packages/users_repository/lib/src/domain/core/typedefs.dart @@ -3,4 +3,4 @@ import 'package:fpdart/fpdart.dart'; import '../../gen/proto/v1/users.pb.dart'; import '../users/call_failure.dart'; -typedef CallResult = Either; +// typedef CallResult = Either; diff --git a/packages/users_repository/lib/src/domain/users/users_repository_i.dart b/packages/users_repository/lib/src/domain/users/users_repository_i.dart index 9d4aa84..be2669a 100644 --- a/packages/users_repository/lib/src/domain/users/users_repository_i.dart +++ b/packages/users_repository/lib/src/domain/users/users_repository_i.dart @@ -1,19 +1,24 @@ +import 'package:fpdart/fpdart.dart'; import 'package:grpc/grpc.dart'; +import '../../../users_repository.dart'; import '../core/typedefs.dart'; +import 'call_failure.dart'; abstract class UsersRepositoryI { - Future getUser(String username); + Future> getUser(String username); - Future updateUser(String username); + Future> updateUser(String username); - Future createUser(String username, String password, String email); + Future> createUser( + String username, String password, String email); - Future deleteUser(String username); + Future> deleteUser(String username); - Future loginUser(String email, String password); + Future> loginUser( + String email, String password); - Future logoutUser(String id); + Future> logoutUser(String id); late ClientChannel channel; } diff --git a/packages/users_repository/lib/src/infrastructure/users_repository.dart b/packages/users_repository/lib/src/infrastructure/users_repository.dart index 67cfa0f..6c6dbf4 100644 --- a/packages/users_repository/lib/src/infrastructure/users_repository.dart +++ b/packages/users_repository/lib/src/infrastructure/users_repository.dart @@ -9,7 +9,7 @@ import '../gen/proto/v1/users.pbgrpc.dart'; class UsersRepository implements UsersRepositoryI { @override - Future getUser(String username) async { + Future> getUser(String username) async { final client = UsersClient(channel); try { @@ -29,19 +29,23 @@ class UsersRepository implements UsersRepositoryI { } @override - Future updateUser(String username) { + Future> updateUser(String username) { // TODO: implement updateUser throw UnimplementedError(); } @override - Future createUser( + Future> createUser( String username, String password, String email) async { final client = UsersClient(channel); try { - final response = await client.getUser( - GetUserRequest()..username = username, + final response = await client.createUser( + CreateUserRequest( + username: username, + password: password, + email: email, + ), ); await channel.shutdown(); @@ -56,19 +60,19 @@ class UsersRepository implements UsersRepositoryI { } @override - Future deleteUser(String username) { + Future> deleteUser(String username) { // TODO: implement deleteUser throw UnimplementedError(); } @override - Future loginUser(String email, String password) { + Future> loginUser(String email, String password) { // TODO: implement loginUser throw UnimplementedError(); } @override - Future logoutUser(String id) { + Future> logoutUser(String id) { // TODO: implement logoutUser throw UnimplementedError(); } diff --git a/packages/users_repository/pubspec.lock b/packages/users_repository/pubspec.lock index 36f7736..8378c9b 100644 --- a/packages/users_repository/pubspec.lock +++ b/packages/users_repository/pubspec.lock @@ -375,10 +375,10 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.2.0" meta: dependency: transitive description: @@ -484,10 +484,10 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.9.1" stack_trace: dependency: transitive description: @@ -532,10 +532,10 @@ packages: dependency: transitive description: name: test_api - sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb url: "https://pub.dev" source: hosted - version: "0.5.2" + version: "0.5.1" timing: dependency: transitive description: @@ -585,4 +585,4 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=3.1.0-112.0.dev <4.0.0" + dart: ">=3.0.1 <4.0.0" diff --git a/packages/users_repository/pubspec.yaml b/packages/users_repository/pubspec.yaml index 7fc1eed..8e7f508 100644 --- a/packages/users_repository/pubspec.yaml +++ b/packages/users_repository/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: 'none' version: 1.0.0+1 environment: - sdk: '>=3.1.0-112.0.dev <4.0.0' + sdk: '>=3.0.1 <4.0.0' dependencies: flutter: diff --git a/pubspec.lock b/pubspec.lock index 1407dab..132c1b9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -400,6 +400,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" + hive: + dependency: "direct main" + description: + name: hive + sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941" + url: "https://pub.dev" + source: hosted + version: "2.2.3" http: dependency: transitive description: @@ -444,10 +452,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 url: "https://pub.dev" source: hosted - version: "0.18.1" + version: "0.18.0" io: dependency: transitive description: @@ -500,10 +508,10 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.2.0" meta: dependency: transitive description: @@ -689,10 +697,10 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.9.1" stack_trace: dependency: transitive description: @@ -737,26 +745,26 @@ packages: dependency: transitive description: name: test - sha256: "4f92f103ef63b1bbac6f4bd1930624fca81b2574464482512c4f0896319be575" + sha256: "3dac9aecf2c3991d09b9cdde4f98ded7b30804a88a0d7e4e7e1678e78d6b97f4" url: "https://pub.dev" source: hosted - version: "1.24.2" + version: "1.24.1" test_api: dependency: transitive description: name: test_api - sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb url: "https://pub.dev" source: hosted - version: "0.5.2" + version: "0.5.1" test_core: dependency: transitive description: name: test_core - sha256: "3642b184882f79e76ca57a9230fb971e494c3c1fd09c21ae3083ce891bcc0aa1" + sha256: "5138dbffb77b2289ecb12b81c11ba46036590b72a64a7a90d6ffb880f1a29e93" url: "https://pub.dev" source: hosted - version: "0.5.2" + version: "0.5.1" time: dependency: transitive description: @@ -845,5 +853,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0-112.0.dev <4.0.0" + dart: ">=3.0.1 <4.0.0" flutter: ">=3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 5364133..4496d26 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: "none" version: 1.0.0+1 environment: - sdk: ">=3.1.0-112.0.dev" + sdk: ">=3.0.1" dependencies: flutter: @@ -26,6 +26,7 @@ dependencies: change_app_package_name: ^1.1.0 oauth2: ^2.0.1 dropdown_button2: ^2.0.0 + hive: ^2.2.3 dev_dependencies: analyzer: ^5.7.1 From 838cb4b80e5c3111167244869c0cb4b150bf34c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Fri, 19 May 2023 15:10:50 +0200 Subject: [PATCH 07/19] fix bug with channel.shutdown() blocking application --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 7 +-- lib/domain/auth/auth_failure.dart | 11 ++++ lib/domain/core/extensions.dart | 7 +++ .../pages/login_page/login_page_view.dart | 30 ++++------ .../src/domain/users/users_repository_i.dart | 3 +- .../src/infrastructure/users_repository.dart | 55 ++++++++++++++----- 6 files changed, 72 insertions(+), 41 deletions(-) create mode 100644 lib/domain/core/extensions.dart diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index fae2a93..28c9d0d 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -32,10 +32,10 @@ class SignInFormBloc extends Bloc { isSubmitting: true, )); - final isUsernameValid = state.emailAddress.isValid(); + final isEmailValid = state.emailAddress.isValid(); final isPasswordValid = state.password.isValid(); - if (!isUsernameValid || !isPasswordValid) { + if (!isEmailValid || !isPasswordValid) { emit(state.copyWith( authResult: left(const AuthFailure.invalidEmailOrPassword()), isSubmitting: false, @@ -43,10 +43,9 @@ class SignInFormBloc extends Bloc { return; } - final result = await _usersRepository.createUser( + final result = await _usersRepository.loginUser( state.emailAddress.getOrCrash(), state.password.getOrCrash(), - state.emailAddress.getOrCrash(), ); emit(state.copyWith( diff --git a/lib/domain/auth/auth_failure.dart b/lib/domain/auth/auth_failure.dart index 93efc96..b686228 100644 --- a/lib/domain/auth/auth_failure.dart +++ b/lib/domain/auth/auth_failure.dart @@ -9,3 +9,14 @@ class AuthFailure with _$AuthFailure { const factory AuthFailure.emailAlreadyInUse() = EmailAlreadyInUse; const factory AuthFailure.invalidEmailOrPassword() = InvalidEmailOrPassword; } + +extension AuthFailureX on AuthFailure { + String get message { + return when( + cancelledByUser: () => 'Cancelled', + serverError: () => 'Server error', + emailAlreadyInUse: () => 'Email already in use', + invalidEmailOrPassword: () => 'Invalid email or password', + ); + } +} diff --git a/lib/domain/core/extensions.dart b/lib/domain/core/extensions.dart new file mode 100644 index 0000000..73a9654 --- /dev/null +++ b/lib/domain/core/extensions.dart @@ -0,0 +1,7 @@ +import 'package:fpdart/fpdart.dart'; + +extension ForceLeft on Either { + L forceLeft() { + return fold((l) => l, (r) => throw AssertionError()); + } +} diff --git a/lib/presentation/pages/login_page/login_page_view.dart b/lib/presentation/pages/login_page/login_page_view.dart index acee246..c0baa13 100644 --- a/lib/presentation/pages/login_page/login_page_view.dart +++ b/lib/presentation/pages/login_page/login_page_view.dart @@ -3,12 +3,14 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../domain/auth/auth_failure.dart'; +import '../../../domain/core/extensions.dart'; import '../../../utils/extensions.dart'; import '../../core/widgets/authentication/app_logo.dart'; import '../../core/widgets/authentication/page_title.dart'; import '../../core/widgets/default_padding.dart'; import 'widgets/auth_snackbar.dart'; import 'widgets/sign_in_form.dart'; +import '../../../domain/auth/auth_failure.dart'; class LoginPageView extends StatelessWidget { const LoginPageView({Key? key}) : super(key: key); @@ -26,28 +28,16 @@ class LoginPageView extends StatelessWidget { return false; }, listener: (context, state) { - var snackBarContent = ''; + if (state.authResult.isRight()) { + return; + } - // I do not like this approach, but I don't know how to do it better. - // It seems kinda ugly but maybe - // TODO - find a better way to do this, replace raw strings with l10n - state.authResult.fold( - (failure) { - failure.map( - cancelledByUser: (_) => snackBarContent = - 'You have canceled the sign in process.', - serverError: (_) => snackBarContent = 'Server error.', - emailAlreadyInUse: (_) => - snackBarContent = 'Email already in use.', - invalidEmailOrPassword: (_) => - snackBarContent = 'Invalid email or password.', - ); + final failure = state.authResult.forceLeft(); - ScaffoldMessenger.of(context).showSnackBar( - authSnackBar(content: snackBarContent), - ); - }, - (r) => null, + ScaffoldMessenger.of(context).showSnackBar( + authSnackBar( + content: failure.message, + ), ); }, builder: (context, state) { diff --git a/packages/users_repository/lib/src/domain/users/users_repository_i.dart b/packages/users_repository/lib/src/domain/users/users_repository_i.dart index be2669a..5031291 100644 --- a/packages/users_repository/lib/src/domain/users/users_repository_i.dart +++ b/packages/users_repository/lib/src/domain/users/users_repository_i.dart @@ -2,6 +2,7 @@ import 'package:fpdart/fpdart.dart'; import 'package:grpc/grpc.dart'; import '../../../users_repository.dart'; +import '../../gen/proto/v1/users.pbgrpc.dart'; import '../core/typedefs.dart'; import 'call_failure.dart'; @@ -19,6 +20,4 @@ abstract class UsersRepositoryI { String email, String password); Future> logoutUser(String id); - - late ClientChannel channel; } diff --git a/packages/users_repository/lib/src/infrastructure/users_repository.dart b/packages/users_repository/lib/src/infrastructure/users_repository.dart index 6c6dbf4..e85a9fc 100644 --- a/packages/users_repository/lib/src/infrastructure/users_repository.dart +++ b/packages/users_repository/lib/src/infrastructure/users_repository.dart @@ -8,8 +8,22 @@ import '../domain/users/users_repository_i.dart'; import '../gen/proto/v1/users.pbgrpc.dart'; class UsersRepository implements UsersRepositoryI { + // without it, I can't close the channel, I do not know why + ClientChannel _createChannel() { + return ClientChannel( + '192.168.0.100', + port: 50051, + options: ChannelOptions( + credentials: const ChannelCredentials.insecure(), + codecRegistry: + CodecRegistry(codecs: const [GzipCodec(), IdentityCodec()]), + ), + ); + } + @override Future> getUser(String username) async { + final channel = _createChannel(); final client = UsersClient(channel); try { @@ -37,10 +51,12 @@ class UsersRepository implements UsersRepositoryI { @override Future> createUser( String username, String password, String email) async { + final channel = _createChannel(); final client = UsersClient(channel); try { - final response = await client.createUser( + final response = await compute( + client.createUser, CreateUserRequest( username: username, password: password, @@ -66,9 +82,29 @@ class UsersRepository implements UsersRepositoryI { } @override - Future> loginUser(String email, String password) { - // TODO: implement loginUser - throw UnimplementedError(); + Future> loginUser( + String email, String password) async { + final channel = _createChannel(); + final client = UsersClient(channel); + + try { + final response = await compute( + client.loginUser, + LoginUserRequest( + username: email, + password: password, + ), + ); + + return right(response); + } on GrpcError catch (err) { + if (kDebugMode) { + debugPrint(err.toString()); + } + return left(const CallFailure.serverError()); + } finally { + await channel.shutdown(); + } } @override @@ -76,15 +112,4 @@ class UsersRepository implements UsersRepositoryI { // TODO: implement logoutUser throw UnimplementedError(); } - - @override - ClientChannel channel = ClientChannel( - '192.168.0.100', - port: 50051, - options: ChannelOptions( - credentials: const ChannelCredentials.insecure(), - codecRegistry: - CodecRegistry(codecs: const [GzipCodec(), IdentityCodec()]), - ), - ); } From 0584bb297af046e08b207386bb24b8e4652d6ceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Fri, 19 May 2023 21:54:01 +0200 Subject: [PATCH 08/19] improve snackbar feedback on sign in attempt --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 24 +++++++++-- .../sign_in_form_bloc/sign_in_form_event.dart | 3 +- .../sign_in_form_bloc/sign_in_form_state.dart | 4 +- lib/domain/core/extensions.dart | 6 +++ .../pages/login_page/login_page_view.dart | 28 ++++++++----- .../login_page/widgets/sign_in_form.dart | 14 +++---- .../src/infrastructure/users_repository.dart | 40 +++++++++++++++++-- 7 files changed, 90 insertions(+), 29 deletions(-) diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index 28c9d0d..311c237 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -6,6 +6,7 @@ import 'package:users_repository/users_repository.dart'; import '../../../domain/auth/auth_failure.dart'; import '../../../domain/auth/value_objects.dart'; +import '../../../domain/core/extensions.dart'; part 'sign_in_form_event.dart'; @@ -27,9 +28,10 @@ class SignInFormBloc extends Bloc { )); }); - on((event, emit) async { + on((event, emit) async { emit(state.copyWith( isSubmitting: true, + authResult: none(), )); final isEmailValid = state.emailAddress.isValid(); @@ -37,7 +39,7 @@ class SignInFormBloc extends Bloc { if (!isEmailValid || !isPasswordValid) { emit(state.copyWith( - authResult: left(const AuthFailure.invalidEmailOrPassword()), + authResult: some(left(const AuthFailure.invalidEmailOrPassword())), isSubmitting: false, )); return; @@ -54,12 +56,26 @@ class SignInFormBloc extends Bloc { if (result.isLeft()) { emit(state.copyWith( - authResult: left(const AuthFailure.serverError()), + authResult: some(left(const AuthFailure.serverError())), )); return; } + + final response = result.forceRight(); + + if (response.status != Status.SUCCESS) { + emit(state.copyWith( + authResult: some(left(const AuthFailure.invalidEmailOrPassword())), + )); + return; + } + + emit(state.copyWith( + authResult: none(), + )); + emit(state.copyWith( - authResult: right(unit), + authResult: some(right(unit)), )); }); } diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart index d69ac09..3381960 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart @@ -7,5 +7,6 @@ class SignInFormEvent with _$SignInFormEvent { const factory SignInFormEvent.passwordChanged(String password) = PasswordChanged; - const factory SignInFormEvent.signInWithEmailWithPasswordPressed() = SignInWithEmailWithPasswordPressed; + const factory SignInFormEvent.signInWithEmailAndPasswordPressed() = + SignInWithEmailAndPasswordPressed; } diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart index 1e7c082..0b78d34 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart @@ -7,7 +7,7 @@ class SignInFormState with _$SignInFormState { required Password password, required bool showErrorMessages, required bool isSubmitting, - required Either authResult, + required Option> authResult, }) = _SignInFormState; factory SignInFormState.initial() => SignInFormState( @@ -15,6 +15,6 @@ class SignInFormState with _$SignInFormState { password: Password(''), isSubmitting: false, showErrorMessages: false, - authResult: right(unit), + authResult: none(), ); } diff --git a/lib/domain/core/extensions.dart b/lib/domain/core/extensions.dart index 73a9654..cde52f4 100644 --- a/lib/domain/core/extensions.dart +++ b/lib/domain/core/extensions.dart @@ -5,3 +5,9 @@ extension ForceLeft on Either { return fold((l) => l, (r) => throw AssertionError()); } } + +extension ForceRight on Either { + R forceRight() { + return fold((l) => throw AssertionError(), (r) => r); + } +} diff --git a/lib/presentation/pages/login_page/login_page_view.dart b/lib/presentation/pages/login_page/login_page_view.dart index c0baa13..9bf27bb 100644 --- a/lib/presentation/pages/login_page/login_page_view.dart +++ b/lib/presentation/pages/login_page/login_page_view.dart @@ -1,3 +1,4 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -8,9 +9,9 @@ import '../../../utils/extensions.dart'; import '../../core/widgets/authentication/app_logo.dart'; import '../../core/widgets/authentication/page_title.dart'; import '../../core/widgets/default_padding.dart'; +import '../../router/router.dart'; import 'widgets/auth_snackbar.dart'; import 'widgets/sign_in_form.dart'; -import '../../../domain/auth/auth_failure.dart'; class LoginPageView extends StatelessWidget { const LoginPageView({Key? key}) : super(key: key); @@ -22,23 +23,28 @@ class LoginPageView extends StatelessWidget { body: Center( child: BlocConsumer( listenWhen: (previous, current) { - if (previous.authResult.isRight() && current.authResult.isLeft()) { + if (previous.authResult.isNone() && current.authResult.isSome()) { return true; } + return false; }, listener: (context, state) { - if (state.authResult.isRight()) { - return; - } + state.authResult.fold(() => null, (result) { + if (result.isRight()) { + context.router.popForced(); + context.router.push(const HomeRoute()); + return; + } - final failure = state.authResult.forceLeft(); + final failure = result.forceLeft(); - ScaffoldMessenger.of(context).showSnackBar( - authSnackBar( - content: failure.message, - ), - ); + ScaffoldMessenger.of(context).showSnackBar( + authSnackBar( + content: failure.message, + ), + ); + }); }, builder: (context, state) { if (state.isSubmitting) { diff --git a/lib/presentation/pages/login_page/widgets/sign_in_form.dart b/lib/presentation/pages/login_page/widgets/sign_in_form.dart index 5be6404..1ba373f 100644 --- a/lib/presentation/pages/login_page/widgets/sign_in_form.dart +++ b/lib/presentation/pages/login_page/widgets/sign_in_form.dart @@ -1,16 +1,15 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../utils/extensions.dart'; - import '../../../core/widgets/authentication/form/form_submit_buton.dart'; import '../../../core/widgets/authentication/form/switch_form_button.dart'; import '../../../core/widgets/authentication/form/text_fields/email_form_field.dart'; import '../../../core/widgets/authentication/form/text_fields/password_form_field.dart'; import '../../../core/widgets/default_padding.dart'; import '../../../router/router.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; class SignInForm extends StatelessWidget { const SignInForm({ @@ -34,11 +33,12 @@ class SignInForm extends StatelessWidget { ), DefaultPadding( child: FormSubmitButton( - buttonText: context.l10n.authSignIn, - onPressed: () => context.read().add( - const SignInFormEvent.signInWithEmailWithPasswordPressed(), - ), - ), + buttonText: context.l10n.authSignIn, + onPressed: () { + context.read().add( + const SignInFormEvent.signInWithEmailAndPasswordPressed(), + ); + }), ), const SizedBox( height: 30, diff --git a/packages/users_repository/lib/src/infrastructure/users_repository.dart b/packages/users_repository/lib/src/infrastructure/users_repository.dart index e85a9fc..b67891f 100644 --- a/packages/users_repository/lib/src/infrastructure/users_repository.dart +++ b/packages/users_repository/lib/src/infrastructure/users_repository.dart @@ -1,5 +1,8 @@ +import 'dart:io'; + import 'package:flutter/foundation.dart'; import 'package:fpdart/fpdart.dart'; +import 'package:flutter/services.dart'; import 'package:grpc/grpc.dart'; import '../domain/core/typedefs.dart'; @@ -7,16 +10,44 @@ import '../domain/users/call_failure.dart'; import '../domain/users/users_repository_i.dart'; import '../gen/proto/v1/users.pbgrpc.dart'; +class MyChannelCredentials extends ChannelCredentials { + MyChannelCredentials({ + Uint8List? trustedRoots, + this.certificateChain, + this.privateKey, + String? authority, + BadCertificateHandler? onBadCertificate, + }) : super.secure( + certificates: trustedRoots, + authority: authority, + onBadCertificate: onBadCertificate); + final Uint8List? certificateChain; + final Uint8List? privateKey; + + @override + SecurityContext get securityContext { + final ctx = super.securityContext; + if (certificateChain != null) { + ctx!.useCertificateChainBytes(certificateChain as List); + } + if (privateKey != null) { + ctx!.usePrivateKeyBytes(privateKey as List); + } + return ctx!; + } +} + class UsersRepository implements UsersRepositoryI { // without it, I can't close the channel, I do not know why ClientChannel _createChannel() { return ClientChannel( - '192.168.0.100', + '127.0.0.1', port: 50051, options: ChannelOptions( credentials: const ChannelCredentials.insecure(), - codecRegistry: - CodecRegistry(codecs: const [GzipCodec(), IdentityCodec()]), + codecRegistry: CodecRegistry( + codecs: const [GzipCodec(), IdentityCodec()], + ), ), ); } @@ -70,8 +101,9 @@ class UsersRepository implements UsersRepositoryI { if (kDebugMode) { debugPrint(err.toString()); } - await channel.shutdown(); return left(const CallFailure.serverError()); + } finally { + await channel.shutdown(); } } From 2cdb7fe17f75bcb71da6e3f016bcdb4869e4d7c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Fri, 19 May 2023 22:53:50 +0200 Subject: [PATCH 09/19] naive registration --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 56 +++++++++++++++++++ .../sign_in_form_bloc/sign_in_form_event.dart | 5 ++ .../sign_in_form_bloc/sign_in_form_state.dart | 2 + lib/domain/auth/value_objects.dart | 13 +++++ lib/domain/core/value_failure.dart | 6 +- lib/domain/core/value_validators.dart | 8 +++ .../form/text_fields/username_form_field.dart | 30 ++++++++++ .../pages/register_page/register_page.dart | 8 ++- .../register_page/register_page_view.dart | 55 ++++++++++++++---- .../register_page/widgets/sign_up_form.dart | 14 ++++- 10 files changed, 184 insertions(+), 13 deletions(-) create mode 100644 lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index 311c237..d902aaf 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -28,6 +28,12 @@ class SignInFormBloc extends Bloc { )); }); + on((event, emit) { + emit(state.copyWith( + username: Username(event.username), + )); + }); + on((event, emit) async { emit(state.copyWith( isSubmitting: true, @@ -78,6 +84,56 @@ class SignInFormBloc extends Bloc { authResult: some(right(unit)), )); }); + + on((event, emit) async { + emit(state.copyWith( + authResult: none(), + isSubmitting: true, + )); + + final isEmailValid = state.emailAddress.isValid(); + final isPasswordValid = state.password.isValid(); + final isUsernameValid = state.username.isValid(); + + // TODO FIX THIS + if (!isEmailValid || !isPasswordValid || !isUsernameValid) { + emit(state.copyWith( + authResult: some(left(const AuthFailure.invalidEmailOrPassword())), + isSubmitting: false, + )); + return; + } + + final result = await _usersRepository.createUser( + state.emailAddress.getOrCrash(), + state.password.getOrCrash(), + state.username.getOrCrash(), + ); + + emit(state.copyWith( + isSubmitting: false, + )); + + if (result.isLeft()) { + emit(state.copyWith( + authResult: some(left(const AuthFailure.serverError())), + )); + return; + } + + final response = result.forceRight(); + + if (response.status != Status.SUCCESS) { + emit(state.copyWith( + authResult: some(left(const AuthFailure.invalidEmailOrPassword())), + )); + return; + } + + emit(state.copyWith( + authResult: some(right(unit)), + )); + }); } final UsersRepositoryI _usersRepository; diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart index 3381960..3980e46 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_event.dart @@ -7,6 +7,11 @@ class SignInFormEvent with _$SignInFormEvent { const factory SignInFormEvent.passwordChanged(String password) = PasswordChanged; + const factory SignInFormEvent.usernameChanged(String username) = + UsernameChanged; + const factory SignInFormEvent.signInWithEmailAndPasswordPressed() = SignInWithEmailAndPasswordPressed; + + const factory SignInFormEvent.signUpPressed() = SignUpPressed; } diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart index 0b78d34..cbada89 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart @@ -5,6 +5,7 @@ class SignInFormState with _$SignInFormState { factory SignInFormState({ required EmailAddress emailAddress, required Password password, + required Username username, required bool showErrorMessages, required bool isSubmitting, required Option> authResult, @@ -13,6 +14,7 @@ class SignInFormState with _$SignInFormState { factory SignInFormState.initial() => SignInFormState( emailAddress: EmailAddress(''), password: Password(''), + username: Username(''), isSubmitting: false, showErrorMessages: false, authResult: none(), diff --git a/lib/domain/auth/value_objects.dart b/lib/domain/auth/value_objects.dart index a72aabf..936669c 100644 --- a/lib/domain/auth/value_objects.dart +++ b/lib/domain/auth/value_objects.dart @@ -28,3 +28,16 @@ class Password extends ValueObject { @override final Either, String> value; } + +class Username extends ValueObject { + factory Username(String input) { + return Username._( + validateUsername(input), + ); + } + + const Username._(this.value); + + @override + final Either, String> value; +} diff --git a/lib/domain/core/value_failure.dart b/lib/domain/core/value_failure.dart index a7ab733..83751af 100644 --- a/lib/domain/core/value_failure.dart +++ b/lib/domain/core/value_failure.dart @@ -13,5 +13,9 @@ class ValueFailure with _$ValueFailure { const factory ValueFailure.invalidPassword({ required T failedValue, - }) = ShortPassword; + }) = InvalidPassword; + + const factory ValueFailure.invalidUsername({ + required T failedValue, + }) = InvalidUsername; } diff --git a/lib/domain/core/value_validators.dart b/lib/domain/core/value_validators.dart index 0ad9aed..772e0a1 100644 --- a/lib/domain/core/value_validators.dart +++ b/lib/domain/core/value_validators.dart @@ -29,3 +29,11 @@ Either, String> validatePassword(String input) { return left(ValueFailure.invalidPassword(failedValue: input)); } } + +Either, String> validateUsername(String input) { + if (input.length >= 6) { + return right(input); + } else { + return left(ValueFailure.invalidUsername(failedValue: input)); + } +} diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart new file mode 100644 index 0000000..3e22cb4 --- /dev/null +++ b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; +import '../../../../../../utils/extensions.dart'; +import 'custom_text_form_field.dart'; + +class UsernameFormField extends StatelessWidget { + const UsernameFormField({super.key}); + + @override + Widget build(BuildContext context) { + return CustomTextFormField( + prefixIcon: const Icon(Icons.person), + hintText: 'Username', + keyboardType: TextInputType.name, + onChanged: (value) { + context.read().add(SignInFormEvent.usernameChanged(value)); + }, + validator: (_) => + context.read().state.username.value.fold( + (f) => f.maybeMap( + invalidUsername: (_) => 'Invalid username', + orElse: () => null, + ), + (_) => null, + ), + ); + } +} diff --git a/lib/presentation/pages/register_page/register_page.dart b/lib/presentation/pages/register_page/register_page.dart index 27fcc1c..dfd8d15 100644 --- a/lib/presentation/pages/register_page/register_page.dart +++ b/lib/presentation/pages/register_page/register_page.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:users_repository/users_repository.dart'; +import '../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import 'register_page_view.dart'; class RegisterPage extends StatelessWidget { @@ -7,6 +10,9 @@ class RegisterPage extends StatelessWidget { @override Widget build(BuildContext context) { - return const RegisterPageView(); + return BlocProvider( + create: (context) => SignInFormBloc(context.read()), + child: const RegisterPageView(), + ); } } diff --git a/lib/presentation/pages/register_page/register_page_view.dart b/lib/presentation/pages/register_page/register_page_view.dart index 823f866..0ef0b3c 100644 --- a/lib/presentation/pages/register_page/register_page_view.dart +++ b/lib/presentation/pages/register_page/register_page_view.dart @@ -1,9 +1,16 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; +import '../../../domain/auth/auth_failure.dart'; +import '../../../domain/core/extensions.dart'; import '../../../utils/extensions.dart'; import '../../core/widgets/authentication/app_logo.dart'; import '../../core/widgets/authentication/page_title.dart'; import '../../core/widgets/default_padding.dart'; +import '../../router/router.dart'; +import '../login_page/widgets/auth_snackbar.dart'; import 'widgets/sign_up_form.dart'; class RegisterPageView extends StatelessWidget { @@ -14,16 +21,44 @@ class RegisterPageView extends StatelessWidget { return Scaffold( resizeToAvoidBottomInset: false, body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const AppLogo(), - DefaultPadding( - child: PageTitle(title: context.l10n.authRegisterHeading), - ), - const SizedBox(height: 20), - const SignUpForm(), - ], + child: BlocConsumer( + listenWhen: (previous, current) { + if (previous.authResult.isNone() && current.authResult.isSome()) { + return true; + } + + return false; + }, + listener: (context, state) { + state.authResult.fold(() => null, (result) { + if (result.isRight()) { + context.router.popForced(); + context.router.push(const HomeRoute()); + return; + } + + final failure = result.forceLeft(); + + ScaffoldMessenger.of(context).showSnackBar( + authSnackBar( + content: failure.message, + ), + ); + }); + }, + builder: (context, state) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const AppLogo(), + DefaultPadding( + child: PageTitle(title: context.l10n.authRegisterHeading), + ), + const SizedBox(height: 20), + const SignUpForm(), + ], + ); + }, ), ), ); diff --git a/lib/presentation/pages/register_page/widgets/sign_up_form.dart b/lib/presentation/pages/register_page/widgets/sign_up_form.dart index 7f3fc6f..56502f8 100644 --- a/lib/presentation/pages/register_page/widgets/sign_up_form.dart +++ b/lib/presentation/pages/register_page/widgets/sign_up_form.dart @@ -1,11 +1,15 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../utils/extensions.dart'; import '../../../core/widgets/authentication/form/form_submit_buton.dart'; import '../../../core/widgets/authentication/form/switch_form_button.dart'; import '../../../core/widgets/authentication/form/text_fields/email_form_field.dart'; +import '../../../core/widgets/authentication/form/text_fields/password_form_field.dart'; +import '../../../core/widgets/authentication/form/text_fields/username_form_field.dart'; import '../../../core/widgets/default_padding.dart'; import '../../../router/router.dart'; @@ -19,15 +23,23 @@ class SignUpForm extends StatelessWidget { return Form( child: Column( children: [ + const DefaultPadding( + child: UsernameFormField(), + ), const DefaultPadding( child: EmailFormField(), ), + const DefaultPadding( + child: PasswordFormField(), + ), const SizedBox( height: 20, ), DefaultPadding( child: FormSubmitButton( - onPressed: () => context.router.push(const VerificationRoute()), + onPressed: () => context.read().add( + const SignUpPressed(), + ), buttonText: context.l10n.authSignUp, ), ), From e7fa2e3ac4114a3f91e242741e6da17c4e826f18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Fri, 19 May 2023 23:03:05 +0200 Subject: [PATCH 10/19] improve password validation --- lib/application/auth/user_bloc/user_bloc.dart | 4 ++-- lib/domain/core/value_validators.dart | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/application/auth/user_bloc/user_bloc.dart b/lib/application/auth/user_bloc/user_bloc.dart index de5c411..14b7bec 100644 --- a/lib/application/auth/user_bloc/user_bloc.dart +++ b/lib/application/auth/user_bloc/user_bloc.dart @@ -18,7 +18,7 @@ class UserBloc extends Bloc { )); // check token in cache? mock for now - final token = DateTime.now().second % 2 == 0 ? some('token') : none(); + final token = none(); if (token.isNone()) { emit(state.copyWith( isCheckingAuthStatus: some(false), @@ -44,7 +44,7 @@ class UserBloc extends Bloc { )); }); - on((event, emit){ + on((event, emit) { // TODO remove token from cache emit(state.copyWith( user: none(), diff --git a/lib/domain/core/value_validators.dart b/lib/domain/core/value_validators.dart index 772e0a1..9bcfbdc 100644 --- a/lib/domain/core/value_validators.dart +++ b/lib/domain/core/value_validators.dart @@ -20,10 +20,9 @@ Either, String> validateEmailAddress(String input) { } Either, String> validatePassword(String input) { - // TODO: implement password regex - // https://stackoverflow.com/questions/19605150/regex-for-password-must-contain-at-least-eight-characters-at-least-one-number-a + final regex = RegExp(r'^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)(?!.* ).{8,16}$'); - if (input.length >= 6) { + if (regex.hasMatch(input)) { return right(input); } else { return left(ValueFailure.invalidPassword(failedValue: input)); @@ -31,7 +30,7 @@ Either, String> validatePassword(String input) { } Either, String> validateUsername(String input) { - if (input.length >= 6) { + if (input.length >= 6 && input.length < 20) { return right(input); } else { return left(ValueFailure.invalidUsername(failedValue: input)); From 4403baab097566e2bc53792556151832bd4d85fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Sat, 20 May 2023 15:25:27 +0200 Subject: [PATCH 11/19] add l10n --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 5 +- .../sign_in_form_bloc/sign_in_form_state.dart | 14 ++-- lib/domain/auth/auth_failure.dart | 19 ++++-- lib/domain/core/value_objects.dart | 2 +- lib/domain/core/value_validators.dart | 3 +- lib/l10n/app_en.arb | 16 ++++- lib/l10n/app_pl.arb | 13 +++- .../text_fields/custom_text_form_field.dart | 66 ------------------- .../form/text_fields/date_field.dart | 10 +-- .../form/text_fields/email_form_field.dart | 12 ++-- .../form/text_fields/name_form_field.dart | 11 ++-- .../form/text_fields/password_form_field.dart | 13 ++-- .../form/text_fields/username_form_field.dart | 16 +++-- .../pages/login_page/login_page_view.dart | 2 +- .../register_page/register_page_view.dart | 2 +- 15 files changed, 92 insertions(+), 112 deletions(-) delete mode 100644 lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index d902aaf..dd25abf 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -95,10 +95,9 @@ class SignInFormBloc extends Bloc { final isPasswordValid = state.password.isValid(); final isUsernameValid = state.username.isValid(); - // TODO FIX THIS - if (!isEmailValid || !isPasswordValid || !isUsernameValid) { + if (!isUsernameValid || !isPasswordValid || !isEmailValid) { emit(state.copyWith( - authResult: some(left(const AuthFailure.invalidEmailOrPassword())), + authResult: some(left(const AuthFailure.invalidRegistrationInput())), isSubmitting: false, )); return; diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart index cbada89..525d0f5 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart @@ -12,11 +12,11 @@ class SignInFormState with _$SignInFormState { }) = _SignInFormState; factory SignInFormState.initial() => SignInFormState( - emailAddress: EmailAddress(''), - password: Password(''), - username: Username(''), - isSubmitting: false, - showErrorMessages: false, - authResult: none(), - ); + emailAddress: EmailAddress(''), + password: Password(''), + username: Username(''), + isSubmitting: false, + showErrorMessages: false, + authResult: none(), + ); } diff --git a/lib/domain/auth/auth_failure.dart b/lib/domain/auth/auth_failure.dart index b686228..03fcf8d 100644 --- a/lib/domain/auth/auth_failure.dart +++ b/lib/domain/auth/auth_failure.dart @@ -1,22 +1,31 @@ +import 'package:flutter/cupertino.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; +import '../../utils/extensions.dart'; + part 'auth_failure.freezed.dart'; @freezed class AuthFailure with _$AuthFailure { const factory AuthFailure.cancelledByUser() = CancelledByUser; + const factory AuthFailure.serverError() = ServerError; + const factory AuthFailure.emailAlreadyInUse() = EmailAlreadyInUse; + const factory AuthFailure.invalidEmailOrPassword() = InvalidEmailOrPassword; + + const factory AuthFailure.invalidRegistrationInput() = InvalidEmail; } extension AuthFailureX on AuthFailure { - String get message { + String message(BuildContext context) { return when( - cancelledByUser: () => 'Cancelled', - serverError: () => 'Server error', - emailAlreadyInUse: () => 'Email already in use', - invalidEmailOrPassword: () => 'Invalid email or password', + cancelledByUser: () => context.l10n.authCancelledByUser, + serverError: () => context.l10n.authServerError, + emailAlreadyInUse: () => context.l10n.authEmailAlreadyInUse, + invalidEmailOrPassword: () => context.l10n.authInvalidEmailOrPassword, + invalidRegistrationInput: () => context.l10n.authInvalidRegistrationInput, ); } } diff --git a/lib/domain/core/value_objects.dart b/lib/domain/core/value_objects.dart index 5eadf58..4b193e6 100644 --- a/lib/domain/core/value_objects.dart +++ b/lib/domain/core/value_objects.dart @@ -10,7 +10,7 @@ abstract class ValueObject { T getOrCrash() { return value.fold( - (l) => throw UnexpectedValueError(l), + (l) => throw UnexpectedValueError(l), id, ); } diff --git a/lib/domain/core/value_validators.dart b/lib/domain/core/value_validators.dart index 9bcfbdc..1937320 100644 --- a/lib/domain/core/value_validators.dart +++ b/lib/domain/core/value_validators.dart @@ -20,7 +20,8 @@ Either, String> validateEmailAddress(String input) { } Either, String> validatePassword(String input) { - final regex = RegExp(r'^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)(?!.* ).{8,16}$'); + final regex = + RegExp(r'^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)(?!.* ).{8,16}$'); if (regex.hasMatch(input)) { return right(input); diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index ea51202..3fefac3 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -39,6 +39,16 @@ "genderOther": "Other", "dateOfBirth": "Date of birth", "driverYes": "I'm a driver", - "driverNo": "I'm a passenger" - -} \ No newline at end of file + "driverNo": "I'm a passenger", + "authCancelledByUser": "Cancelled by user", + "authServerError": "Server error", + "authEmailAlreadyInUse": "Email already in use", + "authInvalidEmailOrPassword": "Invalid email or password", + "authInvalidRegistrationInput": "Please, enter correct input", + "formInvalidPassword": "Invalid password", + "formInvalidEmail": "Invalid email", + "formInvalidUsername": "Invalid username", + "formInvalidPasswordExplanation": "Password should contains 8-16 characters, one uppercase and lowercase letter and one special character", + "formInvalidEmailExplanation": "Please, enter correct email", + "formInvalidUsernameExplanation": "Username should contains 6-20 characters" +} diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index 612499d..f5b1883 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -34,5 +34,16 @@ "dateOfBirth": "Data urodzenia", "driver": "Jesteś kierowcą?", "driverYes": "Jestem kierowcą", - "driverNo": "Jestem pasażerem" + "driverNo": "Jestem pasażerem", + "authCancelledByUser": "Logowanie zostało anulowane przez użytkownika", + "authServerError": "Wystąpił błąd serwera", + "authEmailAlreadyInUse": "Ten email jest już używany przez innego użytkownika", + "authInvalidEmailOrPassword": "Niepoprawny email lub hasło", + "authInvalidRegistrationInput": "Proszę, wprowadź poprawne dane", + "formInvalidPassword": "Niepoprawne hasło", + "formInvalidEmail": "Niepoprawny email", + "formInvalidUsername": "Niepoprawna nazwa użytkownika", + "formInvalidPasswordExplanation": "Hasło powinno zawierać 8-16 liter, przynajmniej jedną małą i wielką literę, znak specjalny oraz cyfrę", + "formInvalidEmailExplanation": "Proszę, wprowadź poprawny adres email", + "formInvalidUsernameExplanation": "Nazwa użytkownika powinna zawierać 6-20 liter" } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart deleted file mode 100644 index 5ccda4e..0000000 --- a/lib/presentation/core/widgets/authentication/form/text_fields/custom_text_form_field.dart +++ /dev/null @@ -1,66 +0,0 @@ -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; - -import '../../../../constants/decorations.dart'; - -class CustomTextFormField extends StatelessWidget { - const CustomTextFormField({ - Key? key, - this.controller, - this.keyboardType, - required this.hintText, - this.prefixIcon, - this.suffixIcon, - this.obscureText = false, - this.onChanged, - this.onTap, - this.readOnly = false, - this.validator, - }) : super(key: key); - - final TextEditingController? controller; - final TextInputType? keyboardType; - final String hintText; - final Widget? prefixIcon; - final Widget? suffixIcon; - final bool obscureText; - final Function(String)? onChanged; - final Function()? onTap; - final bool readOnly; - final String? Function(String?)? validator; - - @override - Widget build(BuildContext context) { - return TextFormField( - controller: controller, - obscureText: obscureText, - decoration: getInputDecoration( - hintText: hintText, - prefixIcon: prefixIcon, - suffixIcon: suffixIcon, - ), - keyboardType: keyboardType, - onChanged: onChanged, - readOnly: readOnly, - onTap: onTap, - validator: validator, - autovalidateMode: AutovalidateMode.onUserInteraction, - ); - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(StringProperty('hintText', hintText)) - ..add(DiagnosticsProperty('keyboardType', keyboardType)) - ..add(DiagnosticsProperty('obscureText', obscureText)) - ..add(ObjectFlagProperty.has('onChanged', onChanged)) - ..add(DiagnosticsProperty('readOnly', readOnly)) - ..add( - DiagnosticsProperty('controller', controller)) - ..add(ObjectFlagProperty.has('onTap', onTap)) - ..add(ObjectFlagProperty.has( - 'validator', validator)); - } -} diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/date_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/date_field.dart index d6a353e..dc78a95 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/date_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/date_field.dart @@ -3,8 +3,8 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import '../../../../../../utils/extensions.dart'; +import '../../../../constants/decorations.dart'; import '../../../default_padding.dart'; -import 'custom_text_form_field.dart'; class DateField extends StatefulWidget { const DateField({ @@ -21,10 +21,12 @@ class _DateFieldState extends State { @override Widget build(BuildContext context) { return DefaultPadding( - child: CustomTextFormField( + child: TextFormField( + decoration: getInputDecoration( + prefixIcon: const Icon(Icons.calendar_today), + hintText: context.l10n.dateOfBirth, + ), controller: dateInput, - prefixIcon: const Icon(Icons.calendar_today), - hintText: context.l10n.dateOfBirth, readOnly: true, onTap: () async { final pickedDate = await showDatePicker( diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart index c568c2c..bfed6e5 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart @@ -3,16 +3,18 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../../../utils/extensions.dart'; -import 'custom_text_form_field.dart'; +import '../../../../constants/decorations.dart'; class EmailFormField extends StatelessWidget { const EmailFormField({super.key}); @override Widget build(BuildContext context) { - return CustomTextFormField( - prefixIcon: const Icon(Icons.email), - hintText: context.l10n.email, + return TextFormField( + decoration: getInputDecoration( + prefixIcon: const Icon(Icons.email), + hintText: context.l10n.email, + ), keyboardType: TextInputType.emailAddress, onChanged: (value) { context.read().add(SignInFormEvent.emailChanged(value)); @@ -20,7 +22,7 @@ class EmailFormField extends StatelessWidget { validator: (_) => context.read().state.emailAddress.value.fold( (f) => f.maybeMap( - invalidEmail: (_) => 'Invalid email', + invalidEmail: (_) => context.l10n.formInvalidEmail, orElse: () => null, ), (_) => null, diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/name_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/name_form_field.dart index 0fa3f1d..141873f 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/name_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/name_form_field.dart @@ -2,23 +2,26 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import '../../../../../../utils/extensions.dart'; +import '../../../../constants/decorations.dart'; import '../../../default_padding.dart'; -import 'custom_text_form_field.dart'; class NameFormField extends StatelessWidget { const NameFormField({ super.key, this.firstName = true, }); + final bool firstName; @override Widget build(BuildContext context) { return DefaultPadding( - child: CustomTextFormField( - hintText: firstName ? context.l10n.firstName : context.l10n.lastName, + child: TextFormField( + decoration: getInputDecoration( + hintText: firstName ? context.l10n.firstName : context.l10n.lastName, + prefixIcon: const Icon(Icons.person), + ), keyboardType: TextInputType.name, - prefixIcon: const Icon(Icons.person), ), ); } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart index 3e8a320..f6fb1a7 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart @@ -5,7 +5,6 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../../../utils/extensions.dart'; import '../../../../constants/decorations.dart'; -import 'custom_text_form_field.dart'; class PasswordFormField extends StatefulWidget { const PasswordFormField({ @@ -26,8 +25,6 @@ class PasswordFormField extends StatefulWidget { } class _PasswordFormFieldState extends State { - // bool _obscureText = true; - @override Widget build(BuildContext context) { return TextFormField( @@ -45,10 +42,18 @@ class _PasswordFormFieldState extends State { onChanged: (value) => context.read().add( SignInFormEvent.passwordChanged(value), ), + onEditingComplete: () => { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text( + 'Password should contains 8-16 characters, one uppercase and lowercase letter and one special character'), + ), + ), + }, validator: (_) => context.read().state.password.value.fold( (l) => l.maybeMap( - invalidPassword: (_) => 'Invalid password', + invalidPassword: (_) => 'Invalid Password', orElse: () => null, ), (_) => null, diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart index 3e22cb4..f67a991 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart @@ -3,24 +3,28 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../../../utils/extensions.dart'; -import 'custom_text_form_field.dart'; +import '../../../../constants/decorations.dart'; class UsernameFormField extends StatelessWidget { const UsernameFormField({super.key}); @override Widget build(BuildContext context) { - return CustomTextFormField( - prefixIcon: const Icon(Icons.person), - hintText: 'Username', + return TextFormField( + decoration: getInputDecoration( + prefixIcon: const Icon(Icons.person), + hintText: 'Username', + ), keyboardType: TextInputType.name, onChanged: (value) { - context.read().add(SignInFormEvent.usernameChanged(value)); + context + .read() + .add(SignInFormEvent.usernameChanged(value)); }, validator: (_) => context.read().state.username.value.fold( (f) => f.maybeMap( - invalidUsername: (_) => 'Invalid username', + invalidUsername: (_) => context.l10n.formInvalidUsername, orElse: () => null, ), (_) => null, diff --git a/lib/presentation/pages/login_page/login_page_view.dart b/lib/presentation/pages/login_page/login_page_view.dart index 9bf27bb..6bcdecc 100644 --- a/lib/presentation/pages/login_page/login_page_view.dart +++ b/lib/presentation/pages/login_page/login_page_view.dart @@ -41,7 +41,7 @@ class LoginPageView extends StatelessWidget { ScaffoldMessenger.of(context).showSnackBar( authSnackBar( - content: failure.message, + content: failure.message(context), ), ); }); diff --git a/lib/presentation/pages/register_page/register_page_view.dart b/lib/presentation/pages/register_page/register_page_view.dart index 0ef0b3c..38b5625 100644 --- a/lib/presentation/pages/register_page/register_page_view.dart +++ b/lib/presentation/pages/register_page/register_page_view.dart @@ -41,7 +41,7 @@ class RegisterPageView extends StatelessWidget { ScaffoldMessenger.of(context).showSnackBar( authSnackBar( - content: failure.message, + content: failure.message(context), ), ); }); From d32e5e60a27fa47bf55921c706c5a987e936dbb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Sun, 21 May 2023 00:09:30 +0200 Subject: [PATCH 12/19] cache boilerplate --- .metadata | 13 +- ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Podfile | 44 ++++ ios/Podfile.lock | 23 ++ ios/Runner.xcodeproj/project.pbxproj | 243 +++++++++++++++++- .../xcshareddata/xcschemes/Runner.xcscheme | 11 + .../contents.xcworkspacedata | 3 + .../Icon-App-1024x1024@1x.png | Bin 475123 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 1149 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 2852 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 5282 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1854 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 4991 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 9726 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 2852 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 8364 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 16446 -> 862 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 3985 -> 0 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 12060 -> 0 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 4893 -> 0 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 15052 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 16446 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 32383 -> 1674 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 6961 -> 0 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 22534 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 7746 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 24653 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 28725 -> 1418 bytes ios/Runner/Info.plist | 6 +- ios/RunnerTests/RunnerTests.swift | 12 + .../sign_in_form_bloc/sign_in_form_bloc.dart | 72 +++--- lib/domain/auth/auth_failure.dart | 2 +- lib/domain/auth/user.dart | 11 +- lib/domain/cache/auth_entry.dart | 14 + lib/domain/cache/cache_repository_i.dart | 9 + lib/domain/core/errors.dart | 4 +- lib/infrastructure/cache_repository.dart | 24 ++ lib/main.dart | 5 +- lib/presentation/core/my_app_widget.dart | 13 +- .../pages/home_page/home_page_view.dart | 21 +- .../pages/login_page/login_page.dart | 6 +- .../login_page/widgets/sign_in_form.dart | 4 +- .../pages/register_page/register_page.dart | 6 +- .../register_page/widgets/sign_up_form.dart | 1 - .../src/domain/users/users_repository_i.dart | 29 ++- .../src/infrastructure/users_repository.dart | 37 ++- pubspec.lock | 122 ++++++++- pubspec.yaml | 2 + test/widget_test.dart | 30 +++ 50 files changed, 673 insertions(+), 96 deletions(-) create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 lib/domain/cache/auth_entry.dart create mode 100644 lib/domain/cache/cache_repository_i.dart create mode 100644 lib/infrastructure/cache_repository.dart create mode 100644 test/widget_test.dart diff --git a/.metadata b/.metadata index ddd7794..3f9327e 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled. version: - revision: 135454af32477f815a7525073027a3ff9eff1bfd + revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 channel: stable project_type: app @@ -13,14 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: 135454af32477f815a7525073027a3ff9eff1bfd - base_revision: 135454af32477f815a7525073027a3ff9eff1bfd - - platform: android - create_revision: 135454af32477f815a7525073027a3ff9eff1bfd - base_revision: 135454af32477f815a7525073027a3ff9eff1bfd + create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 + base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 - platform: ios - create_revision: 135454af32477f815a7525073027a3ff9eff1bfd - base_revision: 135454af32477f815a7525073027a3ff9eff1bfd + create_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 + base_revision: d3d8effc686d73e0114d71abdcccef63fa1f25d2 # User provided section diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig index 592ceee..ec97fc6 100644 --- a/ios/Flutter/Debug.xcconfig +++ b/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig index 592ceee..c4855bf 100644 --- a/ios/Flutter/Release.xcconfig +++ b/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..fdcc671 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..0f52be8 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,23 @@ +PODS: + - Flutter (1.0.0) + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + +DEPENDENCIES: + - Flutter (from `Flutter`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + +SPEC CHECKSUMS: + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8 + +PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189 + +COCOAPODS: 1.11.3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index f58dea2..3384aa5 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,13 +8,26 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + 9A55328F2A619C2AE02F0992 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 133090672066DBC4EE44F094 /* Pods_Runner.framework */; }; + 9E53C56BF02ED27082FEE096 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BF7C9413C20A933F57CFF20 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ 9705A1C41CF9048500538489 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -29,9 +42,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 133090672066DBC4EE44F094 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 18BB303A170F07C1C8E84881 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 1BF7C9413C20A933F57CFF20 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 36882341CDCDA04C85CE83DF /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 44BBE519B7F14EC576D7B83B /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 4A552DC1066B1990B268B7AC /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -42,6 +63,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A217006FD70F89590E906B06 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + F8F760CD5358E82C1803F2E5 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +72,29 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 9A55328F2A619C2AE02F0992 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9DE218DEF1724912C2459389 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9E53C56BF02ED27082FEE096 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +112,9 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + A5F27AED4AA516DB2BDCE67C /* Pods */, + DF13037DC33160F5198CCA43 /* Frameworks */, ); sourceTree = ""; }; @@ -79,6 +122,7 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; @@ -98,19 +142,63 @@ path = Runner; sourceTree = ""; }; + A5F27AED4AA516DB2BDCE67C /* Pods */ = { + isa = PBXGroup; + children = ( + F8F760CD5358E82C1803F2E5 /* Pods-Runner.debug.xcconfig */, + A217006FD70F89590E906B06 /* Pods-Runner.release.xcconfig */, + 18BB303A170F07C1C8E84881 /* Pods-Runner.profile.xcconfig */, + 44BBE519B7F14EC576D7B83B /* Pods-RunnerTests.debug.xcconfig */, + 36882341CDCDA04C85CE83DF /* Pods-RunnerTests.release.xcconfig */, + 4A552DC1066B1990B268B7AC /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + DF13037DC33160F5198CCA43 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 133090672066DBC4EE44F094 /* Pods_Runner.framework */, + 1BF7C9413C20A933F57CFF20 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + AD2B6F8FF97B26D0B57C50A6 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 9DE218DEF1724912C2459389 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + A7B13D7FACDCB6BCE57DE976 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 3A89D934B810D1527AB33EC7 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -130,6 +218,10 @@ LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; @@ -150,11 +242,19 @@ projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -169,6 +269,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 3A89D934B810D1527AB33EC7 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -200,9 +317,61 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + A7B13D7FACDCB6BCE57DE976 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + AD2B6F8FF97B26D0B57C50A6 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -214,6 +383,14 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ 97C146FA1CF9000F007C117D /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -298,7 +475,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.road.runner.roadRunner; + PRODUCT_BUNDLE_IDENTIFIER = com.road.client; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -306,6 +483,56 @@ }; name = Profile; }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44BBE519B7F14EC576D7B83B /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.road.client.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 36882341CDCDA04C85CE83DF /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.road.client.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4A552DC1066B1990B268B7AC /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.road.client.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -427,7 +654,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.road.runner.roadRunner; + PRODUCT_BUNDLE_IDENTIFIER = com.road.client; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -450,7 +677,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.road.runner.roadRunner; + PRODUCT_BUNDLE_IDENTIFIER = com.road.client; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -461,6 +688,16 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a..e42adcb 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -37,6 +37,17 @@ + + + + + + diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 178f02aa0236c77491a2bcd5f61d7e7e28a0ef2c..dc9ada4725e9b0ddb1deab583e5b5102493aa332 100644 GIT binary patch literal 10932 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%0DT~A-nftQ~jSM`E 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

v{oY~VZc_leKFxQ3D>s&-9plW%n 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

WVOk(Rcxg4fmfG}NNfh!mb5wYBm! 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

J6`^Td%oPtmX2z;_R=5} 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�)x@U_A*Y^3(Fb9wf}M4m86+7lME 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 literal 1149 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=YKdz^NlIc#s#S7PDv)9@GB7gM zH2|RyLlY|_Gb9nO2EgL(4H1KcEH;xD6$lxv9k^iMa)s zdWl$w_8j?s|95Tvyqf#J_i_B_XZ{&~Fe%gU!t1rwmJJJ(SPbIU zFQ1<%{GaDYKPNYqRj*ff?C?2L{8C0mt9Xsx4*s^}ig)?V0xAv8tIPLYefH>d z%unTZ*AI{6Z{22{*w_DO91dUSzte61gB>~sAt6jY zOY5|JD~{FNlV*R+xoiUa1ok!2Wl?ce`5a^o|`J?2x6-leN@ z_K&`@SLgdpX^`*~WmD|EDOJSpUvX~#{l1rHb-(_;Z`s|UVxTfveBwtIiFsHmrI`LgXjg?k&pB@mMemyp-Y4_Q$ zx8qlDjSyd!cV17FZsUN4RJSc8BpZ4Ro>(7(S^V8qN7CYY#)RCy^ z?r=4~fB0nf^nL%%GBU9nS4J$mvMPatE#}>HO98_<;TMmTPiwn7_uRvI#B03ZpYM16cC&kXZTtQ|Zf`fYpA()JttiK_mdm^O@Q0Mu3KnIF7gnreIcAjc zny-7w&a7z*-eU*R)saRPh31b_-xyyH+&&H3A@E&bIdyB|37p8bm@Ta zEy?5=GP7fTl)5V&-}B(hUzX(&1xX2?v}0Mh?94Oxe_neeV)VHGf^l8J$GBGOZ8tw~ oxhc3bnV+Aux8CY$y|g{E!l|Wew(UJ549x8ep00i_>zopr021#02LJ#7 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index d9367806cfd4b212716b082f4e58f853caee70fa..797d452e458972bab9d994556c8305db4c827017 100644 GIT binary patch delta 390 zcmV;10eSwU7M25$8Gi!+006rnNM8T|0E$pdR7L;)|5U~J0au$Tw)XJ){%+3s=lA~6 z@BMVp`S<<*VaoaP`~U3u{%g(ou*=|m)B4`@{`33)?ezIj#Q6OF|6IuUF}e2O>+>eB z?J{?+FLkYu+4_Uk`r_>LHF~flZm0oBf#vr8%vJ>#p~!KNvqGG3)|f1T_)ydeh8$vDceZ>oNbH^|*hJ*t?Yc*1`WB&W>VYVEzu) zq#7;;VjO)t*nbgf(!`OXJBr45rP>>AQr$6c7slJWvbpNW@KTwna6d?PP>hvXCcp=4 zF;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f{CElY5)KL literal 2852 zcmZ{mWmFT68iz+p3&Caz!)VV zH3<=LG>D*p#PxsfIrp4qWdY0|B3rg0v6+e_Ql$Jc>S*sY?V)>k20!#txOU6E$pNt2S$e#I*?}V3xTel@WRRdnptjRja zO;F3J($W|8n!OHqpu`5N5x`o<4yQyhggG6Uiq}+T-++H%G8E*G(h9#)<{f)AT{psk zxx(x9Rylcr3nt+KA}GVQk|Jv^Qaq=7BEa&zs;3FtVT#U7sFX0d2DsOE0K`{3V%?=v z&*-5x#{rcK;`kmenR)69>)?}$b#>jVB2)acpz}**)QnRrY)i9ogQm*+Jg7(`&(t~8 zK0QTM_2Zj?jpuzR#l^6^kA4a~bcfL;CVcFCY(w5m@me?XqlX`iZFoNV#v)kD3cC6!-#EI2e^?-O(+N z2EJ_Yw)mhke5hteuG!sf5-t?VG3@m`3~DP)J4|L#5ua|+rQl7W2Y8OF%>wOBLUq;|kPa=_hS~6$P^NthSXk3;dn(oAX1?9Ra zLDm-`s&l=N6D@PLJat1XEi}u5MWn2`YWLl=R8~ ztSWrX_F#yFjFS4N1GT_c?YA8pGfE*Yt_F{wKINPWNbXgxU+_A}5>Yj%DYVQ`aAfRc zew7R%UX1HeC0=&_B3imPID-{xR;bBCibS7wkRD$Mw%dK={sY#CPZ;X|UMI<$EQ|-# zD`5Y`_B(SWeU#+6gyi99dZ9_*yJP` ze11D(EC-b5LBCrd6RT(dpHJzGD{!fM+})Wy_@Sga_or2LvxZ&LCEt0faU;Xa)U&+uWx$HAA?B62xJU58Ro!D42f>}f3qPUxu7pAcRHlJP`l!Y)wQDqD;MRg}!xp&oqR{zz|%f+8qX8a?p zOoy{fP=LitK)}Z%#=RD=Iuercwby016`X^h8KwQam7`QbN>tVo*fVCfWhs$P9wNF- z5IA9kPn}h`3kh{{0znHLU!5TwiQl&eVq!aLRQN+;*-I$1#F?ZGjN#&Dyc>q6Z+>4# zu{cyD^S^0xJEzYa?Q$YZ`STV~;0|H9W$KjYw~>oS(>1=(fu*RFOU@kncPcR#+2SbL z38LFmRpf;9{E2O!LB9qYjsqiw%fthgY;-+GpsG8Rd$`eN-*)%0O#<}(_)h#O?;ev| z*qMTKdX(?@!jfUI@%yL6>)@P`9$i6d>S{8>AR)o^3l-K|zI%Ss@7>r;?8aB3>GVuC zSSrW2>9tkam_+X`8p$*XmJNQU_&syfSu6qzAVr^;-(_lO#Dbovc6IH8#cW>N`+Wv+ zxj|g=%{F`HnlB|n-iJojb|Eo}5Tcj337(J$;+!9vt{ggiI(jGM{pr&qYtKsaJ_md> z3Zl4l$ihART3S3uA7*tetKWjAPl2~WVE^mX`5QcLNFf-m2NKq{rfLMTRP(44qT$m$44O)<{3;T6?dw9f{- zBUShrwDaeX%C{RNK)XHSWF6j~JBR~^>MIolj_6b_w*IchYQ2UY_HY+do1@D!X zxhza7#8Az6rQxSX`jnO*PX1A;((f0O1z26TSL1MMIsGa&fkej!8VuEX2K#QmRojhZ zte6A3tJ2dC_4+?Fl*e~JLdr5sAN8l`%6;AWra>mh{)=Zy_)2pC$d*H@%Nt>7KE9@x-FVX(nRj?l)jnG!HYuS@ za>*PGc04OSe;I3WIbOzTDF27kSaPe!c84BF6CWgbJ~p*`@EcUg8z-Wy@nL2Rh{GJz z?O=-t^n^LH&Sz|&E;<&7ab8at!A}PqU%(DHizQ^AP^$3?Kfc%&n?{xnzLkDKdZFAS zOQnpg4HB(2lp&q8OT6Q6nL6|K)U;WGW-l#p&NP`|6OH9*j+1SzXc~?J`?PI`NV*1b zvzE1CztiOQQ#B9wY+60a%un8ok~yh_zQM5@`-LBKZY~v;RK>&;!5v_0SpC=~H@9-+jU6w@AH1jHmp36-N;4e$ch rS`q1&a^IFNf3Z*J**^^I3L~%PtCve`cYE=-lmhg$j5TXC>>~dKqFqh& diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index f352b7c0651f229f7831dfe592a7a552e4768f92..6ed2d933e1120817fe9182483a228007b18ab6ae 100644 GIT binary patch delta 435 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 Q00000NkvXXt^-0~f+u2yz5oCK literal 1854 zcmZ{lc`zG@9>?8vg*fZhx~r)pESk28(1;^!9F28^q6pS~HAvZ1CF)p|Qb$u&k80|Q zDpgvGr*%~*A!4_Vq*3=e;#@m#=FPl$voqh{@AKDZzJGoR&IlMlSV5SJiwgj^wML#& z`R@}HIQ{MgLE@*-jI}|<2KdDWLj0oxPr(H?02^I0_&ctK#t^Ux1Z;58zyM-ku>JV$ z=Kl!c5dk5$lm1!2_wgZ41)cvk#D;_i#>D!CNB+NKWcHsDP*G?w7neW;+}hGLk$dGK zHq3KdrhkO8MoBq(*ZQgwUN#OdHF>4wI58UUIo)Fa+C2>DgIhn-02nm}W^U%?O^xT= z_k}(ITR1FRJar?z7|T~?{1x4Ji8eJy&FZt) zQ@dhPyGGWIhcC~m3ZL*oPsF{4MW2cNsr%I2{>RO$nbHbEkT}|HKr;wCPfAu%1wF@{ z*PWQn@Z3MPvjxaGY6@E!uX%k^dP9?1NBIxPB|u3p>Xz}uc4cPZe(N@Wk$@NwXghv2 zhd1jt`ju%b)WJx$cn;lJ=L~562(wpPH#J99tKA=dTfca-Z46{dG`;&mVKMBZ4_fqv z5>aIFT!G-Z5;*U}DzZ?MzL`B-af9>ScZ}UH+CG{Fq8=5YW~RNLPzlvxiNV#~p--{_ zj#_R#?VW=5DH3H6oQ7O>MkIlU&ftW~CPKM0wImB<+Z$l@ArNg_?_Ghiu((_fL z)2#@#S`3R>AYeq>>A_}qsP0wme(1K)V`pJB_Kc_q*f}SrWmR5!(P$d*Y=Y#{(#^3g z^$32iVzH#2_jZr&nwXlXm6FSGMkjj}%DwwKnm`~Q9?*gN+$9aLY9mv!E_3?&;2pm( z#*kDkr0(uz?~-By5U8oi(YiCHIz%FwMIbDv-GY%LbBB@hq$FSvgr-QF5f<_s96 z_$G)h$O*1}gJCoJ5-D%#_uTH4F(Z3_lPs*EeDBr}#s_Y8FEu&n$;0io<8)PWZ;I)- z>C~^T;&TxIP+!4uqtimOr|F9?lWsOBKziKJn*s47Qe>d>b5bXz8w@N}iGzr}+mo_$ z;48(&&!wl%y4wg1K5R!i7Ksd>C5Z6&-eJD(CrCxdQ18UEr{3A61^%n0+X$~UJWcOE zN$$A#d!vl7o^vIn!NrHNkH;H_5IOwgYkIrR8a7Nc?&M=CQi{h&H>I=(v!)q9=52Is z`fz>G%<|UP<~c|7QFK1%Cuq$}DgQ{;z5A2b4%z4V{(z1%9g3G~y~y9u>t>|HDJfQ0m29~rgDi4R2z05Hv*ol0K=FT)t}jkkMhuL)#_TGcKX-Llb|fcP=V4r`@2g{ zod=IhS)TI71#oZE5}%J2jFfF}71flwskY#>i*ivCVjj9!?=ZEc124u7%aB@~rGJ*h zkg@C<@}nT8VvEg_q4eEP_X8-GW<)gxDq}j1%XyV8)$m{1>;gTuT+$x=F7lvGWt^xI zKrD9#%j>28poQGuia#{1;7i%;%=%-%7JM{2ng|whsZxi|D#l;4HVH>nt+8m@#lvrl zK0Y(Dv+5|4Wvdv@w#@I;U79(ry}+(RQ1Z>>9^gr}(_Aw%3JJSkrgjw<V>(o#9MtQfe3kW6 zH3qD^u4?T<*wTIl8n(VAu{u~=1vBA0KCXuOkcT#-S*UU{I-<*PGfw>{tGJ+en1!=RfsphzJprM|jfbzUib5gJ$(WKF}H-a1q2S2Tnr?+xd81{KG(r+*&nXAAO+9)zMd zw1JiV1;nZW2Z7t*lCcfRMX7z+{2nANi}TbM^y7Fm)-CKkiicsoBEKV`zPQmeq3DFx kmz$eB=09|2;bxAx>x!4_`P52-PUngXZiBEUTluE{1&7RVSpWb4 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index 012185da18d808cbda8b691c94885a1d16e198a6..fe730945a01f64a61e2235dbe3f45b08f7729182 100644 GIT binary patch delta 447 zcmV;w0YLu$Ce8zp8Gi!+007oyx*7lg0G3cpR7L;)|5U~J0au$Tw)URh`@-w}Xw3Np zS)Ix4{k7)&ujKrh-TO(x_}20L&+q+}+xr1ilg8}*yXgGl_5RcF{f*iBEV%Z~-t4>5 ziGV;=={^- z?sLQGb)?A{hr$_!z8HbH7kH=vM0x-*R~t>;jsO4v^GQTOR7l6|(&r9>FcgO2dg?%> z;=sK?5%;?Pn^T7LL?Y$@5u?06NuIR*0?Yf$Hf5Afk+lM<^ch*jvO$sU*m9J?JI7eI zGFV6+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9R%3*Q+)t%S!MU_`id^@& zY{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&p6kME1_Z%?`+u)^el0!1<0sd p?Eyu!OMLDifi)An*I;?S-wj=m4RYIt!kPd8002ovPDHLkV1m;!^p*es literal 4991 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index 7b759192ab92245dc2c24f1221daab7b3da34158..321773cd857a8a0f0c9c7d3dc3f5ff4fb298dc10 100644 GIT binary patch delta 691 zcmV;k0!;n>OTYz?8Gi!+002f7DP8~o0Jl&~R7L;)|5U~JDYo_jSDX9(|M~s@SH}2N z#rS{J`h3&+@cRDr`1>4br2|=<_Wb|z`~RBV`-<24{r>;E==`tb{CU#(0alua*7{P! z_>|iF0Z@&o;`@Zw`ed2Hv*!Fwin#$(m7w4Ij@kM+yZ0`*_J0?7s{u=e0YGxN=lnXn z_j;$xb)?A|hr(Z#!1DV3H@o+7qQ_N_ycmMI0acg)Gg|cf|J(EaqTu_A!rvTerUFQQ z05n|zFjFP9FmM0>0mMl}K~z}7?bK^if#bc3@hBPX@I$58-z}(ZZE!t-aOGpjNkbau@>yEzH(5Yj4kZ ziMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_stABAHe$v|ToifVv60B@podBTcIqVcr1w`hG7HeY|fvLid#^Ok4NAXIXSt1 Zxpx7IC@PekH?;r&002ovPDHLkV1ib-YuNw* literal 9726 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index d9367806cfd4b212716b082f4e58f853caee70fa..797d452e458972bab9d994556c8305db4c827017 100644 GIT binary patch delta 390 zcmV;10eSwU7M25$8Gi!+006rnNM8T|0E$pdR7L;)|5U~J0au$Tw)XJ){%+3s=lA~6 z@BMVp`S<<*VaoaP`~U3u{%g(ou*=|m)B4`@{`33)?ezIj#Q6OF|6IuUF}e2O>+>eB z?J{?+FLkYu+4_Uk`r_>LHF~flZm0oBf#vr8%vJ>#p~!KNvqGG3)|f1T_)ydeh8$vDceZ>oNbH^|*hJ*t?Yc*1`WB&W>VYVEzu) zq#7;;VjO)t*nbgf(!`OXJBr45rP>>AQr$6c7slJWvbpNW@KTwna6d?PP>hvXCcp=4 zF;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f{CElY5)KL literal 2852 zcmZ{mWmFT68iz+p3&Caz!)VV zH3<=LG>D*p#PxsfIrp4qWdY0|B3rg0v6+e_Ql$Jc>S*sY?V)>k20!#txOU6E$pNt2S$e#I*?}V3xTel@WRRdnptjRja zO;F3J($W|8n!OHqpu`5N5x`o<4yQyhggG6Uiq}+T-++H%G8E*G(h9#)<{f)AT{psk zxx(x9Rylcr3nt+KA}GVQk|Jv^Qaq=7BEa&zs;3FtVT#U7sFX0d2DsOE0K`{3V%?=v z&*-5x#{rcK;`kmenR)69>)?}$b#>jVB2)acpz}**)QnRrY)i9ogQm*+Jg7(`&(t~8 zK0QTM_2Zj?jpuzR#l^6^kA4a~bcfL;CVcFCY(w5m@me?XqlX`iZFoNV#v)kD3cC6!-#EI2e^?-O(+N z2EJ_Yw)mhke5hteuG!sf5-t?VG3@m`3~DP)J4|L#5ua|+rQl7W2Y8OF%>wOBLUq;|kPa=_hS~6$P^NthSXk3;dn(oAX1?9Ra zLDm-`s&l=N6D@PLJat1XEi}u5MWn2`YWLl=R8~ ztSWrX_F#yFjFS4N1GT_c?YA8pGfE*Yt_F{wKINPWNbXgxU+_A}5>Yj%DYVQ`aAfRc zew7R%UX1HeC0=&_B3imPID-{xR;bBCibS7wkRD$Mw%dK={sY#CPZ;X|UMI<$EQ|-# zD`5Y`_B(SWeU#+6gyi99dZ9_*yJP` ze11D(EC-b5LBCrd6RT(dpHJzGD{!fM+})Wy_@Sga_or2LvxZ&LCEt0faU;Xa)U&+uWx$HAA?B62xJU58Ro!D42f>}f3qPUxu7pAcRHlJP`l!Y)wQDqD;MRg}!xp&oqR{zz|%f+8qX8a?p zOoy{fP=LitK)}Z%#=RD=Iuercwby016`X^h8KwQam7`QbN>tVo*fVCfWhs$P9wNF- z5IA9kPn}h`3kh{{0znHLU!5TwiQl&eVq!aLRQN+;*-I$1#F?ZGjN#&Dyc>q6Z+>4# zu{cyD^S^0xJEzYa?Q$YZ`STV~;0|H9W$KjYw~>oS(>1=(fu*RFOU@kncPcR#+2SbL z38LFmRpf;9{E2O!LB9qYjsqiw%fthgY;-+GpsG8Rd$`eN-*)%0O#<}(_)h#O?;ev| z*qMTKdX(?@!jfUI@%yL6>)@P`9$i6d>S{8>AR)o^3l-K|zI%Ss@7>r;?8aB3>GVuC zSSrW2>9tkam_+X`8p$*XmJNQU_&syfSu6qzAVr^;-(_lO#Dbovc6IH8#cW>N`+Wv+ zxj|g=%{F`HnlB|n-iJojb|Eo}5Tcj337(J$;+!9vt{ggiI(jGM{pr&qYtKsaJ_md> z3Zl4l$ihART3S3uA7*tetKWjAPl2~WVE^mX`5QcLNFf-m2NKq{rfLMTRP(44qT$m$44O)<{3;T6?dw9f{- zBUShrwDaeX%C{RNK)XHSWF6j~JBR~^>MIolj_6b_w*IchYQ2UY_HY+do1@D!X zxhza7#8Az6rQxSX`jnO*PX1A;((f0O1z26TSL1MMIsGa&fkej!8VuEX2K#QmRojhZ zte6A3tJ2dC_4+?Fl*e~JLdr5sAN8l`%6;AWra>mh{)=Zy_)2pC$d*H@%Nt>7KE9@x-FVX(nRj?l)jnG!HYuS@ za>*PGc04OSe;I3WIbOzTDF27kSaPe!c84BF6CWgbJ~p*`@EcUg8z-Wy@nL2Rh{GJz z?O=-t^n^LH&Sz|&E;<&7ab8at!A}PqU%(DHizQ^AP^$3?Kfc%&n?{xnzLkDKdZFAS zOQnpg4HB(2lp&q8OT6Q6nL6|K)U;WGW-l#p&NP`|6OH9*j+1SzXc~?J`?PI`NV*1b zvzE1CztiOQQ#B9wY+60a%un8ok~yh_zQM5@`-LBKZY~v;RK>&;!5v_0SpC=~H@9-+jU6w@AH1jHmp36-N;4e$ch rS`q1&a^IFNf3Z*J**^^I3L~%PtCve`cYE=-lmhg$j5TXC>>~dKqFqh& diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index 52233b4ff8fd65364ba092e4497e0187d4397c6d..502f463a9bc882b461c96aadf492d1729e49e725 100644 GIT binary patch delta 572 zcmV-C0>k~RLCOS>8Gi!+006nq0-pc?0H{z*R7L;)|5U~JDYo_jSDXF*|5nEMy6F5^ z$M}8I`uzU?*Yf=uXr;5|{0m;6_Wb|A>ik^D_|)+I$?g3CSDK^3+eX0mD!2CP`2NN0 z{dLg!a?km&%iyTt`yiax0acdp`~T(l{$a`ZF1YpsRg(cvjDG_-U$Er-fz#Bw>2W$eUI#iU z)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G!hkE!s;%oku3;IwG3U^2k zw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn_j%}l|2+O?a>_7qq7W zmx(qtA2nV^tZlLpy_#$U%ZNx5;$`0L&dZ!@e7rFXPGAOup%q`|03hpdtXsPP0000< KMNUMnLSTY)H#KSi literal 8364 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index 29d1c22539356ee25daaf699a600bd6d58c5a0a5..0ec303439225b78712f49115768196d8d76f6790 100644 GIT binary patch delta 851 zcmV-Z1FZbMfC1hHkQsji0000Ey2juD008GuOjJex|Nm6Q_yAX%DYo|f{{L9U`1}3; zNx}F2{{Ke6_f^IC`ThQK&-nmVnULA~Ov3jDTb=d${!qmDF1Yv6;OqcNk|wnDQjEI$ z{Qc7K{gvDLV#)aS{QmU%{w=}(Dz^320Z)wqMt%V?S?~D#06};FA3KcL`Wb+>5ObvgQIG&i zg8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU^ws0;(c$gI+2~q^tO#GD zHf@=;DncUw00Mt9Nkl<*#{d~Za)k&3P z0rwz$yX6`Twg&F-qc@e;1Pi$Lk|x_q(#zcEE*UqhaD{(ytt#xUaH*@Vy6UQ{uDUQy zU3Jw}S6y}0Rrk)i*38Tbx;M{lCEe`BX1~ArTYWtB{ACBMpj%7oY|VG4)>=8Y7teU# zl-$4lrM6&B8*5Yt67w0wetd@Bkhl{yx-g)E*<%L`eFsJ+|4t?BT zUiLjN$v%JfikDe8g3dDcir+AP-nh%V^xRl{W^Ug4Zudb&XkL;zx3#*CvW!bt`xn<- zyQ^K2OMA5}xn7=B=6DXvHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@nH#K002ovPDHLkV1h)g%31&b literal 16446 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 z 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

idPlWClM{~~jWbKApiQlDscLo_}&0CDp&fqcc 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png deleted file mode 100644 index f8c2951b5fa03fa5e60304d0cb5954d33403bfe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3985 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 eu~M(wXEpi-7)ukRt6HaQ4gW8_t$mUJ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png deleted file mode 100644 index 133f02dcf76c9e6eef593e6607eeecf8d125a49f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12060 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png deleted file mode 100644 index 45d37ad059fb664e7f2e68a3541dabb0cef07c6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4893 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 NN=zP5D`FV*KL9b5vuFSS diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index 29d1c22539356ee25daaf699a600bd6d58c5a0a5..0ec303439225b78712f49115768196d8d76f6790 100644 GIT binary patch delta 851 zcmV-Z1FZbMfC1hHkQsji0000Ey2juD008GuOjJex|Nm6Q_yAX%DYo|f{{L9U`1}3; zNx}F2{{Ke6_f^IC`ThQK&-nmVnULA~Ov3jDTb=d${!qmDF1Yv6;OqcNk|wnDQjEI$ z{Qc7K{gvDLV#)aS{QmU%{w=}(Dz^320Z)wqMt%V?S?~D#06};FA3KcL`Wb+>5ObvgQIG&i zg8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU^ws0;(c$gI+2~q^tO#GD zHf@=;DncUw00Mt9Nkl<*#{d~Za)k&3P z0rwz$yX6`Twg&F-qc@e;1Pi$Lk|x_q(#zcEE*UqhaD{(ytt#xUaH*@Vy6UQ{uDUQy zU3Jw}S6y}0Rrk)i*38Tbx;M{lCEe`BX1~ArTYWtB{ACBMpj%7oY|VG4)>=8Y7teU# zl-$4lrM6&B8*5Yt67w0wetd@Bkhl{yx-g)E*<%L`eFsJ+|4t?BT zUiLjN$v%JfikDe8g3dDcir+AP-nh%V^xRl{W^Ug4Zudb&XkL;zx3#*CvW!bt`xn<- zyQ^K2OMA5}xn7=B=6DXvHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@nH#K002ovPDHLkV1h)g%31&b literal 16446 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 z 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

idPlWClM{~~jWbKApiQlDscLo_}&0CDp&fqcc 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 0c537d8ae30539fd71dd750d584a4f9d60a98b7f..e9f5fea27c705180eb716271f41b582e76dcbd90 100644 GIT binary patch delta 1669 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 n06au!`8{l1t%x1ELA0868wJv7FblM diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png deleted file mode 100644 index b574e6ffc0153387cd416f553b65d939ada7f8b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22534 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 literal 7746 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 literal 24653 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 z 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 GEbM;=2ClFG diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index 0aacba74a0c3ab7b539ec365781bc8412d539ff1..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 100644 GIT binary patch delta 1411 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 $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Road Runner + Client CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -13,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - road_runner + client CFBundlePackageType APPL CFBundleShortVersionString @@ -31,6 +31,8 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index dd25abf..c19e913 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -5,7 +5,10 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:users_repository/users_repository.dart'; import '../../../domain/auth/auth_failure.dart'; +import '../../../domain/auth/user.dart'; import '../../../domain/auth/value_objects.dart'; +import '../../../domain/cache/auth_entry.dart'; +import '../../../domain/cache/cache_repository_i.dart'; import '../../../domain/core/extensions.dart'; part 'sign_in_form_event.dart'; @@ -15,7 +18,8 @@ part 'sign_in_form_state.dart'; part 'sign_in_form_bloc.freezed.dart'; class SignInFormBloc extends Bloc { - SignInFormBloc(this._usersRepository) : super(SignInFormState.initial()) { + SignInFormBloc(this._usersRepository, this._cacheRepository) + : super(SignInFormState.initial()) { on((event, emit) { emit(state.copyWith( emailAddress: EmailAddress(event.email), @@ -40,10 +44,10 @@ class SignInFormBloc extends Bloc { authResult: none(), )); - final isEmailValid = state.emailAddress.isValid(); + final isUsernameValid = state.username.isValid(); final isPasswordValid = state.password.isValid(); - if (!isEmailValid || !isPasswordValid) { + if (!isUsernameValid || !isPasswordValid) { emit(state.copyWith( authResult: some(left(const AuthFailure.invalidEmailOrPassword())), isSubmitting: false, @@ -51,38 +55,15 @@ class SignInFormBloc extends Bloc { return; } - final result = await _usersRepository.loginUser( - state.emailAddress.getOrCrash(), + final result = await _loginAndSaveUser( + state.username.getOrCrash(), state.password.getOrCrash(), ); emit(state.copyWith( + authResult: some(result), isSubmitting: false, )); - - if (result.isLeft()) { - emit(state.copyWith( - authResult: some(left(const AuthFailure.serverError())), - )); - return; - } - - final response = result.forceRight(); - - if (response.status != Status.SUCCESS) { - emit(state.copyWith( - authResult: some(left(const AuthFailure.invalidEmailOrPassword())), - )); - return; - } - - emit(state.copyWith( - authResult: none(), - )); - - emit(state.copyWith( - authResult: some(right(unit)), - )); }); on((event, emit) async { @@ -104,9 +85,9 @@ class SignInFormBloc extends Bloc { } final result = await _usersRepository.createUser( - state.emailAddress.getOrCrash(), - state.password.getOrCrash(), - state.username.getOrCrash(), + email: state.emailAddress.getOrCrash(), + password: state.password.getOrCrash(), + username: state.username.getOrCrash(), ); emit(state.copyWith( @@ -129,6 +110,8 @@ class SignInFormBloc extends Bloc { return; } + // login user + emit(state.copyWith( authResult: some(right(unit)), )); @@ -136,6 +119,31 @@ class SignInFormBloc extends Bloc { } final UsersRepositoryI _usersRepository; + final CacheRepositoryI _cacheRepository; + + Future> _loginAndSaveUser( + String username, String password) async { + final result = await _usersRepository.loginUser( + username: username, + password: password, + ); + + if (result.isLeft()) { + return left(const AuthFailure.serverError()); + } + + final response = result.forceRight(); + + if (response.status != Status.SUCCESS) { + return left(const AuthFailure.invalidEmailOrPassword()); + } + + final userEntry = AuthEntry.userDTO(user: User.fromDTO(response.userDTO)); + + await _cacheRepository.saveAuthData(userEntry); + + return right(unit); + } @override void onTransition(Transition transition) { diff --git a/lib/domain/auth/auth_failure.dart b/lib/domain/auth/auth_failure.dart index 03fcf8d..78802d6 100644 --- a/lib/domain/auth/auth_failure.dart +++ b/lib/domain/auth/auth_failure.dart @@ -6,7 +6,7 @@ import '../../utils/extensions.dart'; part 'auth_failure.freezed.dart'; @freezed -class AuthFailure with _$AuthFailure { +sealed class AuthFailure with _$AuthFailure { const factory AuthFailure.cancelledByUser() = CancelledByUser; const factory AuthFailure.serverError() = ServerError; diff --git a/lib/domain/auth/user.dart b/lib/domain/auth/user.dart index 2d33b59..f3448ee 100644 --- a/lib/domain/auth/user.dart +++ b/lib/domain/auth/user.dart @@ -1,12 +1,21 @@ import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:users_repository/users_repository.dart'; part 'user.freezed.dart'; @freezed -class User with _$User { +sealed class User with _$User { const factory User({ required String id, required String username, required String email, }) = _User; + + factory User.fromDTO(UserDTO dto) { + return User( + id: dto.id, + username: dto.username, + email: dto.email, + ); + } } diff --git a/lib/domain/cache/auth_entry.dart b/lib/domain/cache/auth_entry.dart new file mode 100644 index 0000000..967f752 --- /dev/null +++ b/lib/domain/cache/auth_entry.dart @@ -0,0 +1,14 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +import '../auth/user.dart'; + +part 'auth_entry.freezed.dart'; + +@freezed +sealed class AuthEntry with _$AuthEntry { + const factory AuthEntry.userDTO({ + required User user, + }) = UserDTO; + + const factory AuthEntry.token(String token) = Token; +} diff --git a/lib/domain/cache/cache_repository_i.dart b/lib/domain/cache/cache_repository_i.dart new file mode 100644 index 0000000..f2c83ed --- /dev/null +++ b/lib/domain/cache/cache_repository_i.dart @@ -0,0 +1,9 @@ +import 'auth_entry.dart'; + +abstract class CacheRepositoryI { + Future saveAuthData(AuthEntry authEntry); + + Future deleteAuthData(String key); + + Future init(); +} diff --git a/lib/domain/core/errors.dart b/lib/domain/core/errors.dart index b92a836..d362be0 100644 --- a/lib/domain/core/errors.dart +++ b/lib/domain/core/errors.dart @@ -2,10 +2,10 @@ import 'value_failure.dart'; class UnAuthenticatedError extends Error {} -class UnexpectedValueError extends Error { +class UnexpectedValueError extends Error { UnexpectedValueError(this.valueFailure); - final ValueFailure valueFailure; + final ValueFailure valueFailure; @override String toString() { diff --git a/lib/infrastructure/cache_repository.dart b/lib/infrastructure/cache_repository.dart new file mode 100644 index 0000000..e98d468 --- /dev/null +++ b/lib/infrastructure/cache_repository.dart @@ -0,0 +1,24 @@ +import 'package:hive_flutter/hive_flutter.dart'; + +import '../domain/cache/auth_entry.dart'; +import '../domain/cache/cache_repository_i.dart'; + +class CacheRepository implements CacheRepositoryI { + @override + Future deleteAuthData(String key) { + // TODO: implement deleteAuthData + throw UnimplementedError(); + } + + @override + Future saveAuthData(AuthEntry authEntry) { + // TODO: implement saveAuthData + throw UnimplementedError(); + } + + @override + Future init() async { + await Hive.initFlutter(); + await Hive.openBox('auth'); + } +} diff --git a/lib/main.dart b/lib/main.dart index b9f9d36..b484b81 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,10 @@ import 'package:flutter/cupertino.dart'; +import 'package:hive_flutter/hive_flutter.dart'; +import 'domain/cache/auth_entry.dart'; import 'presentation/core/my_app_widget.dart'; -void main() { +Future main() async { WidgetsFlutterBinding.ensureInitialized(); + runApp(MyAppWidget()); } diff --git a/lib/presentation/core/my_app_widget.dart b/lib/presentation/core/my_app_widget.dart index f575527..ade1643 100644 --- a/lib/presentation/core/my_app_widget.dart +++ b/lib/presentation/core/my_app_widget.dart @@ -6,6 +6,8 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:users_repository/users_repository.dart'; import '../../application/auth/user_bloc/user_bloc.dart'; +import '../../domain/cache/cache_repository_i.dart'; +import '../../infrastructure/cache_repository.dart'; import '../router/router.dart'; class MyAppWidget extends StatelessWidget { @@ -13,8 +15,15 @@ class MyAppWidget extends StatelessWidget { @override Widget build(BuildContext context) { - return RepositoryProvider( - create: (context) => UsersRepository(), + return MultiRepositoryProvider( + providers: [ + RepositoryProvider( + create: (context) => UsersRepository(), + ), + RepositoryProvider( + create: (context) => CacheRepository()..init(), + ), + ], child: BlocProvider( create: (context) => UserBloc() ..add( diff --git a/lib/presentation/pages/home_page/home_page_view.dart b/lib/presentation/pages/home_page/home_page_view.dart index 9105f4f..13218d8 100644 --- a/lib/presentation/pages/home_page/home_page_view.dart +++ b/lib/presentation/pages/home_page/home_page_view.dart @@ -1,7 +1,4 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:users_repository/users_repository.dart'; import '../../core/widgets/bottom_navbar/bottom_navbar.dart'; import 'widgets/ex_widgets.dart'; @@ -11,23 +8,11 @@ class HomePageView extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( + return const Scaffold( body: Stack( children: [ - const MapLocation(), - const BottomNavBar(), - Center( - child: ElevatedButton( - onPressed: () async { - final _result = - await context.read().getUser('antek'); - final result = _result.getOrElse((l) => GetUserResponse()); - if (kDebugMode) { - debugPrint(result.toString()); - } - }, - child: const Text('click me')), - ) + MapLocation(), + BottomNavBar(), ], ), ); diff --git a/lib/presentation/pages/login_page/login_page.dart b/lib/presentation/pages/login_page/login_page.dart index 5893948..82f803f 100644 --- a/lib/presentation/pages/login_page/login_page.dart +++ b/lib/presentation/pages/login_page/login_page.dart @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:users_repository/users_repository.dart'; import '../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; +import '../../../infrastructure/cache_repository.dart'; import 'login_page_view.dart'; class LoginPage extends StatelessWidget { @@ -11,7 +12,10 @@ class LoginPage extends StatelessWidget { @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => SignInFormBloc(context.read()), + create: (context) => SignInFormBloc( + context.read(), + context.read(), + ), child: const LoginPageView(), ); } diff --git a/lib/presentation/pages/login_page/widgets/sign_in_form.dart b/lib/presentation/pages/login_page/widgets/sign_in_form.dart index 1ba373f..b053d49 100644 --- a/lib/presentation/pages/login_page/widgets/sign_in_form.dart +++ b/lib/presentation/pages/login_page/widgets/sign_in_form.dart @@ -6,8 +6,8 @@ import '../../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; import '../../../../utils/extensions.dart'; import '../../../core/widgets/authentication/form/form_submit_buton.dart'; import '../../../core/widgets/authentication/form/switch_form_button.dart'; -import '../../../core/widgets/authentication/form/text_fields/email_form_field.dart'; import '../../../core/widgets/authentication/form/text_fields/password_form_field.dart'; +import '../../../core/widgets/authentication/form/text_fields/username_form_field.dart'; import '../../../core/widgets/default_padding.dart'; import '../../../router/router.dart'; @@ -21,7 +21,7 @@ class SignInForm extends StatelessWidget { return Form( child: Column(children: [ const DefaultPadding( - child: EmailFormField(), + child: UsernameFormField(), ), DefaultPadding( child: PasswordFormField( diff --git a/lib/presentation/pages/register_page/register_page.dart b/lib/presentation/pages/register_page/register_page.dart index dfd8d15..01641b3 100644 --- a/lib/presentation/pages/register_page/register_page.dart +++ b/lib/presentation/pages/register_page/register_page.dart @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:users_repository/users_repository.dart'; import '../../../application/auth/sign_in_form_bloc/sign_in_form_bloc.dart'; +import '../../../infrastructure/cache_repository.dart'; import 'register_page_view.dart'; class RegisterPage extends StatelessWidget { @@ -11,7 +12,10 @@ class RegisterPage extends StatelessWidget { @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => SignInFormBloc(context.read()), + create: (context) => SignInFormBloc( + context.read(), + context.read(), + ), child: const RegisterPageView(), ); } diff --git a/lib/presentation/pages/register_page/widgets/sign_up_form.dart b/lib/presentation/pages/register_page/widgets/sign_up_form.dart index 56502f8..97a1b18 100644 --- a/lib/presentation/pages/register_page/widgets/sign_up_form.dart +++ b/lib/presentation/pages/register_page/widgets/sign_up_form.dart @@ -1,4 +1,3 @@ -import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/packages/users_repository/lib/src/domain/users/users_repository_i.dart b/packages/users_repository/lib/src/domain/users/users_repository_i.dart index 5031291..3a1ae6c 100644 --- a/packages/users_repository/lib/src/domain/users/users_repository_i.dart +++ b/packages/users_repository/lib/src/domain/users/users_repository_i.dart @@ -7,17 +7,30 @@ import '../core/typedefs.dart'; import 'call_failure.dart'; abstract class UsersRepositoryI { - Future> getUser(String username); + Future> getUser({ + required String username, + }); - Future> updateUser(String username); + Future> updateUser({ + required String username, + }); - Future> createUser( - String username, String password, String email); + Future> createUser({ + required String username, + required String password, + required String email, + }); - Future> deleteUser(String username); + Future> deleteUser({ + required String username, + }); - Future> loginUser( - String email, String password); + Future> loginUser({ + required String username, + required String password, + }); - Future> logoutUser(String id); + Future> logoutUser({ + required String id, + }); } diff --git a/packages/users_repository/lib/src/infrastructure/users_repository.dart b/packages/users_repository/lib/src/infrastructure/users_repository.dart index b67891f..d66da9d 100644 --- a/packages/users_repository/lib/src/infrastructure/users_repository.dart +++ b/packages/users_repository/lib/src/infrastructure/users_repository.dart @@ -2,14 +2,13 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:fpdart/fpdart.dart'; -import 'package:flutter/services.dart'; import 'package:grpc/grpc.dart'; -import '../domain/core/typedefs.dart'; import '../domain/users/call_failure.dart'; import '../domain/users/users_repository_i.dart'; import '../gen/proto/v1/users.pbgrpc.dart'; +/* class MyChannelCredentials extends ChannelCredentials { MyChannelCredentials({ Uint8List? trustedRoots, @@ -37,8 +36,9 @@ class MyChannelCredentials extends ChannelCredentials { } } + */ + class UsersRepository implements UsersRepositoryI { - // without it, I can't close the channel, I do not know why ClientChannel _createChannel() { return ClientChannel( '127.0.0.1', @@ -53,7 +53,9 @@ class UsersRepository implements UsersRepositoryI { } @override - Future> getUser(String username) async { + Future> getUser({ + required String username, + }) async { final channel = _createChannel(); final client = UsersClient(channel); @@ -74,14 +76,19 @@ class UsersRepository implements UsersRepositoryI { } @override - Future> updateUser(String username) { + Future> updateUser({ + required String username, + }) { // TODO: implement updateUser throw UnimplementedError(); } @override - Future> createUser( - String username, String password, String email) async { + Future> createUser({ + required String username, + required String password, + required String email, + }) async { final channel = _createChannel(); final client = UsersClient(channel); @@ -108,14 +115,18 @@ class UsersRepository implements UsersRepositoryI { } @override - Future> deleteUser(String username) { + Future> deleteUser({ + required String username, + }) { // TODO: implement deleteUser throw UnimplementedError(); } @override - Future> loginUser( - String email, String password) async { + Future> loginUser({ + required String username, + required String password, + }) async { final channel = _createChannel(); final client = UsersClient(channel); @@ -123,7 +134,7 @@ class UsersRepository implements UsersRepositoryI { final response = await compute( client.loginUser, LoginUserRequest( - username: email, + username: username, password: password, ), ); @@ -140,7 +151,9 @@ class UsersRepository implements UsersRepositoryI { } @override - Future> logoutUser(String id) { + Future> logoutUser({ + required String id, + }) { // TODO: implement logoutUser throw UnimplementedError(); } diff --git a/pubspec.lock b/pubspec.lock index 132c1b9..319a4ab 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -265,6 +265,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + url: "https://pub.dev" + source: hosted + version: "2.0.2" file: dependency: transitive description: @@ -408,6 +416,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.3" + hive_flutter: + dependency: "direct main" + description: + name: hive_flutter + sha256: dca1da446b1d808a51689fb5d0c6c9510c0a2ba01e22805d492c73b68e33eecc + url: "https://pub.dev" + source: hosted + version: "1.1.0" + hive_generator: + dependency: "direct dev" + description: + name: hive_generator + sha256: "65998cc4d2cd9680a3d9709d893d2f6bb15e6c1f92626c3f1fa650b4b3281521" + url: "https://pub.dev" + source: hosted + version: "2.0.0" http: dependency: transitive description: @@ -576,6 +600,54 @@ packages: url: "https://pub.dev" source: hosted version: "1.8.3" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" + url: "https://pub.dev" + source: hosted + version: "2.0.15" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + url: "https://pub.dev" + source: hosted + version: "2.0.27" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3" + url: "https://pub.dev" + source: hosted + version: "2.2.3" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1" + url: "https://pub.dev" + source: hosted + version: "2.1.10" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + url: "https://pub.dev" + source: hosted + version: "2.0.6" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 + url: "https://pub.dev" + source: hosted + version: "2.1.6" petitparser: dependency: transitive description: @@ -584,6 +656,22 @@ packages: url: "https://pub.dev" source: hosted version: "5.4.0" + platform: + dependency: transitive + description: + name: platform + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + url: "https://pub.dev" + source: hosted + version: "2.1.4" pointycastle: dependency: transitive description: @@ -600,6 +688,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + process: + dependency: transitive + description: + name: process + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" + source: hosted + version: "4.2.4" protobuf: dependency: transitive description: @@ -677,6 +773,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.2" + source_helper: + dependency: transitive + description: + name: source_helper + sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f" + url: "https://pub.dev" + source: hosted + version: "1.3.3" source_map_stack_trace: dependency: transitive description: @@ -836,6 +940,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + win32: + dependency: transitive + description: + name: win32 + sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c" + url: "https://pub.dev" + source: hosted + version: "4.1.4" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + url: "https://pub.dev" + source: hosted + version: "1.0.0" xml: dependency: transitive description: @@ -854,4 +974,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.0.1 <4.0.0" - flutter: ">=3.0.0" + flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index 4496d26..8278c2e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -27,6 +27,7 @@ dependencies: oauth2: ^2.0.1 dropdown_button2: ^2.0.0 hive: ^2.2.3 + hive_flutter: ^1.1.0 dev_dependencies: analyzer: ^5.7.1 @@ -39,6 +40,7 @@ dev_dependencies: flutter_gen_runner: ^5.2.0 flutter_launcher_icons: ^0.12.0 freezed: ^2.3.2 + hive_generator: ^2.0.0 flutter: uses-material-design: true diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..1888d2a --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:client/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} From 4e5eb5c9434fad2589d3584e2572a4d8e1345607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Sun, 21 May 2023 15:52:57 +0200 Subject: [PATCH 13/19] add refresh and access token hive data models --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 13 ++++++---- lib/domain/cache/access_token.dart | 11 ++++++++ lib/domain/cache/auth_entry.dart | 14 ---------- lib/domain/cache/cache_repository_i.dart | 9 ++++--- lib/domain/cache/refresh_token.dart | 11 ++++++++ lib/infrastructure/cache_repository.dart | 26 +++++++++++++------ .../form/text_fields/email_form_field.dart | 1 + .../form/text_fields/username_form_field.dart | 1 + 8 files changed, 56 insertions(+), 30 deletions(-) create mode 100644 lib/domain/cache/access_token.dart delete mode 100644 lib/domain/cache/auth_entry.dart create mode 100644 lib/domain/cache/refresh_token.dart diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index c19e913..ede731d 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -5,10 +5,10 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:users_repository/users_repository.dart'; import '../../../domain/auth/auth_failure.dart'; -import '../../../domain/auth/user.dart'; import '../../../domain/auth/value_objects.dart'; -import '../../../domain/cache/auth_entry.dart'; +import '../../../domain/cache/access_token.dart'; import '../../../domain/cache/cache_repository_i.dart'; +import '../../../domain/cache/refresh_token.dart'; import '../../../domain/core/extensions.dart'; part 'sign_in_form_event.dart'; @@ -138,9 +138,12 @@ class SignInFormBloc extends Bloc { return left(const AuthFailure.invalidEmailOrPassword()); } - final userEntry = AuthEntry.userDTO(user: User.fromDTO(response.userDTO)); - - await _cacheRepository.saveAuthData(userEntry); + await _cacheRepository.saveAccessToken( + AccessToken(token: response.jwtToken), + ); + await _cacheRepository.saveRefreshToken( + RefreshToken(token: response.refreshToken), + ); return right(unit); } diff --git a/lib/domain/cache/access_token.dart b/lib/domain/cache/access_token.dart new file mode 100644 index 0000000..62fe3c1 --- /dev/null +++ b/lib/domain/cache/access_token.dart @@ -0,0 +1,11 @@ +import 'package:hive/hive.dart'; + +part 'access_token.g.dart'; + +@HiveType(typeId: 0) +class AccessToken { + AccessToken({required this.token}); + + @HiveField(0) + final String token; +} diff --git a/lib/domain/cache/auth_entry.dart b/lib/domain/cache/auth_entry.dart deleted file mode 100644 index 967f752..0000000 --- a/lib/domain/cache/auth_entry.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -import '../auth/user.dart'; - -part 'auth_entry.freezed.dart'; - -@freezed -sealed class AuthEntry with _$AuthEntry { - const factory AuthEntry.userDTO({ - required User user, - }) = UserDTO; - - const factory AuthEntry.token(String token) = Token; -} diff --git a/lib/domain/cache/cache_repository_i.dart b/lib/domain/cache/cache_repository_i.dart index f2c83ed..9579ed7 100644 --- a/lib/domain/cache/cache_repository_i.dart +++ b/lib/domain/cache/cache_repository_i.dart @@ -1,9 +1,12 @@ -import 'auth_entry.dart'; +import 'access_token.dart'; +import 'refresh_token.dart'; abstract class CacheRepositoryI { - Future saveAuthData(AuthEntry authEntry); + Future saveAccessToken(AccessToken token); - Future deleteAuthData(String key); + Future saveRefreshToken(RefreshToken token); + + Future deleteToken(String key); Future init(); } diff --git a/lib/domain/cache/refresh_token.dart b/lib/domain/cache/refresh_token.dart new file mode 100644 index 0000000..01d24fe --- /dev/null +++ b/lib/domain/cache/refresh_token.dart @@ -0,0 +1,11 @@ +import 'package:hive/hive.dart'; + +part 'refresh_token.g.dart'; + +@HiveType(typeId: 1) +class RefreshToken { + RefreshToken({required this.token}); + + @HiveField(0) + final String token; +} diff --git a/lib/infrastructure/cache_repository.dart b/lib/infrastructure/cache_repository.dart index e98d468..2f0ee8a 100644 --- a/lib/infrastructure/cache_repository.dart +++ b/lib/infrastructure/cache_repository.dart @@ -1,24 +1,34 @@ import 'package:hive_flutter/hive_flutter.dart'; -import '../domain/cache/auth_entry.dart'; +import '../domain/cache/access_token.dart'; import '../domain/cache/cache_repository_i.dart'; +import '../domain/cache/refresh_token.dart'; class CacheRepository implements CacheRepositoryI { @override - Future deleteAuthData(String key) { + Future deleteToken(String key) { // TODO: implement deleteAuthData throw UnimplementedError(); } @override - Future saveAuthData(AuthEntry authEntry) { - // TODO: implement saveAuthData - throw UnimplementedError(); + Future init() async { + await Hive.initFlutter(); + + Hive + ..registerAdapter(AccessTokenAdapter()) + ..registerAdapter(RefreshTokenAdapter()); } @override - Future init() async { - await Hive.initFlutter(); - await Hive.openBox('auth'); + Future saveAccessToken(AccessToken token) async { + final box = await Hive.openBox('access_tokens'); + await box.put('access_token', token); + } + + @override + Future saveRefreshToken(RefreshToken token) async { + final box = await Hive.openBox('refresh_tokens'); + await box.put('refresh_token', token); } } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart index bfed6e5..057158a 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart @@ -19,6 +19,7 @@ class EmailFormField extends StatelessWidget { onChanged: (value) { context.read().add(SignInFormEvent.emailChanged(value)); }, + autovalidateMode: AutovalidateMode.onUserInteraction, validator: (_) => context.read().state.emailAddress.value.fold( (f) => f.maybeMap( diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart index f67a991..7e92fb9 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart @@ -21,6 +21,7 @@ class UsernameFormField extends StatelessWidget { .read() .add(SignInFormEvent.usernameChanged(value)); }, + autovalidateMode: AutovalidateMode.onUserInteraction, validator: (_) => context.read().state.username.value.fold( (f) => f.maybeMap( From 81a28cb24dbd2326cb35bb3b7ed233d57031ebdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Zaj=C4=85c?= Date: Sun, 21 May 2023 16:51:59 +0200 Subject: [PATCH 14/19] save and retrieve auth info from cache with hive --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 10 +-- lib/application/auth/user_bloc/user_bloc.dart | 33 +++++--- lib/domain/auth/user.dart | 34 +++++--- lib/domain/cache/cache_repository_i.dart | 19 ++++- lib/domain/core/extensions.dart | 6 ++ lib/infrastructure/cache_repository.dart | 83 +++++++++++++++++-- lib/main.dart | 2 +- lib/presentation/core/my_app_widget.dart | 9 +- .../pages/profile_page/widgets/greeting.dart | 39 ++++----- .../pages/profile_page/widgets/header.dart | 44 ++++++++++ test/widget_test.dart | 30 ------- 11 files changed, 215 insertions(+), 94 deletions(-) create mode 100644 lib/presentation/pages/profile_page/widgets/header.dart delete mode 100644 test/widget_test.dart diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index ede731d..5f427a3 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -138,13 +138,13 @@ class SignInFormBloc extends Bloc { return left(const AuthFailure.invalidEmailOrPassword()); } - await _cacheRepository.saveAccessToken( - AccessToken(token: response.jwtToken), - ); - await _cacheRepository.saveRefreshToken( - RefreshToken(token: response.refreshToken), + await _cacheRepository.saveTokens( + accessToken: AccessToken(token: response.jwtToken), + refreshToken: RefreshToken(token: response.refreshToken), ); + await _cacheRepository.saveUserFromDTO(response.userDTO); + return right(unit); } diff --git a/lib/application/auth/user_bloc/user_bloc.dart b/lib/application/auth/user_bloc/user_bloc.dart index 14b7bec..6a41a86 100644 --- a/lib/application/auth/user_bloc/user_bloc.dart +++ b/lib/application/auth/user_bloc/user_bloc.dart @@ -3,6 +3,8 @@ import 'package:fpdart/fpdart.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import '../../../domain/auth/user.dart'; +import '../../../infrastructure/cache_repository.dart'; +import '../../../domain/core/extensions.dart'; part 'user_event.dart'; @@ -11,30 +13,37 @@ part 'user_state.dart'; part 'user_bloc.freezed.dart'; class UserBloc extends Bloc { - UserBloc() : super(UserState.initial()) { - on((event, emit) { + UserBloc(this._cacheRepository) : super(UserState.initial()) { + on((event, emit) async { emit(state.copyWith( isCheckingAuthStatus: some(true), )); // check token in cache? mock for now - final token = none(); - if (token.isNone()) { + final accessToken = await _cacheRepository.retrieveAccessToken(); + + if (accessToken.isNone()) { + emit(state.copyWith( + isCheckingAuthStatus: some(false), + )); + return; + } + + final user = await _cacheRepository.retrieveUser(); + + if (user.isNone()) { emit(state.copyWith( isCheckingAuthStatus: some(false), + user: none(), )); return; } - // fetch user - const user = User( - id: 'id', - username: 'username', - email: 'email', - ); + final _user = user.forceSome(); + emit(state.copyWith( - user: some(user), isCheckingAuthStatus: some(false), + user: some(_user), )); }); @@ -51,4 +60,6 @@ class UserBloc extends Bloc { )); }); } + + final CacheRepository _cacheRepository; } diff --git a/lib/domain/auth/user.dart b/lib/domain/auth/user.dart index f3448ee..e435b12 100644 --- a/lib/domain/auth/user.dart +++ b/lib/domain/auth/user.dart @@ -1,21 +1,31 @@ import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:hive/hive.dart'; import 'package:users_repository/users_repository.dart'; -part 'user.freezed.dart'; +part 'user.g.dart'; -@freezed -sealed class User with _$User { - const factory User({ - required String id, - required String username, - required String email, - }) = _User; +@HiveType(typeId: 3) +class User { + User({ + required this.id, + required this.username, + required this.email, + }); - factory User.fromDTO(UserDTO dto) { + factory User.fromDTO(UserDTO userDTO) { return User( - id: dto.id, - username: dto.username, - email: dto.email, + id: userDTO.id, + username: userDTO.username, + email: userDTO.email, ); } + + @HiveField(0) + final String id; + + @HiveField(1) + final String username; + + @HiveField(2) + final String email; } diff --git a/lib/domain/cache/cache_repository_i.dart b/lib/domain/cache/cache_repository_i.dart index 9579ed7..1250ad9 100644 --- a/lib/domain/cache/cache_repository_i.dart +++ b/lib/domain/cache/cache_repository_i.dart @@ -1,3 +1,7 @@ +import 'package:fpdart/fpdart.dart'; +import 'package:users_repository/users_repository.dart'; + +import '../auth/user.dart'; import 'access_token.dart'; import 'refresh_token.dart'; @@ -6,7 +10,20 @@ abstract class CacheRepositoryI { Future saveRefreshToken(RefreshToken token); + Future saveTokens({ + required AccessToken accessToken, + required RefreshToken refreshToken, + }); + + Future> retrieveAccessToken(); + + Future> retrieveRefreshToken(); + + Future saveUserFromDTO(UserDTO userDTO); + + Future> retrieveUser(); + Future deleteToken(String key); - Future init(); + void initAdapters(); } diff --git a/lib/domain/core/extensions.dart b/lib/domain/core/extensions.dart index cde52f4..02affe3 100644 --- a/lib/domain/core/extensions.dart +++ b/lib/domain/core/extensions.dart @@ -11,3 +11,9 @@ extension ForceRight on Either { return fold((l) => throw AssertionError(), (r) => r); } } + +extension ForceSome on Option { + T forceSome() { + return fold(() => throw AssertionError(), (t) => t); + } +} diff --git a/lib/infrastructure/cache_repository.dart b/lib/infrastructure/cache_repository.dart index 2f0ee8a..d496408 100644 --- a/lib/infrastructure/cache_repository.dart +++ b/lib/infrastructure/cache_repository.dart @@ -1,5 +1,8 @@ +import 'package:fpdart/fpdart.dart'; import 'package:hive_flutter/hive_flutter.dart'; +import 'package:users_repository/src/gen/proto/v1/users.pb.dart'; +import '../domain/auth/user.dart'; import '../domain/cache/access_token.dart'; import '../domain/cache/cache_repository_i.dart'; import '../domain/cache/refresh_token.dart'; @@ -12,23 +15,87 @@ class CacheRepository implements CacheRepositoryI { } @override - Future init() async { - await Hive.initFlutter(); - + void initAdapters() { Hive ..registerAdapter(AccessTokenAdapter()) - ..registerAdapter(RefreshTokenAdapter()); + ..registerAdapter(RefreshTokenAdapter()) + ..registerAdapter(UserAdapter()); } @override Future saveAccessToken(AccessToken token) async { - final box = await Hive.openBox('access_tokens'); - await box.put('access_token', token); + final box = await Hive.openBox(_accessTokenBox); + await box.put(_accessTokenKey, token); } @override Future saveRefreshToken(RefreshToken token) async { - final box = await Hive.openBox('refresh_tokens'); - await box.put('refresh_token', token); + final box = await Hive.openBox(_refreshTokenBox); + await box.put(_refreshTokenKey, token); + } + + @override + Future> retrieveAccessToken() async { + final box = await Hive.openBox(_accessTokenBox); + + final accessToken = box.get(_accessTokenKey); + + if (accessToken == null) { + return none(); + } + + return some(accessToken); + } + + @override + Future> retrieveRefreshToken() async { + final box = await Hive.openBox(_refreshTokenBox); + final refreshToken = box.get(_refreshTokenKey); + + if (refreshToken == null) { + return none(); + } + + return some(refreshToken); + } + + @override + Future saveTokens({ + required AccessToken accessToken, + required RefreshToken refreshToken, + }) async { + await saveAccessToken(accessToken); + await saveRefreshToken(refreshToken); } + + @override + Future> retrieveUser() async { + final box = await Hive.openBox(_usersBox); + + final user = box.get(_userKey); + + if (user == null) { + return none(); + } + + return some(user); + } + + @override + Future saveUserFromDTO(UserDTO userDTO) async { + final box = await Hive.openBox(_usersBox); + await box.put(_userKey, User.fromDTO(userDTO)); + } + + final String _accessTokenKey = 'access_token'; + + final String _refreshTokenKey = 'refresh_token'; + + final String _accessTokenBox = 'access_tokens'; + + final String _refreshTokenBox = 'refresh_tokens'; + + final String _usersBox = 'users'; + + final String _userKey = 'user'; } diff --git a/lib/main.dart b/lib/main.dart index b484b81..32a15c4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,10 +1,10 @@ import 'package:flutter/cupertino.dart'; import 'package:hive_flutter/hive_flutter.dart'; -import 'domain/cache/auth_entry.dart'; import 'presentation/core/my_app_widget.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); + await Hive.initFlutter(); runApp(MyAppWidget()); } diff --git a/lib/presentation/core/my_app_widget.dart b/lib/presentation/core/my_app_widget.dart index ade1643..f92004a 100644 --- a/lib/presentation/core/my_app_widget.dart +++ b/lib/presentation/core/my_app_widget.dart @@ -17,15 +17,16 @@ class MyAppWidget extends StatelessWidget { Widget build(BuildContext context) { return MultiRepositoryProvider( providers: [ + RepositoryProvider( + create: (context) => CacheRepository()..initAdapters(), + lazy: false, + ), RepositoryProvider( create: (context) => UsersRepository(), ), - RepositoryProvider( - create: (context) => CacheRepository()..init(), - ), ], child: BlocProvider( - create: (context) => UserBloc() + create: (context) => UserBloc(context.read()) ..add( const UserEvent.authCheckRequested(), ), diff --git a/lib/presentation/pages/profile_page/widgets/greeting.dart b/lib/presentation/pages/profile_page/widgets/greeting.dart index da66a03..c0ca074 100644 --- a/lib/presentation/pages/profile_page/widgets/greeting.dart +++ b/lib/presentation/pages/profile_page/widgets/greeting.dart @@ -1,6 +1,10 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import '../../../../application/auth/user_bloc/user_bloc.dart'; +import '../../../../domain/core/extensions.dart'; import '../../../../utils/extensions.dart'; +import 'header.dart'; class Greeting extends StatelessWidget { const Greeting({Key? key}) : super(key: key); @@ -12,28 +16,19 @@ class Greeting extends StatelessWidget { top: context.screenSize.height * 0.1, bottom: context.screenSize.height * 0.05, ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - context.l10n.unauthorizedGreeting, - style: const TextStyle( - fontSize: 24, - fontWeight: FontWeight.w600, - ), - ), - const Divider( - height: 10, - ), - Text( - context.l10n.unauthorizedFeaturesInfo, - style: TextStyle( - fontSize: 16, - color: Colors.grey.withOpacity(0.9), - ), - ), - ], - ), + child: BlocBuilder(builder: (context, state) { + if (state.user.isNone()) { + return Header( + greetingText: context.l10n.unauthorizedGreeting, + featuresInfoText: context.l10n.unauthorizedFeaturesInfo, + ); + } + final user = state.user.forceSome(); + return Header( + greetingText: 'Witaj ${user.username}', + featuresInfoText: '', + ); + }), ); } } diff --git a/lib/presentation/pages/profile_page/widgets/header.dart b/lib/presentation/pages/profile_page/widgets/header.dart new file mode 100644 index 0000000..5d7e1b7 --- /dev/null +++ b/lib/presentation/pages/profile_page/widgets/header.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/foundation.dart'; + +class Header extends StatelessWidget { + const Header( + {required this.greetingText, required this.featuresInfoText, Key? key,}) + : super(key: key); + + final String greetingText; + final String featuresInfoText; + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + greetingText, + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.w600, + ), + ), + const Divider( + height: 10, + ), + Text( + featuresInfoText, + style: TextStyle( + fontSize: 16, + color: Colors.grey.withOpacity(0.9), + ), + ), + ], + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties..add(StringProperty('greetingText', greetingText))..add( + StringProperty('featuresInfoText', featuresInfoText)); + } +} diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index 1888d2a..0000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:client/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} From d936023a0264d1a512ca8961eb248d8b6060d63d Mon Sep 17 00:00:00 2001 From: xJac0b Date: Sat, 27 May 2023 10:29:55 +0200 Subject: [PATCH 15/19] l10n null fix --- lib/utils/extensions.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/extensions.dart b/lib/utils/extensions.dart index e7ff58d..247d0d9 100644 --- a/lib/utils/extensions.dart +++ b/lib/utils/extensions.dart @@ -4,7 +4,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; export 'package:flutter_gen/gen_l10n/app_localizations.dart'; extension AppLocalizationsX on BuildContext { - AppLocalizations get l10n => AppLocalizations.of(this); + AppLocalizations get l10n => AppLocalizations.of(this) as AppLocalizations; } extension MediaQueryX on BuildContext { From b4afb03cbfadaf553e49bff511cf7724c5cd84b1 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Sat, 27 May 2023 10:31:45 +0200 Subject: [PATCH 16/19] keyboard not covering auth fields --- .../pages/login_page/login_page_view.dart | 88 ++++++----- .../register_page/register_page_view.dart | 82 +++++----- packages/users_repository/pubspec.lock | 140 +++++++++--------- pubspec.lock | 28 ++-- 4 files changed, 177 insertions(+), 161 deletions(-) diff --git a/lib/presentation/pages/login_page/login_page_view.dart b/lib/presentation/pages/login_page/login_page_view.dart index 6bcdecc..2a9a95b 100644 --- a/lib/presentation/pages/login_page/login_page_view.dart +++ b/lib/presentation/pages/login_page/login_page_view.dart @@ -19,50 +19,58 @@ class LoginPageView extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - resizeToAvoidBottomInset: false, - body: Center( - child: BlocConsumer( - listenWhen: (previous, current) { - if (previous.authResult.isNone() && current.authResult.isSome()) { - return true; - } + body: BlocConsumer( + listenWhen: (previous, current) { + if (previous.authResult.isNone() && current.authResult.isSome()) { + return true; + } - return false; - }, - listener: (context, state) { - state.authResult.fold(() => null, (result) { - if (result.isRight()) { - context.router.popForced(); - context.router.push(const HomeRoute()); - return; - } + return false; + }, + listener: (context, state) { + state.authResult.fold(() => null, (result) { + if (result.isRight()) { + context.router.popForced(); + context.router.push(const HomeRoute()); + return; + } - final failure = result.forceLeft(); + final failure = result.forceLeft(); - ScaffoldMessenger.of(context).showSnackBar( - authSnackBar( - content: failure.message(context), - ), - ); - }); - }, - builder: (context, state) { - if (state.isSubmitting) { - return const Center(child: CircularProgressIndicator()); - } - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const AppLogo(), - DefaultPadding( - child: PageTitle(title: context.l10n.authLoginHeading), - ), - const SizedBox(height: 20), - const SignInForm(), - ], + ScaffoldMessenger.of(context).showSnackBar( + authSnackBar( + content: failure.message(context), + ), ); - }, - ), + }); + }, + builder: (context, state) { + if (state.isSubmitting) { + return const Center(child: CircularProgressIndicator()); + } + return SingleChildScrollView( + physics: const ClampingScrollPhysics(), + child: ConstrainedBox( + constraints: BoxConstraints( + minWidth: MediaQuery.of(context).size.width, + minHeight: MediaQuery.of(context).size.height, + ), + child: IntrinsicHeight( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const AppLogo(), + DefaultPadding( + child: PageTitle(title: context.l10n.authLoginHeading), + ), + const SizedBox(height: 20), + const SignInForm(), + ], + ), + ), + ), + ); + }, ), ); } diff --git a/lib/presentation/pages/register_page/register_page_view.dart b/lib/presentation/pages/register_page/register_page_view.dart index 38b5625..567dbd6 100644 --- a/lib/presentation/pages/register_page/register_page_view.dart +++ b/lib/presentation/pages/register_page/register_page_view.dart @@ -19,47 +19,55 @@ class RegisterPageView extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - resizeToAvoidBottomInset: false, - body: Center( - child: BlocConsumer( - listenWhen: (previous, current) { - if (previous.authResult.isNone() && current.authResult.isSome()) { - return true; - } + body: BlocConsumer( + listenWhen: (previous, current) { + if (previous.authResult.isNone() && current.authResult.isSome()) { + return true; + } - return false; - }, - listener: (context, state) { - state.authResult.fold(() => null, (result) { - if (result.isRight()) { - context.router.popForced(); - context.router.push(const HomeRoute()); - return; - } + return false; + }, + listener: (context, state) { + state.authResult.fold(() => null, (result) { + if (result.isRight()) { + context.router.popForced(); + context.router.push(const HomeRoute()); + return; + } - final failure = result.forceLeft(); + final failure = result.forceLeft(); - ScaffoldMessenger.of(context).showSnackBar( - authSnackBar( - content: failure.message(context), - ), - ); - }); - }, - builder: (context, state) { - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const AppLogo(), - DefaultPadding( - child: PageTitle(title: context.l10n.authRegisterHeading), - ), - const SizedBox(height: 20), - const SignUpForm(), - ], + ScaffoldMessenger.of(context).showSnackBar( + authSnackBar( + content: failure.message(context), + ), ); - }, - ), + }); + }, + builder: (context, state) { + return SingleChildScrollView( + physics: const ClampingScrollPhysics(), + child: ConstrainedBox( + constraints: BoxConstraints( + minWidth: MediaQuery.of(context).size.width, + minHeight: MediaQuery.of(context).size.height, + ), + child: IntrinsicHeight( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const AppLogo(), + DefaultPadding( + child: PageTitle(title: context.l10n.authRegisterHeading), + ), + const SizedBox(height: 20), + const SignUpForm(), + ], + ), + ), + ), + ); + }, ), ); } diff --git a/packages/users_repository/pubspec.lock b/packages/users_repository/pubspec.lock index 8378c9b..f81b456 100644 --- a/packages/users_repository/pubspec.lock +++ b/packages/users_repository/pubspec.lock @@ -5,34 +5,34 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "98d1d33ed129b372846e862de23a0fc365745f4d7b5e786ce667fcbbb7ac5c07" + sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a url: "https://pub.dev" source: hosted - version: "55.0.0" + version: "61.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "881348aed9b0b425882c97732629a6a31093c8ff20fc4b3b03fb9d3d50a3a126" + sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 url: "https://pub.dev" source: hosted - version: "5.7.1" + version: "5.13.0" archive: dependency: transitive description: name: archive - sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d + sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" url: "https://pub.dev" source: hosted - version: "3.3.6" + version: "3.3.7" args: dependency: transitive description: name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" + sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" async: dependency: transitive description: @@ -53,10 +53,10 @@ packages: dependency: transitive description: name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" + sha256: "43865b79fbb78532e4bff7c33087aa43b1d488c4fdef014eaef568af6d8016dc" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.0" build_config: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: transitive description: name: build_daemon - sha256: "757153e5d9cd88253cb13f28c2fb55a537dc31fefd98137549895b5beb7c6169" + sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "4.0.0" build_resolvers: dependency: transitive description: @@ -85,18 +85,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: a3335cae313ea41f193e5637f98185e5cb37b3fde2c5c4654ac546b8164e59ac + sha256: "220ae4553e50d7c21a17c051afc7b183d28a24a420502e842f303f8e4e6edced" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.4" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292" + sha256: "88a57f2ac99849362e73878334caa9f06ee25f31d2adced882b8337838c84e1e" url: "https://pub.dev" source: hosted - version: "7.2.7" + version: "7.2.9" built_collection: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: built_value - sha256: "31b7c748fd4b9adf8d25d72a4c4a59ef119f12876cf414f94f8af5131d5fa2b0" + sha256: "7dd62d9faf105c434f3d829bbe9c4be02ec67f5ed94832222116122df67c5452" url: "https://pub.dev" source: hosted - version: "8.4.4" + version: "8.6.0" characters: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: checked_yaml - sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.3" clock: dependency: transitive description: @@ -149,10 +149,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.17.2" convert: dependency: transitive description: @@ -165,10 +165,10 @@ packages: dependency: transitive description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" cupertino_icons: dependency: "direct main" description: @@ -181,10 +181,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "5be16bf1707658e4c03078d4a9b90208ded217fb02c163e207d334082412f2fb" + sha256: f4f1f73ab3fd2afcbcca165ee601fe980d966af6a21b5970c6c9376955c528ad url: "https://pub.dev" source: hosted - version: "2.2.5" + version: "2.3.1" fake_async: dependency: transitive description: @@ -197,10 +197,10 @@ packages: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" fixnum: dependency: transitive description: @@ -239,10 +239,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: e819441678f1679b719008ff2ff0ef045d66eed9f9ec81166ca0d9b02a187454 + sha256: "2edb9ef971d0f803860ecd9084afd48c717d002141ad77b69be3e976bee7190e" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.4" freezed_annotation: dependency: "direct main" description: @@ -263,26 +263,26 @@ packages: dependency: transitive description: name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" googleapis_auth: dependency: transitive description: name: googleapis_auth - sha256: "127b1bbd32170ab8312f503bd57f1d654d8e4039ddfbc63c027d3f7ade0eff74" + sha256: af7c3a3edf9d0de2e1e0a77e994fae0a581c525fa7012af4fa0d4a52ed9484da url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.4.1" graphs: dependency: transitive description: name: graphs - sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.1" grpc: dependency: "direct main" description: @@ -295,10 +295,10 @@ packages: dependency: transitive description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "0.13.6" http2: dependency: transitive description: @@ -343,26 +343,26 @@ packages: dependency: transitive description: name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.8.1" lints: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + sha256: "6b0206b0bf4f04961fc5438198ccb3a885685cd67d4d4a32cc20ad7f8adbe015" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.1.0" logging: dependency: transitive description: name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" matcher: dependency: transitive description: @@ -375,10 +375,10 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: @@ -415,10 +415,10 @@ packages: dependency: transitive description: name: pointycastle - sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" url: "https://pub.dev" source: hosted - version: "3.6.2" + version: "3.7.3" pool: dependency: transitive description: @@ -439,34 +439,34 @@ packages: dependency: transitive description: name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: ec85d7d55339d85f44ec2b682a82fea340071e8978257e5a43e69f79e98ef50c + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.2.3" shelf: dependency: transitive description: name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" sky_engine: dependency: transitive description: flutter @@ -476,18 +476,18 @@ packages: dependency: transitive description: name: source_gen - sha256: c2bea18c95cfa0276a366270afaa2850b09b4a76db95d546f3d003dcc7011298 + sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33" url: "https://pub.dev" source: hosted - version: "1.2.7" + version: "1.3.2" source_span: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -532,10 +532,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.5.2" timing: dependency: transitive description: @@ -548,10 +548,10 @@ packages: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" vector_math: dependency: transitive description: @@ -564,25 +564,25 @@ packages: dependency: transitive description: name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.0" yaml: dependency: transitive description: name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: dart: ">=3.0.1 <4.0.0" diff --git a/pubspec.lock b/pubspec.lock index 319a4ab..1c57866 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -189,10 +189,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.17.2" color: dependency: transitive description: @@ -476,10 +476,10 @@ packages: dependency: "direct main" description: name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.18.0" + version: "0.18.1" io: dependency: transitive description: @@ -532,10 +532,10 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: @@ -801,10 +801,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -849,26 +849,26 @@ packages: dependency: transitive description: name: test - sha256: "3dac9aecf2c3991d09b9cdde4f98ded7b30804a88a0d7e4e7e1678e78d6b97f4" + sha256: "4f92f103ef63b1bbac6f4bd1930624fca81b2574464482512c4f0896319be575" url: "https://pub.dev" source: hosted - version: "1.24.1" + version: "1.24.2" test_api: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.5.2" test_core: dependency: transitive description: name: test_core - sha256: "5138dbffb77b2289ecb12b81c11ba46036590b72a64a7a90d6ffb880f1a29e93" + sha256: "3642b184882f79e76ca57a9230fb971e494c3c1fd09c21ae3083ce891bcc0aa1" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.5.2" time: dependency: transitive description: From 2299e787ada63f71255f8a8d613a2740393508e1 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Sat, 27 May 2023 11:52:32 +0200 Subject: [PATCH 17/19] username field validation --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 5 +-- .../sign_in_form_bloc/sign_in_form_state.dart | 4 +- lib/application/auth/user_bloc/user_bloc.dart | 6 +-- lib/domain/auth/user.dart | 1 - .../core/constants/decorations.dart | 12 +++-- lib/presentation/core/my_app_widget.dart | 1 - .../form/text_fields/email_form_field.dart | 1 - .../form/text_fields/password_form_field.dart | 1 - .../form/text_fields/username_form_field.dart | 45 ++++++++++--------- .../pages/profile_page/widgets/header.dart | 15 ++++--- .../lib/src/domain/core/typedefs.dart | 3 -- .../src/domain/users/users_repository_i.dart | 2 - .../src/infrastructure/users_repository.dart | 2 - 13 files changed, 49 insertions(+), 49 deletions(-) diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index 5f427a3..9b2196b 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -11,12 +11,10 @@ import '../../../domain/cache/cache_repository_i.dart'; import '../../../domain/cache/refresh_token.dart'; import '../../../domain/core/extensions.dart'; +part 'sign_in_form_bloc.freezed.dart'; part 'sign_in_form_event.dart'; - part 'sign_in_form_state.dart'; -part 'sign_in_form_bloc.freezed.dart'; - class SignInFormBloc extends Bloc { SignInFormBloc(this._usersRepository, this._cacheRepository) : super(SignInFormState.initial()) { @@ -51,6 +49,7 @@ class SignInFormBloc extends Bloc { emit(state.copyWith( authResult: some(left(const AuthFailure.invalidEmailOrPassword())), isSubmitting: false, + showValidatorMessages: true, )); return; } diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart index 525d0f5..6d89ee2 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_state.dart @@ -6,7 +6,7 @@ class SignInFormState with _$SignInFormState { required EmailAddress emailAddress, required Password password, required Username username, - required bool showErrorMessages, + required bool showValidatorMessages, required bool isSubmitting, required Option> authResult, }) = _SignInFormState; @@ -16,7 +16,7 @@ class SignInFormState with _$SignInFormState { password: Password(''), username: Username(''), isSubmitting: false, - showErrorMessages: false, + showValidatorMessages: false, authResult: none(), ); } diff --git a/lib/application/auth/user_bloc/user_bloc.dart b/lib/application/auth/user_bloc/user_bloc.dart index 6a41a86..4c607fb 100644 --- a/lib/application/auth/user_bloc/user_bloc.dart +++ b/lib/application/auth/user_bloc/user_bloc.dart @@ -3,15 +3,13 @@ import 'package:fpdart/fpdart.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import '../../../domain/auth/user.dart'; -import '../../../infrastructure/cache_repository.dart'; import '../../../domain/core/extensions.dart'; +import '../../../infrastructure/cache_repository.dart'; +part 'user_bloc.freezed.dart'; part 'user_event.dart'; - part 'user_state.dart'; -part 'user_bloc.freezed.dart'; - class UserBloc extends Bloc { UserBloc(this._cacheRepository) : super(UserState.initial()) { on((event, emit) async { diff --git a/lib/domain/auth/user.dart b/lib/domain/auth/user.dart index e435b12..37188f6 100644 --- a/lib/domain/auth/user.dart +++ b/lib/domain/auth/user.dart @@ -1,4 +1,3 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:hive/hive.dart'; import 'package:users_repository/users_repository.dart'; diff --git a/lib/presentation/core/constants/decorations.dart b/lib/presentation/core/constants/decorations.dart index c2d1344..fac616c 100644 --- a/lib/presentation/core/constants/decorations.dart +++ b/lib/presentation/core/constants/decorations.dart @@ -6,15 +6,21 @@ InputDecoration getInputDecoration({ String hintText = '', Widget? prefixIcon, Widget? suffixIcon, + bool showValidatorMessages = true, }) { + final outlineInputBorder = OutlineInputBorder( + borderRadius: BorderRadius.circular(formFieldRadius), + borderSide: const BorderSide(color: Color.fromARGB(255, 198, 53, 42))); return InputDecoration( suffixIcon: suffixIcon, prefixIcon: prefixIcon, hintText: hintText, filled: true, + errorStyle: showValidatorMessages ? null : const TextStyle(fontSize: 0), + focusedErrorBorder: outlineInputBorder, + errorBorder: outlineInputBorder, border: OutlineInputBorder( - borderRadius: BorderRadius.circular(formFieldRadius), - borderSide: BorderSide.none, - ), + borderRadius: BorderRadius.circular(formFieldRadius), + borderSide: BorderSide.none), ); } diff --git a/lib/presentation/core/my_app_widget.dart b/lib/presentation/core/my_app_widget.dart index f92004a..9feca52 100644 --- a/lib/presentation/core/my_app_widget.dart +++ b/lib/presentation/core/my_app_widget.dart @@ -6,7 +6,6 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:users_repository/users_repository.dart'; import '../../application/auth/user_bloc/user_bloc.dart'; -import '../../domain/cache/cache_repository_i.dart'; import '../../infrastructure/cache_repository.dart'; import '../router/router.dart'; diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart index 057158a..bfed6e5 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart @@ -19,7 +19,6 @@ class EmailFormField extends StatelessWidget { onChanged: (value) { context.read().add(SignInFormEvent.emailChanged(value)); }, - autovalidateMode: AutovalidateMode.onUserInteraction, validator: (_) => context.read().state.emailAddress.value.fold( (f) => f.maybeMap( diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart index f6fb1a7..23f08f1 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart @@ -38,7 +38,6 @@ class _PasswordFormFieldState extends State { ), autocorrect: false, obscureText: true, - autovalidateMode: AutovalidateMode.onUserInteraction, onChanged: (value) => context.read().add( SignInFormEvent.passwordChanged(value), ), diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart index 7e92fb9..4334fc4 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart @@ -7,29 +7,34 @@ import '../../../../constants/decorations.dart'; class UsernameFormField extends StatelessWidget { const UsernameFormField({super.key}); - @override Widget build(BuildContext context) { - return TextFormField( - decoration: getInputDecoration( - prefixIcon: const Icon(Icons.person), - hintText: 'Username', - ), - keyboardType: TextInputType.name, - onChanged: (value) { - context - .read() - .add(SignInFormEvent.usernameChanged(value)); - }, - autovalidateMode: AutovalidateMode.onUserInteraction, - validator: (_) => - context.read().state.username.value.fold( - (f) => f.maybeMap( - invalidUsername: (_) => context.l10n.formInvalidUsername, - orElse: () => null, - ), - (_) => null, + return BlocBuilder( + builder: (context, state) { + return TextFormField( + autovalidateMode: AutovalidateMode.onUserInteraction, + decoration: getInputDecoration( + prefixIcon: const Icon(Icons.person), + hintText: 'Username', + showValidatorMessages: state.username.value.fold( + (f) => state.showValidatorMessages, + (_) => false, ), + ), + keyboardType: TextInputType.name, + onChanged: (value) { + context + .read() + .add(SignInFormEvent.usernameChanged(value)); + }, + validator: (_) => state.username.value.fold( + (f) => f.maybeMap( + invalidUsername: (_) => context.l10n.formInvalidUsername, + orElse: () => null, + ), + (_) => null, + )); + }, ); } } diff --git a/lib/presentation/pages/profile_page/widgets/header.dart b/lib/presentation/pages/profile_page/widgets/header.dart index 5d7e1b7..9595b03 100644 --- a/lib/presentation/pages/profile_page/widgets/header.dart +++ b/lib/presentation/pages/profile_page/widgets/header.dart @@ -1,10 +1,12 @@ -import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; class Header extends StatelessWidget { - const Header( - {required this.greetingText, required this.featuresInfoText, Key? key,}) - : super(key: key); + const Header({ + required this.greetingText, + required this.featuresInfoText, + Key? key, + }) : super(key: key); final String greetingText; final String featuresInfoText; @@ -38,7 +40,8 @@ class Header extends StatelessWidget { @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); - properties..add(StringProperty('greetingText', greetingText))..add( - StringProperty('featuresInfoText', featuresInfoText)); + properties + ..add(StringProperty('greetingText', greetingText)) + ..add(StringProperty('featuresInfoText', featuresInfoText)); } } diff --git a/packages/users_repository/lib/src/domain/core/typedefs.dart b/packages/users_repository/lib/src/domain/core/typedefs.dart index f53404b..4fc467e 100644 --- a/packages/users_repository/lib/src/domain/core/typedefs.dart +++ b/packages/users_repository/lib/src/domain/core/typedefs.dart @@ -1,6 +1,3 @@ -import 'package:fpdart/fpdart.dart'; -import '../../gen/proto/v1/users.pb.dart'; -import '../users/call_failure.dart'; // typedef CallResult = Either; diff --git a/packages/users_repository/lib/src/domain/users/users_repository_i.dart b/packages/users_repository/lib/src/domain/users/users_repository_i.dart index 3a1ae6c..fdfc67d 100644 --- a/packages/users_repository/lib/src/domain/users/users_repository_i.dart +++ b/packages/users_repository/lib/src/domain/users/users_repository_i.dart @@ -1,9 +1,7 @@ import 'package:fpdart/fpdart.dart'; -import 'package:grpc/grpc.dart'; import '../../../users_repository.dart'; import '../../gen/proto/v1/users.pbgrpc.dart'; -import '../core/typedefs.dart'; import 'call_failure.dart'; abstract class UsersRepositoryI { diff --git a/packages/users_repository/lib/src/infrastructure/users_repository.dart b/packages/users_repository/lib/src/infrastructure/users_repository.dart index d66da9d..606c1dc 100644 --- a/packages/users_repository/lib/src/infrastructure/users_repository.dart +++ b/packages/users_repository/lib/src/infrastructure/users_repository.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:flutter/foundation.dart'; import 'package:fpdart/fpdart.dart'; import 'package:grpc/grpc.dart'; From a4c5b7fe78fe50b6fa117fa7aca7d9b21c5746f5 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Sat, 27 May 2023 11:53:08 +0200 Subject: [PATCH 18/19] format --- lib/presentation/pages/register_page/register_page.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/presentation/pages/register_page/register_page.dart b/lib/presentation/pages/register_page/register_page.dart index 01641b3..6c14665 100644 --- a/lib/presentation/pages/register_page/register_page.dart +++ b/lib/presentation/pages/register_page/register_page.dart @@ -13,8 +13,8 @@ class RegisterPage extends StatelessWidget { Widget build(BuildContext context) { return BlocProvider( create: (context) => SignInFormBloc( - context.read(), - context.read(), + context.read(), + context.read(), ), child: const RegisterPageView(), ); From 257aa54ef3f791bdc50cba27c55717d73f87b0be Mon Sep 17 00:00:00 2001 From: xJac0b Date: Fri, 2 Jun 2023 20:25:14 +0200 Subject: [PATCH 19/19] Fields validation --- .../sign_in_form_bloc/sign_in_form_bloc.dart | 1 + lib/l10n/app_en.arb | 1 + lib/l10n/app_pl.arb | 1 + .../form/text_fields/email_form_field.dart | 43 ++++++---- .../form/text_fields/password_form_field.dart | 81 ++++++++++--------- .../form/text_fields/username_form_field.dart | 2 +- .../login_page/widgets/sign_in_form.dart | 7 +- 7 files changed, 77 insertions(+), 59 deletions(-) diff --git a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart index 9b2196b..be8d1f9 100644 --- a/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart +++ b/lib/application/auth/sign_in_form_bloc/sign_in_form_bloc.dart @@ -79,6 +79,7 @@ class SignInFormBloc extends Bloc { emit(state.copyWith( authResult: some(left(const AuthFailure.invalidRegistrationInput())), isSubmitting: false, + showValidatorMessages: true, )); return; } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 3fefac3..903b830 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -30,6 +30,7 @@ "resetPasswordInfo": "Enter your email address and we'll send you a link to reset your password", "resetPasswordSubmit": "Reset password", "email": "Email", + "username": "Username", "password": "Password", "firstName": "First name", "lastName": "Last name", diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index f5b1883..bad5d05 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -24,6 +24,7 @@ "resetPasswordInfo": "Wpisz swój adres e-mail, a my wyślemy Ci link do zresetowania hasła", "resetPasswordSubmit": "Zresetuj hasło", "email": "Adres e-mail", + "username": "Nazwa użytkownika", "password": "Hasło", "firstName": "Imię", "lastName": "Nazwisko", diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart index bfed6e5..fc6fa4b 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/email_form_field.dart @@ -10,23 +10,34 @@ class EmailFormField extends StatelessWidget { @override Widget build(BuildContext context) { - return TextFormField( - decoration: getInputDecoration( - prefixIcon: const Icon(Icons.email), - hintText: context.l10n.email, - ), - keyboardType: TextInputType.emailAddress, - onChanged: (value) { - context.read().add(SignInFormEvent.emailChanged(value)); + return BlocBuilder( + builder: (context, state) { + return TextFormField( + autovalidateMode: AutovalidateMode.onUserInteraction, + decoration: getInputDecoration( + prefixIcon: const Icon(Icons.email), + hintText: context.l10n.email, + showValidatorMessages: state.emailAddress.value.fold( + (f) => state.showValidatorMessages, + (_) => false, + ), + ), + keyboardType: TextInputType.emailAddress, + onChanged: (value) { + context + .read() + .add(SignInFormEvent.emailChanged(value)); + }, + validator: (_) => + context.read().state.emailAddress.value.fold( + (f) => f.maybeMap( + invalidEmail: (_) => context.l10n.formInvalidEmail, + orElse: () => null, + ), + (_) => null, + ), + ); }, - validator: (_) => - context.read().state.emailAddress.value.fold( - (f) => f.maybeMap( - invalidEmail: (_) => context.l10n.formInvalidEmail, - orElse: () => null, - ), - (_) => null, - ), ); } } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart index 23f08f1..41bdcf3 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/password_form_field.dart @@ -9,54 +9,61 @@ import '../../../../constants/decorations.dart'; class PasswordFormField extends StatefulWidget { const PasswordFormField({ super.key, - this.onPressed, }); - final Function()? onPressed; - @override State createState() => _PasswordFormFieldState(); - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties.add(ObjectFlagProperty.has('onPressed', onPressed)); - } } class _PasswordFormFieldState extends State { + bool obscure = true; @override Widget build(BuildContext context) { - return TextFormField( - decoration: getInputDecoration( - hintText: context.l10n.password, - prefixIcon: const Icon(Icons.lock), - suffixIcon: IconButton( - icon: const Icon(Icons.remove_red_eye), - onPressed: widget.onPressed, - ), - ), - autocorrect: false, - obscureText: true, - onChanged: (value) => context.read().add( - SignInFormEvent.passwordChanged(value), - ), - onEditingComplete: () => { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text( - 'Password should contains 8-16 characters, one uppercase and lowercase letter and one special character'), + return BlocBuilder( + builder: (context, state) { + return TextFormField( + autovalidateMode: AutovalidateMode.onUserInteraction, + decoration: getInputDecoration( + hintText: context.l10n.password, + prefixIcon: const Icon(Icons.lock), + suffixIcon: IconButton( + icon: obscure + ? const Icon(Icons.visibility_off) + : const Icon(Icons.visibility), + onPressed: () => setState(() => obscure = !obscure), + ), + showValidatorMessages: state.password.value.fold( + (f) => state.showValidatorMessages, + (_) => false, + ), ), - ), - }, - validator: (_) => - context.read().state.password.value.fold( - (l) => l.maybeMap( - invalidPassword: (_) => 'Invalid Password', - orElse: () => null, - ), - (_) => null, + autocorrect: false, + obscureText: obscure, + onChanged: (value) => context.read().add( + SignInFormEvent.passwordChanged(value), ), + onEditingComplete: () => { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(context.l10n.formInvalidPasswordExplanation)), + ), + }, + validator: (_) => + context.read().state.password.value.fold( + (l) => l.maybeMap( + invalidPassword: (_) => context.l10n.formInvalidPassword, + orElse: () => null, + ), + (_) => null, + ), + ); + }, ); } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('obscure', obscure)); + } } diff --git a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart index 4334fc4..7d057ee 100644 --- a/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart +++ b/lib/presentation/core/widgets/authentication/form/text_fields/username_form_field.dart @@ -15,7 +15,7 @@ class UsernameFormField extends StatelessWidget { autovalidateMode: AutovalidateMode.onUserInteraction, decoration: getInputDecoration( prefixIcon: const Icon(Icons.person), - hintText: 'Username', + hintText: context.l10n.username, showValidatorMessages: state.username.value.fold( (f) => state.showValidatorMessages, (_) => false, diff --git a/lib/presentation/pages/login_page/widgets/sign_in_form.dart b/lib/presentation/pages/login_page/widgets/sign_in_form.dart index b053d49..9f6b32f 100644 --- a/lib/presentation/pages/login_page/widgets/sign_in_form.dart +++ b/lib/presentation/pages/login_page/widgets/sign_in_form.dart @@ -1,4 +1,3 @@ -import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -23,10 +22,8 @@ class SignInForm extends StatelessWidget { const DefaultPadding( child: UsernameFormField(), ), - DefaultPadding( - child: PasswordFormField( - onPressed: () => context.router.push(const ResetPasswordRoute()), - ), + const DefaultPadding( + child: PasswordFormField(), ), const SizedBox( height: 20,

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