feat: refactor code
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
/// موجودیتِ کاربر (نام نمایشی و آواتار برای استفاده در UI).
|
||||
class UserEntity {
|
||||
final int id;
|
||||
final String mobile;
|
||||
final String? firstName;
|
||||
final String? avatar;
|
||||
|
||||
const UserEntity({
|
||||
required this.id,
|
||||
required this.mobile,
|
||||
this.firstName,
|
||||
this.avatar,
|
||||
});
|
||||
|
||||
bool get hasName => firstName != null && firstName!.trim().isNotEmpty;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import '../../../../core/resources/data_state.dart';
|
||||
import '../../../../core/usecase/use_case.dart';
|
||||
import '../entities/user_entity.dart';
|
||||
|
||||
/// قرارداد لایهی دادهی احراز هویت (پیادهسازی در data/repository).
|
||||
abstract class AuthRepository {
|
||||
Future<DataState<String>> loginOtp(String mobile);
|
||||
|
||||
/// بررسی کد؛ توکن را ذخیره کرده و کاربرِ احرازشده را برمیگرداند.
|
||||
Future<DataState<UserEntity>> checkOtp(OtpParams params);
|
||||
|
||||
Future<DataState<UserEntity>> updateProfile(ProfileParams params);
|
||||
|
||||
Future<DataState<String>> logout();
|
||||
|
||||
Future<bool> isLoggedIn();
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import '../../../../core/resources/data_state.dart';
|
||||
import '../../../../core/usecase/use_case.dart';
|
||||
import '../entities/user_entity.dart';
|
||||
import '../repository/auth_repository.dart';
|
||||
|
||||
class CheckOtpUseCase implements UseCase<DataState<UserEntity>, OtpParams> {
|
||||
final AuthRepository repository;
|
||||
CheckOtpUseCase(this.repository);
|
||||
|
||||
@override
|
||||
Future<DataState<UserEntity>> call(OtpParams params) =>
|
||||
repository.checkOtp(params);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import '../../../../core/resources/data_state.dart';
|
||||
import '../../../../core/usecase/use_case.dart';
|
||||
import '../repository/auth_repository.dart';
|
||||
|
||||
class LoginUseCase implements UseCase<DataState<String>, String> {
|
||||
final AuthRepository repository;
|
||||
LoginUseCase(this.repository);
|
||||
|
||||
@override
|
||||
Future<DataState<String>> call(String params) => repository.loginOtp(params);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import '../../../../core/resources/data_state.dart';
|
||||
import '../../../../core/usecase/use_case.dart';
|
||||
import '../repository/auth_repository.dart';
|
||||
|
||||
class LogoutUseCase implements UseCase<DataState<String>, NoParams> {
|
||||
final AuthRepository repository;
|
||||
LogoutUseCase(this.repository);
|
||||
|
||||
@override
|
||||
Future<DataState<String>> call(NoParams params) => repository.logout();
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import '../../../../core/resources/data_state.dart';
|
||||
import '../../../../core/usecase/use_case.dart';
|
||||
import '../entities/user_entity.dart';
|
||||
import '../repository/auth_repository.dart';
|
||||
|
||||
class UpdateProfileUseCase
|
||||
implements UseCase<DataState<UserEntity>, ProfileParams> {
|
||||
final AuthRepository repository;
|
||||
UpdateProfileUseCase(this.repository);
|
||||
|
||||
@override
|
||||
Future<DataState<UserEntity>> call(ProfileParams params) =>
|
||||
repository.updateProfile(params);
|
||||
}
|
||||
Reference in New Issue
Block a user