Files
Ontime/ontime_user_flutter/lib/features/auth/data/auth_api.dart
T
2026-03-11 15:29:37 +07:00

48 lines
1.3 KiB
Dart

import 'package:dio/dio.dart';
import 'package:ontime_user_flutter/data/api/api_client.dart';
import 'package:ontime_user_flutter/features/auth/data/models/user_model.dart';
class AuthApi {
AuthApi(this._client);
final ApiClient _client;
Future<UserModel> login({
String? phone,
String? email,
required String password,
String? fcmToken,
}) async {
final payload = <String, dynamic>{
'password': password,
};
if (phone != null && phone.isNotEmpty) {
payload['no_telepon'] = phone;
}
if (email != null && email.isNotEmpty) {
payload['email'] = email;
}
if (fcmToken != null && fcmToken.isNotEmpty) {
payload['token'] = fcmToken;
}
final Response<dynamic> response =
await _client.raw.post('Pelanggan/login', data: payload);
final data = response.data is Map<String, dynamic>
? response.data as Map<String, dynamic>
: <String, dynamic>{};
if (data['code']?.toString() != '200') {
throw Exception(data['message'] ?? 'Login failed');
}
final List<dynamic> list = data['data'] as List<dynamic>? ?? [];
if (list.isEmpty) {
throw Exception('User data not found in response');
}
return UserModel.fromJson(list.first as Map<String, dynamic>);
}
}