Compare commits
2 Commits
d31b68cde2
...
f47e78a9a2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f47e78a9a2 | ||
|
|
eb7459c13f |
@@ -3,5 +3,6 @@ abstract class TimeDelayConst {
|
||||
static const Duration durationMill300 = Duration(milliseconds: 300);
|
||||
static const Duration durationMill800 = Duration(milliseconds: 800);
|
||||
static const Duration durationMill3500 = Duration(milliseconds: 3500);
|
||||
static const Duration duration1 = Duration(seconds: 1);
|
||||
static const Duration duration3 = Duration(seconds: 3);
|
||||
}
|
||||
|
||||
@@ -30,6 +30,10 @@ import '../../feature/auth/domain/usecases/verify_phone_register_usecase.dart'
|
||||
as _i664;
|
||||
import '../../feature/auth/presentation/blocs/login_bloc/login_bloc.dart'
|
||||
as _i1065;
|
||||
import '../../feature/auth/presentation/blocs/verify_otp_bloc/verify_otp_bloc.dart'
|
||||
as _i323;
|
||||
import '../../feature/auth/presentation/blocs/verify_phone_bloc/verify_phone_bloc.dart'
|
||||
as _i224;
|
||||
import '../../feature/basket/presentation/blocs/basket_bloc.dart' as _i728;
|
||||
import '../../feature/browse/presentation/blocs/browse_bloc/browse_bloc.dart'
|
||||
as _i991;
|
||||
@@ -101,6 +105,20 @@ extension GetItInjectableX on _i174.GetIt {
|
||||
gh.factory<_i406.VerifyOtpCodeRegisterUseCase>(
|
||||
() => _i406.VerifyOtpCodeRegisterUseCase(gh<_i884.AuthRepository>()),
|
||||
);
|
||||
gh.factory<_i323.VerifyOtpBloc>(
|
||||
() => _i323.VerifyOtpBloc(
|
||||
gh<_i406.VerifyOtpCodeRegisterUseCase>(),
|
||||
gh<_i318.VerifyOtpCodeForgotPasswordUseCase>(),
|
||||
gh<_i664.VerifyPhoneRegisterUseCase>(),
|
||||
gh<_i801.VerifyPhoneNumberLoginUseCase>(),
|
||||
),
|
||||
);
|
||||
gh.factory<_i224.VerifyPhoneBloc>(
|
||||
() => _i224.VerifyPhoneBloc(
|
||||
gh<_i801.VerifyPhoneNumberLoginUseCase>(),
|
||||
gh<_i664.VerifyPhoneRegisterUseCase>(),
|
||||
),
|
||||
);
|
||||
gh.factory<_i1065.LoginBloc>(
|
||||
() => _i1065.LoginBloc(
|
||||
gh<_i241.LoginUseCase>(),
|
||||
|
||||
8
lib/core/helpers/time_formatters.dart
Normal file
8
lib/core/helpers/time_formatters.dart
Normal file
@@ -0,0 +1,8 @@
|
||||
abstract class TimeFormatters {
|
||||
static String formatMinutesToTime(int totalMinutes) {
|
||||
final hours = totalMinutes ~/ 60;
|
||||
final minutes = totalMinutes % 60;
|
||||
|
||||
return '${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}';
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_otp_code_login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/presentation/pages/forgot_password_page/forgot_password_page.dart';
|
||||
import 'package:food_delivery_client/feature/auth/presentation/pages/login_page/login_page.dart';
|
||||
import 'package:food_delivery_client/feature/auth/presentation/pages/register_page/register_page.dart';
|
||||
@@ -25,7 +26,9 @@ class AppRoutes {
|
||||
|
||||
GoRoute(
|
||||
path: Routes.register,
|
||||
pageBuilder: (context, state) => CupertinoPage(child: RegisterPage()),
|
||||
pageBuilder: (context, state) => CupertinoPage(
|
||||
child: RegisterPage(phoneNumber: state.extra as String),
|
||||
),
|
||||
),
|
||||
GoRoute(
|
||||
path: Routes.forgotPassword,
|
||||
@@ -42,14 +45,15 @@ class AppRoutes {
|
||||
GoRoute(
|
||||
path: Routes.verifyOtpCode,
|
||||
pageBuilder: (context, state) => CupertinoPage(
|
||||
child: VerifyOtpCodePage(isRegister: state.extra as bool),
|
||||
child: VerifyOtpCodePage(params: state.extra as OtpCodePageParams),
|
||||
),
|
||||
),
|
||||
|
||||
GoRoute(
|
||||
path: Routes.resetPassword,
|
||||
pageBuilder: (context, state) =>
|
||||
CupertinoPage(child: ResetPasswordPage()),
|
||||
pageBuilder: (context, state) => CupertinoPage(
|
||||
child: ResetPasswordPage(phoneNumber: state.extra as String),
|
||||
),
|
||||
),
|
||||
|
||||
GoRoute(
|
||||
|
||||
@@ -6,13 +6,12 @@ import 'package:food_delivery_client/food_delivery_client.dart';
|
||||
import '../../../../core/usecase/usecase.dart';
|
||||
|
||||
@injectable
|
||||
class VerifyOtpCodeForgotPasswordUseCase
|
||||
class VerifyOtpCodeForgotPasswordUseCase
|
||||
implements UseCase<SuccessModel, VerifyOtpCodeParams> {
|
||||
final AuthRepository _authRepository;
|
||||
|
||||
VerifyOtpCodeForgotPasswordUseCase(this._authRepository);
|
||||
|
||||
|
||||
@override
|
||||
Future<Either<Failure, SuccessModel>> call(VerifyOtpCodeParams params) async {
|
||||
return _authRepository.verifyOtpCodeResetPassword(params: params);
|
||||
@@ -25,3 +24,10 @@ class VerifyOtpCodeParams {
|
||||
|
||||
VerifyOtpCodeParams({required this.otpCode, required this.phoneNumber});
|
||||
}
|
||||
|
||||
class OtpCodePageParams {
|
||||
final String phoneNumber;
|
||||
final bool isRegister;
|
||||
|
||||
OtpCodePageParams({required this.phoneNumber, required this.isRegister});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_otp_code_login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_otp_code_register_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_phone_login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_phone_register_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/common/presentation/widgets/w_toastification.dart';
|
||||
import 'package:food_delivery_client/food_delivery_client.dart';
|
||||
|
||||
part 'verify_otp_event.dart';
|
||||
|
||||
part 'verify_otp_state.dart';
|
||||
|
||||
part 'verify_otp_bloc.freezed.dart';
|
||||
|
||||
@injectable
|
||||
class VerifyOtpBloc extends Bloc<VerifyOtpEvent, VerifyOtpState> {
|
||||
final VerifyOtpCodeRegisterUseCase _registerUseCase;
|
||||
final VerifyOtpCodeForgotPasswordUseCase _passwordUseCase;
|
||||
final VerifyPhoneRegisterUseCase _phoneRegisterUseCase;
|
||||
final VerifyPhoneNumberLoginUseCase _phoneNumberLoginUseCase;
|
||||
|
||||
VerifyOtpBloc(
|
||||
this._registerUseCase,
|
||||
this._passwordUseCase,
|
||||
this._phoneRegisterUseCase,
|
||||
this._phoneNumberLoginUseCase,
|
||||
) : super(const VerifyOtpState()) {
|
||||
Timer? timer1;
|
||||
|
||||
on<_CancelTimer>((event, emit) {
|
||||
timer1?.cancel();
|
||||
});
|
||||
|
||||
on<_Started>((event, emit) {
|
||||
int seconds = state.time;
|
||||
emit(state.copyWith(time: seconds));
|
||||
timer1 = Timer.periodic(TimeDelayConst.duration1, (timer) {
|
||||
if (seconds == 0) {
|
||||
timer.cancel();
|
||||
} else {
|
||||
seconds--;
|
||||
add(VerifyOtpEvent.ticked(seconds));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
on<_Ticked>(_onTicked);
|
||||
on<_VerifyOtpReset>(_onVerifyOtpReset);
|
||||
on<_VerifyOtpRegister>(_onVerifyOtpRegister);
|
||||
on<_ResendRegister>(_onResendVerifyPhoneRegister);
|
||||
on<_ResendForgot>(_onResendVerifyPhoneForgot);
|
||||
}
|
||||
|
||||
void _onTicked(_Ticked event, Emitter<VerifyOtpState> emit) {
|
||||
emit(state.copyWith(time: event.seconds));
|
||||
}
|
||||
|
||||
Future<void> _onVerifyOtpReset(
|
||||
_VerifyOtpReset event,
|
||||
Emitter<VerifyOtpState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: RequestStatus.loading));
|
||||
final response = await _passwordUseCase.call(event.params);
|
||||
|
||||
response.fold(
|
||||
(l) {
|
||||
showErrorToast(l.errorMessage);
|
||||
emit(state.copyWith(status: RequestStatus.error));
|
||||
},
|
||||
(r) {
|
||||
emit(state.copyWith(status: RequestStatus.loaded));
|
||||
add(VerifyOtpEvent.cancelTimer());
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _onVerifyOtpRegister(
|
||||
_VerifyOtpRegister event,
|
||||
Emitter<VerifyOtpState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: RequestStatus.loading));
|
||||
final response = await _registerUseCase.call(event.params);
|
||||
|
||||
response.fold(
|
||||
(l) {
|
||||
showErrorToast(l.errorMessage);
|
||||
emit(state.copyWith(status: RequestStatus.error));
|
||||
},
|
||||
(r) {
|
||||
emit(state.copyWith(status: RequestStatus.loaded));
|
||||
add(VerifyOtpEvent.cancelTimer());
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _onResendVerifyPhoneRegister(
|
||||
_ResendRegister event,
|
||||
Emitter<VerifyOtpState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(resendStatus: RequestStatus.loading));
|
||||
final response = await _phoneRegisterUseCase.call(
|
||||
VerifyPhoneNumberParams(phoneNumber: event.phoneNUmber),
|
||||
);
|
||||
|
||||
response.fold(
|
||||
(l) {
|
||||
showErrorToast(l.errorMessage);
|
||||
emit(state.copyWith(resendStatus: RequestStatus.error));
|
||||
},
|
||||
(r) {
|
||||
emit(state.copyWith(resendStatus: RequestStatus.loaded));
|
||||
add(VerifyOtpEvent.ticked(120));
|
||||
add(VerifyOtpEvent.started());
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _onResendVerifyPhoneForgot(
|
||||
_ResendForgot event,
|
||||
Emitter<VerifyOtpState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(resendStatus: RequestStatus.loading));
|
||||
final response = await _phoneNumberLoginUseCase.call(
|
||||
VerifyPhoneNumberParams(phoneNumber: event.phoneNUmber),
|
||||
);
|
||||
|
||||
response.fold(
|
||||
(l) {
|
||||
showErrorToast(l.errorMessage);
|
||||
emit(state.copyWith(resendStatus: RequestStatus.error));
|
||||
},
|
||||
(r) {
|
||||
emit(state.copyWith(resendStatus: RequestStatus.loaded));
|
||||
add(VerifyOtpEvent.ticked(120));
|
||||
add(VerifyOtpEvent.started());
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,867 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
|
||||
|
||||
part of 'verify_otp_bloc.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// dart format off
|
||||
T _$identity<T>(T value) => value;
|
||||
/// @nodoc
|
||||
mixin _$VerifyOtpEvent {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is VerifyOtpEvent);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpEvent()';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class $VerifyOtpEventCopyWith<$Res> {
|
||||
$VerifyOtpEventCopyWith(VerifyOtpEvent _, $Res Function(VerifyOtpEvent) __);
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [VerifyOtpEvent].
|
||||
extension VerifyOtpEventPatterns on VerifyOtpEvent {
|
||||
/// A variant of `map` that fallback to returning `orElse`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return orElse();
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeMap<TResult extends Object?>({TResult Function( _Started value)? started,TResult Function( _CancelTimer value)? cancelTimer,TResult Function( _ResendRegister value)? resendRegister,TResult Function( _ResendForgot value)? resendForgot,TResult Function( _Ticked value)? ticked,TResult Function( _VerifyOtpReset value)? verifyOtpReset,TResult Function( _VerifyOtpRegister value)? verifyOtpRegister,required TResult orElse(),}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _Started() when started != null:
|
||||
return started(_that);case _CancelTimer() when cancelTimer != null:
|
||||
return cancelTimer(_that);case _ResendRegister() when resendRegister != null:
|
||||
return resendRegister(_that);case _ResendForgot() when resendForgot != null:
|
||||
return resendForgot(_that);case _Ticked() when ticked != null:
|
||||
return ticked(_that);case _VerifyOtpReset() when verifyOtpReset != null:
|
||||
return verifyOtpReset(_that);case _VerifyOtpRegister() when verifyOtpRegister != null:
|
||||
return verifyOtpRegister(_that);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
}
|
||||
/// A `switch`-like method, using callbacks.
|
||||
///
|
||||
/// Callbacks receives the raw object, upcasted.
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case final Subclass2 value:
|
||||
/// return ...;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult map<TResult extends Object?>({required TResult Function( _Started value) started,required TResult Function( _CancelTimer value) cancelTimer,required TResult Function( _ResendRegister value) resendRegister,required TResult Function( _ResendForgot value) resendForgot,required TResult Function( _Ticked value) ticked,required TResult Function( _VerifyOtpReset value) verifyOtpReset,required TResult Function( _VerifyOtpRegister value) verifyOtpRegister,}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _Started():
|
||||
return started(_that);case _CancelTimer():
|
||||
return cancelTimer(_that);case _ResendRegister():
|
||||
return resendRegister(_that);case _ResendForgot():
|
||||
return resendForgot(_that);case _Ticked():
|
||||
return ticked(_that);case _VerifyOtpReset():
|
||||
return verifyOtpReset(_that);case _VerifyOtpRegister():
|
||||
return verifyOtpRegister(_that);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `map` that fallback to returning `null`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return null;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>({TResult? Function( _Started value)? started,TResult? Function( _CancelTimer value)? cancelTimer,TResult? Function( _ResendRegister value)? resendRegister,TResult? Function( _ResendForgot value)? resendForgot,TResult? Function( _Ticked value)? ticked,TResult? Function( _VerifyOtpReset value)? verifyOtpReset,TResult? Function( _VerifyOtpRegister value)? verifyOtpRegister,}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _Started() when started != null:
|
||||
return started(_that);case _CancelTimer() when cancelTimer != null:
|
||||
return cancelTimer(_that);case _ResendRegister() when resendRegister != null:
|
||||
return resendRegister(_that);case _ResendForgot() when resendForgot != null:
|
||||
return resendForgot(_that);case _Ticked() when ticked != null:
|
||||
return ticked(_that);case _VerifyOtpReset() when verifyOtpReset != null:
|
||||
return verifyOtpReset(_that);case _VerifyOtpRegister() when verifyOtpRegister != null:
|
||||
return verifyOtpRegister(_that);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `when` that fallback to an `orElse` callback.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return orElse();
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>({TResult Function()? started,TResult Function()? cancelTimer,TResult Function( String phoneNUmber)? resendRegister,TResult Function( String phoneNUmber)? resendForgot,TResult Function( int seconds)? ticked,TResult Function( VerifyOtpCodeParams params)? verifyOtpReset,TResult Function( VerifyOtpCodeParams params)? verifyOtpRegister,required TResult orElse(),}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _Started() when started != null:
|
||||
return started();case _CancelTimer() when cancelTimer != null:
|
||||
return cancelTimer();case _ResendRegister() when resendRegister != null:
|
||||
return resendRegister(_that.phoneNUmber);case _ResendForgot() when resendForgot != null:
|
||||
return resendForgot(_that.phoneNUmber);case _Ticked() when ticked != null:
|
||||
return ticked(_that.seconds);case _VerifyOtpReset() when verifyOtpReset != null:
|
||||
return verifyOtpReset(_that.params);case _VerifyOtpRegister() when verifyOtpRegister != null:
|
||||
return verifyOtpRegister(_that.params);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
}
|
||||
/// A `switch`-like method, using callbacks.
|
||||
///
|
||||
/// As opposed to `map`, this offers destructuring.
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case Subclass2(:final field2):
|
||||
/// return ...;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult when<TResult extends Object?>({required TResult Function() started,required TResult Function() cancelTimer,required TResult Function( String phoneNUmber) resendRegister,required TResult Function( String phoneNUmber) resendForgot,required TResult Function( int seconds) ticked,required TResult Function( VerifyOtpCodeParams params) verifyOtpReset,required TResult Function( VerifyOtpCodeParams params) verifyOtpRegister,}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _Started():
|
||||
return started();case _CancelTimer():
|
||||
return cancelTimer();case _ResendRegister():
|
||||
return resendRegister(_that.phoneNUmber);case _ResendForgot():
|
||||
return resendForgot(_that.phoneNUmber);case _Ticked():
|
||||
return ticked(_that.seconds);case _VerifyOtpReset():
|
||||
return verifyOtpReset(_that.params);case _VerifyOtpRegister():
|
||||
return verifyOtpRegister(_that.params);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `when` that fallback to returning `null`
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return null;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>({TResult? Function()? started,TResult? Function()? cancelTimer,TResult? Function( String phoneNUmber)? resendRegister,TResult? Function( String phoneNUmber)? resendForgot,TResult? Function( int seconds)? ticked,TResult? Function( VerifyOtpCodeParams params)? verifyOtpReset,TResult? Function( VerifyOtpCodeParams params)? verifyOtpRegister,}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _Started() when started != null:
|
||||
return started();case _CancelTimer() when cancelTimer != null:
|
||||
return cancelTimer();case _ResendRegister() when resendRegister != null:
|
||||
return resendRegister(_that.phoneNUmber);case _ResendForgot() when resendForgot != null:
|
||||
return resendForgot(_that.phoneNUmber);case _Ticked() when ticked != null:
|
||||
return ticked(_that.seconds);case _VerifyOtpReset() when verifyOtpReset != null:
|
||||
return verifyOtpReset(_that.params);case _VerifyOtpRegister() when verifyOtpRegister != null:
|
||||
return verifyOtpRegister(_that.params);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _Started implements VerifyOtpEvent {
|
||||
const _Started();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _Started);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpEvent.started()';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _CancelTimer implements VerifyOtpEvent {
|
||||
const _CancelTimer();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _CancelTimer);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpEvent.cancelTimer()';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _ResendRegister implements VerifyOtpEvent {
|
||||
const _ResendRegister(this.phoneNUmber);
|
||||
|
||||
|
||||
final String phoneNUmber;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$ResendRegisterCopyWith<_ResendRegister> get copyWith => __$ResendRegisterCopyWithImpl<_ResendRegister>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _ResendRegister&&(identical(other.phoneNUmber, phoneNUmber) || other.phoneNUmber == phoneNUmber));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,phoneNUmber);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpEvent.resendRegister(phoneNUmber: $phoneNUmber)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$ResendRegisterCopyWith<$Res> implements $VerifyOtpEventCopyWith<$Res> {
|
||||
factory _$ResendRegisterCopyWith(_ResendRegister value, $Res Function(_ResendRegister) _then) = __$ResendRegisterCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
String phoneNUmber
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$ResendRegisterCopyWithImpl<$Res>
|
||||
implements _$ResendRegisterCopyWith<$Res> {
|
||||
__$ResendRegisterCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _ResendRegister _self;
|
||||
final $Res Function(_ResendRegister) _then;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? phoneNUmber = null,}) {
|
||||
return _then(_ResendRegister(
|
||||
null == phoneNUmber ? _self.phoneNUmber : phoneNUmber // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _ResendForgot implements VerifyOtpEvent {
|
||||
const _ResendForgot(this.phoneNUmber);
|
||||
|
||||
|
||||
final String phoneNUmber;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$ResendForgotCopyWith<_ResendForgot> get copyWith => __$ResendForgotCopyWithImpl<_ResendForgot>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _ResendForgot&&(identical(other.phoneNUmber, phoneNUmber) || other.phoneNUmber == phoneNUmber));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,phoneNUmber);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpEvent.resendForgot(phoneNUmber: $phoneNUmber)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$ResendForgotCopyWith<$Res> implements $VerifyOtpEventCopyWith<$Res> {
|
||||
factory _$ResendForgotCopyWith(_ResendForgot value, $Res Function(_ResendForgot) _then) = __$ResendForgotCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
String phoneNUmber
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$ResendForgotCopyWithImpl<$Res>
|
||||
implements _$ResendForgotCopyWith<$Res> {
|
||||
__$ResendForgotCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _ResendForgot _self;
|
||||
final $Res Function(_ResendForgot) _then;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? phoneNUmber = null,}) {
|
||||
return _then(_ResendForgot(
|
||||
null == phoneNUmber ? _self.phoneNUmber : phoneNUmber // ignore: cast_nullable_to_non_nullable
|
||||
as String,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _Ticked implements VerifyOtpEvent {
|
||||
const _Ticked(this.seconds);
|
||||
|
||||
|
||||
final int seconds;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$TickedCopyWith<_Ticked> get copyWith => __$TickedCopyWithImpl<_Ticked>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _Ticked&&(identical(other.seconds, seconds) || other.seconds == seconds));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,seconds);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpEvent.ticked(seconds: $seconds)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$TickedCopyWith<$Res> implements $VerifyOtpEventCopyWith<$Res> {
|
||||
factory _$TickedCopyWith(_Ticked value, $Res Function(_Ticked) _then) = __$TickedCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
int seconds
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$TickedCopyWithImpl<$Res>
|
||||
implements _$TickedCopyWith<$Res> {
|
||||
__$TickedCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _Ticked _self;
|
||||
final $Res Function(_Ticked) _then;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? seconds = null,}) {
|
||||
return _then(_Ticked(
|
||||
null == seconds ? _self.seconds : seconds // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _VerifyOtpReset implements VerifyOtpEvent {
|
||||
const _VerifyOtpReset(this.params);
|
||||
|
||||
|
||||
final VerifyOtpCodeParams params;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$VerifyOtpResetCopyWith<_VerifyOtpReset> get copyWith => __$VerifyOtpResetCopyWithImpl<_VerifyOtpReset>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _VerifyOtpReset&&(identical(other.params, params) || other.params == params));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,params);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpEvent.verifyOtpReset(params: $params)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$VerifyOtpResetCopyWith<$Res> implements $VerifyOtpEventCopyWith<$Res> {
|
||||
factory _$VerifyOtpResetCopyWith(_VerifyOtpReset value, $Res Function(_VerifyOtpReset) _then) = __$VerifyOtpResetCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
VerifyOtpCodeParams params
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$VerifyOtpResetCopyWithImpl<$Res>
|
||||
implements _$VerifyOtpResetCopyWith<$Res> {
|
||||
__$VerifyOtpResetCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _VerifyOtpReset _self;
|
||||
final $Res Function(_VerifyOtpReset) _then;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? params = null,}) {
|
||||
return _then(_VerifyOtpReset(
|
||||
null == params ? _self.params : params // ignore: cast_nullable_to_non_nullable
|
||||
as VerifyOtpCodeParams,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _VerifyOtpRegister implements VerifyOtpEvent {
|
||||
const _VerifyOtpRegister(this.params);
|
||||
|
||||
|
||||
final VerifyOtpCodeParams params;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$VerifyOtpRegisterCopyWith<_VerifyOtpRegister> get copyWith => __$VerifyOtpRegisterCopyWithImpl<_VerifyOtpRegister>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _VerifyOtpRegister&&(identical(other.params, params) || other.params == params));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,params);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpEvent.verifyOtpRegister(params: $params)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$VerifyOtpRegisterCopyWith<$Res> implements $VerifyOtpEventCopyWith<$Res> {
|
||||
factory _$VerifyOtpRegisterCopyWith(_VerifyOtpRegister value, $Res Function(_VerifyOtpRegister) _then) = __$VerifyOtpRegisterCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
VerifyOtpCodeParams params
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$VerifyOtpRegisterCopyWithImpl<$Res>
|
||||
implements _$VerifyOtpRegisterCopyWith<$Res> {
|
||||
__$VerifyOtpRegisterCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _VerifyOtpRegister _self;
|
||||
final $Res Function(_VerifyOtpRegister) _then;
|
||||
|
||||
/// Create a copy of VerifyOtpEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? params = null,}) {
|
||||
return _then(_VerifyOtpRegister(
|
||||
null == params ? _self.params : params // ignore: cast_nullable_to_non_nullable
|
||||
as VerifyOtpCodeParams,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
mixin _$VerifyOtpState {
|
||||
|
||||
RequestStatus get status; RequestStatus get resendStatus; int get time;
|
||||
/// Create a copy of VerifyOtpState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
$VerifyOtpStateCopyWith<VerifyOtpState> get copyWith => _$VerifyOtpStateCopyWithImpl<VerifyOtpState>(this as VerifyOtpState, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is VerifyOtpState&&(identical(other.status, status) || other.status == status)&&(identical(other.resendStatus, resendStatus) || other.resendStatus == resendStatus)&&(identical(other.time, time) || other.time == time));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,status,resendStatus,time);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpState(status: $status, resendStatus: $resendStatus, time: $time)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class $VerifyOtpStateCopyWith<$Res> {
|
||||
factory $VerifyOtpStateCopyWith(VerifyOtpState value, $Res Function(VerifyOtpState) _then) = _$VerifyOtpStateCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
RequestStatus status, RequestStatus resendStatus, int time
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class _$VerifyOtpStateCopyWithImpl<$Res>
|
||||
implements $VerifyOtpStateCopyWith<$Res> {
|
||||
_$VerifyOtpStateCopyWithImpl(this._self, this._then);
|
||||
|
||||
final VerifyOtpState _self;
|
||||
final $Res Function(VerifyOtpState) _then;
|
||||
|
||||
/// Create a copy of VerifyOtpState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') @override $Res call({Object? status = null,Object? resendStatus = null,Object? time = null,}) {
|
||||
return _then(_self.copyWith(
|
||||
status: null == status ? _self.status : status // ignore: cast_nullable_to_non_nullable
|
||||
as RequestStatus,resendStatus: null == resendStatus ? _self.resendStatus : resendStatus // ignore: cast_nullable_to_non_nullable
|
||||
as RequestStatus,time: null == time ? _self.time : time // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [VerifyOtpState].
|
||||
extension VerifyOtpStatePatterns on VerifyOtpState {
|
||||
/// A variant of `map` that fallback to returning `orElse`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return orElse();
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _VerifyOtpState value)? $default,{required TResult orElse(),}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyOtpState() when $default != null:
|
||||
return $default(_that);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
}
|
||||
/// A `switch`-like method, using callbacks.
|
||||
///
|
||||
/// Callbacks receives the raw object, upcasted.
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case final Subclass2 value:
|
||||
/// return ...;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _VerifyOtpState value) $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyOtpState():
|
||||
return $default(_that);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `map` that fallback to returning `null`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return null;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _VerifyOtpState value)? $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyOtpState() when $default != null:
|
||||
return $default(_that);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `when` that fallback to an `orElse` callback.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return orElse();
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( RequestStatus status, RequestStatus resendStatus, int time)? $default,{required TResult orElse(),}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyOtpState() when $default != null:
|
||||
return $default(_that.status,_that.resendStatus,_that.time);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
}
|
||||
/// A `switch`-like method, using callbacks.
|
||||
///
|
||||
/// As opposed to `map`, this offers destructuring.
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case Subclass2(:final field2):
|
||||
/// return ...;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( RequestStatus status, RequestStatus resendStatus, int time) $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyOtpState():
|
||||
return $default(_that.status,_that.resendStatus,_that.time);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `when` that fallback to returning `null`
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return null;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( RequestStatus status, RequestStatus resendStatus, int time)? $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyOtpState() when $default != null:
|
||||
return $default(_that.status,_that.resendStatus,_that.time);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _VerifyOtpState implements VerifyOtpState {
|
||||
const _VerifyOtpState({this.status = RequestStatus.initial, this.resendStatus = RequestStatus.initial, this.time = 120});
|
||||
|
||||
|
||||
@override@JsonKey() final RequestStatus status;
|
||||
@override@JsonKey() final RequestStatus resendStatus;
|
||||
@override@JsonKey() final int time;
|
||||
|
||||
/// Create a copy of VerifyOtpState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$VerifyOtpStateCopyWith<_VerifyOtpState> get copyWith => __$VerifyOtpStateCopyWithImpl<_VerifyOtpState>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _VerifyOtpState&&(identical(other.status, status) || other.status == status)&&(identical(other.resendStatus, resendStatus) || other.resendStatus == resendStatus)&&(identical(other.time, time) || other.time == time));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,status,resendStatus,time);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyOtpState(status: $status, resendStatus: $resendStatus, time: $time)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$VerifyOtpStateCopyWith<$Res> implements $VerifyOtpStateCopyWith<$Res> {
|
||||
factory _$VerifyOtpStateCopyWith(_VerifyOtpState value, $Res Function(_VerifyOtpState) _then) = __$VerifyOtpStateCopyWithImpl;
|
||||
@override @useResult
|
||||
$Res call({
|
||||
RequestStatus status, RequestStatus resendStatus, int time
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$VerifyOtpStateCopyWithImpl<$Res>
|
||||
implements _$VerifyOtpStateCopyWith<$Res> {
|
||||
__$VerifyOtpStateCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _VerifyOtpState _self;
|
||||
final $Res Function(_VerifyOtpState) _then;
|
||||
|
||||
/// Create a copy of VerifyOtpState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @pragma('vm:prefer-inline') $Res call({Object? status = null,Object? resendStatus = null,Object? time = null,}) {
|
||||
return _then(_VerifyOtpState(
|
||||
status: null == status ? _self.status : status // ignore: cast_nullable_to_non_nullable
|
||||
as RequestStatus,resendStatus: null == resendStatus ? _self.resendStatus : resendStatus // ignore: cast_nullable_to_non_nullable
|
||||
as RequestStatus,time: null == time ? _self.time : time // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// dart format on
|
||||
@@ -0,0 +1,19 @@
|
||||
part of 'verify_otp_bloc.dart';
|
||||
|
||||
@freezed
|
||||
class VerifyOtpEvent with _$VerifyOtpEvent {
|
||||
const factory VerifyOtpEvent.started() = _Started;
|
||||
const factory VerifyOtpEvent.cancelTimer() = _CancelTimer;
|
||||
const factory VerifyOtpEvent.resendRegister(String phoneNUmber) =
|
||||
_ResendRegister;
|
||||
|
||||
const factory VerifyOtpEvent.resendForgot(String phoneNUmber) = _ResendForgot;
|
||||
|
||||
const factory VerifyOtpEvent.ticked(int seconds) = _Ticked;
|
||||
|
||||
const factory VerifyOtpEvent.verifyOtpReset(VerifyOtpCodeParams params) =
|
||||
_VerifyOtpReset;
|
||||
|
||||
const factory VerifyOtpEvent.verifyOtpRegister(VerifyOtpCodeParams params) =
|
||||
_VerifyOtpRegister;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
part of 'verify_otp_bloc.dart';
|
||||
|
||||
@freezed
|
||||
abstract class VerifyOtpState with _$VerifyOtpState {
|
||||
const factory VerifyOtpState({
|
||||
@Default(RequestStatus.initial) RequestStatus status,
|
||||
@Default(RequestStatus.initial) RequestStatus resendStatus,
|
||||
@Default(120) int time,
|
||||
}) = _VerifyOtpState;
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_phone_login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_phone_register_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/common/presentation/widgets/w_toastification.dart';
|
||||
import 'package:food_delivery_client/food_delivery_client.dart';
|
||||
|
||||
part 'verify_phone_event.dart';
|
||||
|
||||
part 'verify_phone_state.dart';
|
||||
|
||||
part 'verify_phone_bloc.freezed.dart';
|
||||
|
||||
@injectable
|
||||
class VerifyPhoneBloc extends Bloc<VerifyPhoneEvent, VerifyPhoneState> {
|
||||
final VerifyPhoneNumberLoginUseCase _loginUseCase;
|
||||
final VerifyPhoneRegisterUseCase _registerUseCase;
|
||||
|
||||
VerifyPhoneBloc(this._loginUseCase, this._registerUseCase)
|
||||
: super(const VerifyPhoneState()) {
|
||||
on<_VerifyPhoneRegister>(_onVerifyPhoneNumberRegister);
|
||||
on<_VerifyPhoneReset>(_onVerifyPhoneReset);
|
||||
}
|
||||
|
||||
Future<void> _onVerifyPhoneNumberRegister(
|
||||
_VerifyPhoneRegister event,
|
||||
Emitter<VerifyPhoneState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: RequestStatus.loading));
|
||||
final response = await _registerUseCase.call(event.params);
|
||||
|
||||
response.fold(
|
||||
(l) {
|
||||
showErrorToast(l.errorMessage);
|
||||
emit(state.copyWith(status: RequestStatus.error));
|
||||
},
|
||||
(r) {
|
||||
showSuccessToast(r.message);
|
||||
emit(state.copyWith(status: RequestStatus.loaded));
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _onVerifyPhoneReset(
|
||||
_VerifyPhoneReset event,
|
||||
Emitter<VerifyPhoneState> emit,
|
||||
) async {
|
||||
emit(state.copyWith(status: RequestStatus.loading));
|
||||
final response = await _loginUseCase.call(event.params);
|
||||
|
||||
response.fold(
|
||||
(l) {
|
||||
showErrorToast(l.errorMessage);
|
||||
emit(state.copyWith(status: RequestStatus.error));
|
||||
},
|
||||
(r) {
|
||||
showSuccessToast(r.message);
|
||||
emit(state.copyWith(status: RequestStatus.loaded));
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,607 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
|
||||
|
||||
part of 'verify_phone_bloc.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// dart format off
|
||||
T _$identity<T>(T value) => value;
|
||||
/// @nodoc
|
||||
mixin _$VerifyPhoneEvent {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is VerifyPhoneEvent);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyPhoneEvent()';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class $VerifyPhoneEventCopyWith<$Res> {
|
||||
$VerifyPhoneEventCopyWith(VerifyPhoneEvent _, $Res Function(VerifyPhoneEvent) __);
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [VerifyPhoneEvent].
|
||||
extension VerifyPhoneEventPatterns on VerifyPhoneEvent {
|
||||
/// A variant of `map` that fallback to returning `orElse`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return orElse();
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeMap<TResult extends Object?>({TResult Function( _Started value)? started,TResult Function( _VerifyPhoneRegister value)? verifyPhoneRegister,TResult Function( _VerifyPhoneReset value)? verifyPhoneReset,required TResult orElse(),}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _Started() when started != null:
|
||||
return started(_that);case _VerifyPhoneRegister() when verifyPhoneRegister != null:
|
||||
return verifyPhoneRegister(_that);case _VerifyPhoneReset() when verifyPhoneReset != null:
|
||||
return verifyPhoneReset(_that);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
}
|
||||
/// A `switch`-like method, using callbacks.
|
||||
///
|
||||
/// Callbacks receives the raw object, upcasted.
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case final Subclass2 value:
|
||||
/// return ...;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult map<TResult extends Object?>({required TResult Function( _Started value) started,required TResult Function( _VerifyPhoneRegister value) verifyPhoneRegister,required TResult Function( _VerifyPhoneReset value) verifyPhoneReset,}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _Started():
|
||||
return started(_that);case _VerifyPhoneRegister():
|
||||
return verifyPhoneRegister(_that);case _VerifyPhoneReset():
|
||||
return verifyPhoneReset(_that);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `map` that fallback to returning `null`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return null;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>({TResult? Function( _Started value)? started,TResult? Function( _VerifyPhoneRegister value)? verifyPhoneRegister,TResult? Function( _VerifyPhoneReset value)? verifyPhoneReset,}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _Started() when started != null:
|
||||
return started(_that);case _VerifyPhoneRegister() when verifyPhoneRegister != null:
|
||||
return verifyPhoneRegister(_that);case _VerifyPhoneReset() when verifyPhoneReset != null:
|
||||
return verifyPhoneReset(_that);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `when` that fallback to an `orElse` callback.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return orElse();
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>({TResult Function()? started,TResult Function( VerifyPhoneNumberParams params)? verifyPhoneRegister,TResult Function( VerifyPhoneNumberParams params)? verifyPhoneReset,required TResult orElse(),}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _Started() when started != null:
|
||||
return started();case _VerifyPhoneRegister() when verifyPhoneRegister != null:
|
||||
return verifyPhoneRegister(_that.params);case _VerifyPhoneReset() when verifyPhoneReset != null:
|
||||
return verifyPhoneReset(_that.params);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
}
|
||||
/// A `switch`-like method, using callbacks.
|
||||
///
|
||||
/// As opposed to `map`, this offers destructuring.
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case Subclass2(:final field2):
|
||||
/// return ...;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult when<TResult extends Object?>({required TResult Function() started,required TResult Function( VerifyPhoneNumberParams params) verifyPhoneRegister,required TResult Function( VerifyPhoneNumberParams params) verifyPhoneReset,}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _Started():
|
||||
return started();case _VerifyPhoneRegister():
|
||||
return verifyPhoneRegister(_that.params);case _VerifyPhoneReset():
|
||||
return verifyPhoneReset(_that.params);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `when` that fallback to returning `null`
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return null;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>({TResult? Function()? started,TResult? Function( VerifyPhoneNumberParams params)? verifyPhoneRegister,TResult? Function( VerifyPhoneNumberParams params)? verifyPhoneReset,}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _Started() when started != null:
|
||||
return started();case _VerifyPhoneRegister() when verifyPhoneRegister != null:
|
||||
return verifyPhoneRegister(_that.params);case _VerifyPhoneReset() when verifyPhoneReset != null:
|
||||
return verifyPhoneReset(_that.params);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _Started implements VerifyPhoneEvent {
|
||||
const _Started();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _Started);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyPhoneEvent.started()';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _VerifyPhoneRegister implements VerifyPhoneEvent {
|
||||
const _VerifyPhoneRegister(this.params);
|
||||
|
||||
|
||||
final VerifyPhoneNumberParams params;
|
||||
|
||||
/// Create a copy of VerifyPhoneEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$VerifyPhoneRegisterCopyWith<_VerifyPhoneRegister> get copyWith => __$VerifyPhoneRegisterCopyWithImpl<_VerifyPhoneRegister>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _VerifyPhoneRegister&&(identical(other.params, params) || other.params == params));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,params);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyPhoneEvent.verifyPhoneRegister(params: $params)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$VerifyPhoneRegisterCopyWith<$Res> implements $VerifyPhoneEventCopyWith<$Res> {
|
||||
factory _$VerifyPhoneRegisterCopyWith(_VerifyPhoneRegister value, $Res Function(_VerifyPhoneRegister) _then) = __$VerifyPhoneRegisterCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
VerifyPhoneNumberParams params
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$VerifyPhoneRegisterCopyWithImpl<$Res>
|
||||
implements _$VerifyPhoneRegisterCopyWith<$Res> {
|
||||
__$VerifyPhoneRegisterCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _VerifyPhoneRegister _self;
|
||||
final $Res Function(_VerifyPhoneRegister) _then;
|
||||
|
||||
/// Create a copy of VerifyPhoneEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? params = null,}) {
|
||||
return _then(_VerifyPhoneRegister(
|
||||
null == params ? _self.params : params // ignore: cast_nullable_to_non_nullable
|
||||
as VerifyPhoneNumberParams,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _VerifyPhoneReset implements VerifyPhoneEvent {
|
||||
const _VerifyPhoneReset(this.params);
|
||||
|
||||
|
||||
final VerifyPhoneNumberParams params;
|
||||
|
||||
/// Create a copy of VerifyPhoneEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$VerifyPhoneResetCopyWith<_VerifyPhoneReset> get copyWith => __$VerifyPhoneResetCopyWithImpl<_VerifyPhoneReset>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _VerifyPhoneReset&&(identical(other.params, params) || other.params == params));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,params);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyPhoneEvent.verifyPhoneReset(params: $params)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$VerifyPhoneResetCopyWith<$Res> implements $VerifyPhoneEventCopyWith<$Res> {
|
||||
factory _$VerifyPhoneResetCopyWith(_VerifyPhoneReset value, $Res Function(_VerifyPhoneReset) _then) = __$VerifyPhoneResetCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
VerifyPhoneNumberParams params
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$VerifyPhoneResetCopyWithImpl<$Res>
|
||||
implements _$VerifyPhoneResetCopyWith<$Res> {
|
||||
__$VerifyPhoneResetCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _VerifyPhoneReset _self;
|
||||
final $Res Function(_VerifyPhoneReset) _then;
|
||||
|
||||
/// Create a copy of VerifyPhoneEvent
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? params = null,}) {
|
||||
return _then(_VerifyPhoneReset(
|
||||
null == params ? _self.params : params // ignore: cast_nullable_to_non_nullable
|
||||
as VerifyPhoneNumberParams,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
mixin _$VerifyPhoneState {
|
||||
|
||||
RequestStatus get status;
|
||||
/// Create a copy of VerifyPhoneState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
$VerifyPhoneStateCopyWith<VerifyPhoneState> get copyWith => _$VerifyPhoneStateCopyWithImpl<VerifyPhoneState>(this as VerifyPhoneState, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is VerifyPhoneState&&(identical(other.status, status) || other.status == status));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,status);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyPhoneState(status: $status)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class $VerifyPhoneStateCopyWith<$Res> {
|
||||
factory $VerifyPhoneStateCopyWith(VerifyPhoneState value, $Res Function(VerifyPhoneState) _then) = _$VerifyPhoneStateCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
RequestStatus status
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class _$VerifyPhoneStateCopyWithImpl<$Res>
|
||||
implements $VerifyPhoneStateCopyWith<$Res> {
|
||||
_$VerifyPhoneStateCopyWithImpl(this._self, this._then);
|
||||
|
||||
final VerifyPhoneState _self;
|
||||
final $Res Function(VerifyPhoneState) _then;
|
||||
|
||||
/// Create a copy of VerifyPhoneState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') @override $Res call({Object? status = null,}) {
|
||||
return _then(_self.copyWith(
|
||||
status: null == status ? _self.status : status // ignore: cast_nullable_to_non_nullable
|
||||
as RequestStatus,
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [VerifyPhoneState].
|
||||
extension VerifyPhoneStatePatterns on VerifyPhoneState {
|
||||
/// A variant of `map` that fallback to returning `orElse`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return orElse();
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _VerifyPhoneState value)? $default,{required TResult orElse(),}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyPhoneState() when $default != null:
|
||||
return $default(_that);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
}
|
||||
/// A `switch`-like method, using callbacks.
|
||||
///
|
||||
/// Callbacks receives the raw object, upcasted.
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case final Subclass2 value:
|
||||
/// return ...;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _VerifyPhoneState value) $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyPhoneState():
|
||||
return $default(_that);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `map` that fallback to returning `null`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case final Subclass value:
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return null;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _VerifyPhoneState value)? $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyPhoneState() when $default != null:
|
||||
return $default(_that);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `when` that fallback to an `orElse` callback.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return orElse();
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( RequestStatus status)? $default,{required TResult orElse(),}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyPhoneState() when $default != null:
|
||||
return $default(_that.status);case _:
|
||||
return orElse();
|
||||
|
||||
}
|
||||
}
|
||||
/// A `switch`-like method, using callbacks.
|
||||
///
|
||||
/// As opposed to `map`, this offers destructuring.
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case Subclass2(:final field2):
|
||||
/// return ...;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( RequestStatus status) $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyPhoneState():
|
||||
return $default(_that.status);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
}
|
||||
}
|
||||
/// A variant of `when` that fallback to returning `null`
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
/// ```dart
|
||||
/// switch (sealedClass) {
|
||||
/// case Subclass(:final field):
|
||||
/// return ...;
|
||||
/// case _:
|
||||
/// return null;
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( RequestStatus status)? $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _VerifyPhoneState() when $default != null:
|
||||
return $default(_that.status);case _:
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _VerifyPhoneState implements VerifyPhoneState {
|
||||
const _VerifyPhoneState({this.status = RequestStatus.initial});
|
||||
|
||||
|
||||
@override@JsonKey() final RequestStatus status;
|
||||
|
||||
/// Create a copy of VerifyPhoneState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$VerifyPhoneStateCopyWith<_VerifyPhoneState> get copyWith => __$VerifyPhoneStateCopyWithImpl<_VerifyPhoneState>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _VerifyPhoneState&&(identical(other.status, status) || other.status == status));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,status);
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'VerifyPhoneState(status: $status)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$VerifyPhoneStateCopyWith<$Res> implements $VerifyPhoneStateCopyWith<$Res> {
|
||||
factory _$VerifyPhoneStateCopyWith(_VerifyPhoneState value, $Res Function(_VerifyPhoneState) _then) = __$VerifyPhoneStateCopyWithImpl;
|
||||
@override @useResult
|
||||
$Res call({
|
||||
RequestStatus status
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$VerifyPhoneStateCopyWithImpl<$Res>
|
||||
implements _$VerifyPhoneStateCopyWith<$Res> {
|
||||
__$VerifyPhoneStateCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _VerifyPhoneState _self;
|
||||
final $Res Function(_VerifyPhoneState) _then;
|
||||
|
||||
/// Create a copy of VerifyPhoneState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @pragma('vm:prefer-inline') $Res call({Object? status = null,}) {
|
||||
return _then(_VerifyPhoneState(
|
||||
status: null == status ? _self.status : status // ignore: cast_nullable_to_non_nullable
|
||||
as RequestStatus,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// dart format on
|
||||
@@ -0,0 +1,14 @@
|
||||
part of 'verify_phone_bloc.dart';
|
||||
|
||||
@freezed
|
||||
class VerifyPhoneEvent with _$VerifyPhoneEvent {
|
||||
const factory VerifyPhoneEvent.started() = _Started;
|
||||
|
||||
const factory VerifyPhoneEvent.verifyPhoneRegister(
|
||||
VerifyPhoneNumberParams params,
|
||||
) = _VerifyPhoneRegister;
|
||||
|
||||
const factory VerifyPhoneEvent.verifyPhoneReset(
|
||||
VerifyPhoneNumberParams params,
|
||||
) = _VerifyPhoneReset;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
part of 'verify_phone_bloc.dart';
|
||||
|
||||
@freezed
|
||||
abstract class VerifyPhoneState with _$VerifyPhoneState {
|
||||
const factory VerifyPhoneState({
|
||||
@Default(RequestStatus.initial) RequestStatus status,
|
||||
}) = _VerifyPhoneState;
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:food_delivery_client/core/helpers/formatters.dart';
|
||||
import 'package:food_delivery_client/core/helpers/validator_helpers.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/presentation/widgets/w_auth_background.dart';
|
||||
import '../../../../../../food_delivery_client.dart';
|
||||
import '../../../blocs/login_bloc/login_bloc.dart';
|
||||
@@ -110,7 +109,7 @@ class _WLoginBodyState extends State<WLoginBody> {
|
||||
alignment: AlignmentGeometry.centerRight,
|
||||
child: TextButton(
|
||||
onPressed: () {
|
||||
// context.push(Routes.verifyPhoneNumber, extra: false);
|
||||
context.push(Routes.verifyPhoneNumber, extra: false);
|
||||
},
|
||||
child: Text(
|
||||
context.loc.forgot_password,
|
||||
@@ -154,7 +153,7 @@ class _WLoginBodyState extends State<WLoginBody> {
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
// context.push(Routes.verifyPhoneNumber, extra: true);
|
||||
context.push(Routes.verifyPhoneNumber, extra: true);
|
||||
},
|
||||
child: Text(
|
||||
context.loc.sign_up,
|
||||
|
||||
@@ -3,12 +3,12 @@ import 'package:food_delivery_client/feature/auth/presentation/pages/register_pa
|
||||
import '../../../../../food_delivery_client.dart';
|
||||
|
||||
class RegisterPage extends StatelessWidget {
|
||||
const RegisterPage({super.key});
|
||||
const RegisterPage({super.key, required this.phoneNumber});
|
||||
|
||||
final String phoneNumber;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return WLayout(
|
||||
top: false,
|
||||
child: Scaffold(body: WRegisterBody()));
|
||||
return WLayout(top: false, child: Scaffold(body: WRegisterBody()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +172,10 @@ class _WRegisterBodyState extends State<WRegisterBody> {
|
||||
AppIcons.icArrowRightLight,
|
||||
).paddingOnly(left: 8),
|
||||
onPressed: () {
|
||||
if (_formKey.currentState?.validate() ?? false) {}
|
||||
if (_formKey.currentState?.validate() ?? false) {
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
),
|
||||
20.verticalSpace,
|
||||
|
||||
@@ -3,8 +3,8 @@ import 'package:food_delivery_client/feature/auth/presentation/widgets/w_auth_ba
|
||||
import '../../../../../food_delivery_client.dart';
|
||||
|
||||
class ResetPasswordPage extends StatelessWidget {
|
||||
const ResetPasswordPage({super.key});
|
||||
|
||||
const ResetPasswordPage({super.key, required this.phoneNumber});
|
||||
final String phoneNumber;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return WLayout(
|
||||
|
||||
@@ -1,17 +1,181 @@
|
||||
import 'package:food_delivery_client/core/helpers/time_formatters.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_otp_code_login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/presentation/blocs/verify_otp_bloc/verify_otp_bloc.dart';
|
||||
import 'package:food_delivery_client/feature/auth/presentation/widgets/w_auth_background.dart';
|
||||
import 'package:pinput/pinput.dart';
|
||||
|
||||
import '../../../../../food_delivery_client.dart';
|
||||
|
||||
class VerifyOtpCodePage extends StatelessWidget {
|
||||
const VerifyOtpCodePage({super.key, required this.isRegister});
|
||||
class VerifyOtpCodePage extends StatefulWidget {
|
||||
const VerifyOtpCodePage({super.key, required this.params});
|
||||
|
||||
final bool isRegister;
|
||||
final OtpCodePageParams params;
|
||||
|
||||
@override
|
||||
State<VerifyOtpCodePage> createState() => _VerifyOtpCodePageState();
|
||||
}
|
||||
|
||||
class _VerifyOtpCodePageState extends State<VerifyOtpCodePage> {
|
||||
late TextEditingController _controller;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_controller = TextEditingController();
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_controller.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
final defaultPinTheme = PinTheme(
|
||||
height: 56,
|
||||
width: 56,
|
||||
textStyle: AppTextStyles.size18Medium,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: AppUtils.kBorderRadius8,
|
||||
border: Border.all(color: Color.fromRGBO(234, 239, 243, 1)),
|
||||
color: Color.fromRGBO(234, 234, 243, 1),
|
||||
),
|
||||
);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocProvider(
|
||||
create: (context) => sl<VerifyOtpBloc>()..add(VerifyOtpEvent.started()),
|
||||
child: BlocConsumer<VerifyOtpBloc, VerifyOtpState>(
|
||||
listener: (context, state) {
|
||||
if (state.status.isLoaded()) {
|
||||
if (widget.params.isRegister) {
|
||||
context.push(Routes.register, extra: widget.params.phoneNumber);
|
||||
} else {
|
||||
context.push(
|
||||
Routes.resetPassword,
|
||||
extra: widget.params.phoneNumber,
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
return WLayout(
|
||||
top: false,
|
||||
child: Scaffold(body: WAuthBackground(child: Column())),
|
||||
child: Scaffold(
|
||||
body: WAuthBackground(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
40.verticalSpace,
|
||||
Text(
|
||||
"Enter the 5-digit code sent to you at ${widget.params.phoneNumber}",
|
||||
style: AppTextStyles.size20Medium,
|
||||
),
|
||||
20.verticalSpace,
|
||||
Pinput(
|
||||
length: 5,
|
||||
enabled: true,
|
||||
controller: _controller,
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
autofocus: true,
|
||||
showCursor: true,
|
||||
defaultPinTheme: defaultPinTheme,
|
||||
|
||||
focusedPinTheme: defaultPinTheme.copyWith(
|
||||
decoration: defaultPinTheme.decoration!.copyWith(
|
||||
color: Color.fromRGBO(234, 239, 243, 1),
|
||||
),
|
||||
),
|
||||
submittedPinTheme: defaultPinTheme.copyWith(
|
||||
decoration: defaultPinTheme.decoration!.copyWith(
|
||||
color: Color.fromRGBO(234, 239, 243, 1),
|
||||
),
|
||||
),
|
||||
onChanged: (value) {
|
||||
if (value.length == 5 && state.time > 0) {}
|
||||
},
|
||||
),
|
||||
10.verticalSpace,
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text("You can resend otp after"),
|
||||
|
||||
if (state.time != 0)
|
||||
Text(TimeFormatters.formatMinutesToTime(state.time)),
|
||||
|
||||
if (state.time == 0)
|
||||
state.resendStatus.isLoading()
|
||||
? CircularProgressIndicator.adaptive()
|
||||
: TextButton(
|
||||
onPressed: () {
|
||||
if (widget.params.isRegister) {
|
||||
context.read<VerifyOtpBloc>().add(
|
||||
VerifyOtpEvent.resendRegister(
|
||||
widget.params.phoneNumber,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
context.read<VerifyOtpBloc>().add(
|
||||
VerifyOtpEvent.resendForgot(
|
||||
widget.params.phoneNumber,
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Text("Resend"),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
20.verticalSpace,
|
||||
AppButton(
|
||||
name: context.loc.continue_str,
|
||||
onPressed: () {
|
||||
if (_controller.text.trim().length == 5 &&
|
||||
state.time > 0) {
|
||||
if (widget.params.isRegister) {
|
||||
context.read<VerifyOtpBloc>().add(
|
||||
VerifyOtpEvent.verifyOtpRegister(
|
||||
VerifyOtpCodeParams(
|
||||
phoneNumber: widget.params.phoneNumber,
|
||||
otpCode: _controller.text.trim().substring(
|
||||
0,
|
||||
4,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
context.read<VerifyOtpBloc>().add(
|
||||
VerifyOtpEvent.verifyOtpReset(
|
||||
VerifyOtpCodeParams(
|
||||
phoneNumber: widget.params.phoneNumber,
|
||||
otpCode: _controller.text.trim().substring(
|
||||
0,
|
||||
4,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
backgroundColor: AppColors.c34A853,
|
||||
borderRadius: 15,
|
||||
trailing: SvgPicture.asset(
|
||||
AppIcons.icArrowRightLight,
|
||||
).paddingOnly(left: 8),
|
||||
),
|
||||
],
|
||||
).paddingSymmetric(horizontal: 16),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import 'package:food_delivery_client/core/helpers/formatters.dart';
|
||||
import 'package:food_delivery_client/core/helpers/validator_helpers.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_otp_code_login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_phone_login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/presentation/blocs/verify_phone_bloc/verify_phone_bloc.dart';
|
||||
import 'package:food_delivery_client/feature/auth/presentation/widgets/w_auth_background.dart';
|
||||
|
||||
import '../../../../../food_delivery_client.dart';
|
||||
@@ -31,6 +34,22 @@ class _VerifyPhoneNumberPageState extends State<VerifyPhoneNumberPage> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocProvider(
|
||||
create: (context) => sl<VerifyPhoneBloc>(),
|
||||
child: BlocConsumer<VerifyPhoneBloc, VerifyPhoneState>(
|
||||
listener: (context, state) {
|
||||
if (state.status.isLoaded()) {
|
||||
context.push(
|
||||
Routes.verifyOtpCode,
|
||||
extra: OtpCodePageParams(
|
||||
phoneNumber:
|
||||
"+998${_phoneNumberController.text.trim().replaceAll(" ", "")}",
|
||||
isRegister: widget.isRegister,
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
return Form(
|
||||
key: _formKey,
|
||||
child: WLayout(
|
||||
@@ -72,7 +91,29 @@ class _VerifyPhoneNumberPageState extends State<VerifyPhoneNumberPage> {
|
||||
25.verticalSpace,
|
||||
AppButton(
|
||||
onPressed: () {
|
||||
if (_formKey.currentState?.validate() ?? false) {}
|
||||
if (_formKey.currentState?.validate() ?? false) {
|
||||
|
||||
|
||||
if (widget.isRegister) {
|
||||
context.read<VerifyPhoneBloc>().add(
|
||||
VerifyPhoneEvent.verifyPhoneRegister(
|
||||
VerifyPhoneNumberParams(
|
||||
phoneNumber:
|
||||
"+998${_phoneNumberController.text.trim().replaceAll(" ", "")}",
|
||||
),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
context.read<VerifyPhoneBloc>().add(
|
||||
VerifyPhoneEvent.verifyPhoneReset(
|
||||
VerifyPhoneNumberParams(
|
||||
phoneNumber:
|
||||
"+998${_phoneNumberController.text.trim().replaceAll(" ", "")}",
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
name: context.loc.continue_str,
|
||||
borderRadius: 15,
|
||||
@@ -92,5 +133,8 @@ class _VerifyPhoneNumberPageState extends State<VerifyPhoneNumberPage> {
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
16
pubspec.lock
16
pubspec.lock
@@ -653,6 +653,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.1"
|
||||
pinput:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: pinput
|
||||
sha256: c41f42ee301505ae2375ec32871c985d3717bf8aee845620465b286e0140aad2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.2"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -954,6 +962,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.2"
|
||||
universal_platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: universal_platform
|
||||
sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -23,6 +23,7 @@ dependencies:
|
||||
equatable: ^2.0.7
|
||||
dartz: ^0.10.1
|
||||
mask_text_input_formatter: ^2.9.0
|
||||
pinput: ^5.0.2
|
||||
|
||||
#for notify user about error or success
|
||||
toastification: ^3.0.3
|
||||
|
||||
Reference in New Issue
Block a user