fix(auth): correct resend response type and improve error messages

This commit is contained in:
qzl
2026-02-26 12:13:50 +08:00
parent 11666e6492
commit cc7a70d793
7 changed files with 174 additions and 219 deletions
-6
View File
@@ -40,9 +40,6 @@ abstract class ApiException implements Exception {
}
static String _localizeError(String detail, int? statusCode) {
if (statusCode == 401) {
return '邮箱或密码错误';
}
if (statusCode == 403) {
return '没有权限执行此操作';
}
@@ -55,9 +52,6 @@ abstract class ApiException implements Exception {
if (statusCode != null && statusCode >= 500) {
return '服务器错误,请稍后再试';
}
if (detail.contains('credentials') || detail.contains('password')) {
return '邮箱或密码错误';
}
return detail;
}
}
+2 -2
View File
@@ -25,12 +25,12 @@ class AuthApi {
return AuthResponse.fromJson(response.data);
}
Future<SignupStartResponse> signupResend(SignupResendRequest request) async {
Future<SignupResendResponse> signupResend(SignupResendRequest request) async {
final response = await _client.post(
'$_prefix/signup/resend',
data: request.toJson(),
);
return SignupStartResponse.fromJson(response.data);
return SignupResendResponse.fromJson(response.data);
}
Future<AuthResponse> login(LoginRequest request) async {
@@ -5,7 +5,7 @@ import 'package:social_app/features/auth/data/models/auth_response.dart';
abstract class AuthRepository {
Future<SignupStartResponse> signupStart(SignupStartRequest request);
Future<AuthResponse> signupVerify(SignupVerifyRequest request);
Future<SignupStartResponse> signupResend(SignupResendRequest request);
Future<SignupResendResponse> signupResend(SignupResendRequest request);
Future<AuthResponse> login(LoginRequest request);
Future<AuthResponse> refresh(String refreshToken);
Future<void> logout();
@@ -29,7 +29,7 @@ class AuthRepositoryImpl implements AuthRepository {
}
@override
Future<SignupStartResponse> signupResend(SignupResendRequest request) {
Future<SignupResendResponse> signupResend(SignupResendRequest request) {
return _api.signupResend(request);
}
@@ -54,3 +54,13 @@ class SignupStartResponse {
);
}
}
class SignupResendResponse {
final String message;
const SignupResendResponse({required this.message});
factory SignupResendResponse.fromJson(Map<String, dynamic> json) {
return SignupResendResponse(message: json['message'] as String);
}
}
@@ -170,13 +170,9 @@ void main() {
build: () => cubit,
seed: () => RegisterState(pendingEmail: 'test@example.com'),
setUp: () {
when(() => mockRepository.signupResend(any())).thenAnswer(
(_) async => SignupStartResponse(
status: 'ok',
email: 'test@example.com',
message: 'Code sent',
),
);
when(
() => mockRepository.signupResend(any()),
).thenAnswer((_) async => SignupResendResponse(message: 'Code sent'));
},
act: (c) => c.resendCode(),
expect: () => [