import 'package:e_receipt_mobile/domain/entities/login_user.dart'; import 'package:flutter/foundation.dart'; enum LoginRequiredAction { passwordUpdateRequired } @immutable class LoginState { const LoginState({ this.isLoading = false, this.errorMessage, this.successMessage, this.user, this.requiredAction, this.requiredUserId, }); final bool isLoading; final String? errorMessage; final String? successMessage; final LoginUser? user; final LoginRequiredAction? requiredAction; final String? requiredUserId; LoginState copyWith({ bool? isLoading, String? errorMessage, String? successMessage, LoginUser? user, LoginRequiredAction? requiredAction, String? requiredUserId, bool clearError = false, bool clearSuccess = false, bool clearUser = false, bool clearRequired = false, }) { return LoginState( isLoading: isLoading ?? this.isLoading, errorMessage: clearError ? null : errorMessage ?? this.errorMessage, successMessage: clearSuccess ? null : successMessage ?? this.successMessage, user: clearUser ? null : user ?? this.user, requiredAction: clearRequired ? null : requiredAction ?? this.requiredAction, requiredUserId: clearRequired ? null : requiredUserId ?? this.requiredUserId, ); } @override String toString() { return 'LoginState(isLoading: $isLoading, errorMessage: $errorMessage, successMessage: $successMessage, user: $user, requiredAction: $requiredAction, requiredUserId: $requiredUserId)'; } }