48 lines
1.3 KiB
Dart
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>);
|
|
}
|
|
}
|
|
|