connect with backend

This commit is contained in:
Abhishek Mali
2025-12-03 11:57:05 +05:30
parent c6b4c66c10
commit 3bf27cc29d
48 changed files with 2618 additions and 126 deletions

View File

@@ -1,16 +1,16 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import '../config/api_config.dart';
import 'dio_client.dart';
class AuthService {
final Dio _dio = Dio(BaseOptions(
baseUrl: ApiConfig.baseUrl,
connectTimeout: const Duration(seconds: 15),
receiveTimeout: const Duration(seconds: 15),
// You can add headers here if needed:
// headers: {'Accept': 'application/json'},
));
late final Dio _dio;
/// Calls /api/user/login with login_id and password
AuthService(BuildContext context) {
_dio = DioClient.getInstance(context);
}
/// Login API
Future<Map<String, dynamic>> login(String loginId, String password) async {
try {
final response = await _dio.post('/user/login', data: {
@@ -18,45 +18,44 @@ class AuthService {
'password': password,
});
// Ensure we return a Map<String, dynamic>
if (response.data is Map) {
return Map<String, dynamic>.from(response.data);
} else {
return {
'success': false,
'message': 'Invalid response from server',
};
}
return Map<String, dynamic>.from(response.data);
} on DioException catch (e) {
// Try to extract message from server response
dynamic respData = e.response?.data;
String message = 'Login failed';
if (respData is Map && respData['message'] != null) {
message = respData['message'].toString();
} else if (e.message != null) {
message = e.message!;
}
final data = e.response?.data;
return {
'success': false,
'message': message,
'message': data is Map && data['message'] != null
? data['message']
: e.message ?? 'Login failed'
};
} catch (e) {
return {
'success': false,
'message': e.toString(),
};
}
}
/// Optional: logout (if you have logout endpoint)
Future<Map<String, dynamic>> logout(String token) async {
try {
final Dio dio = Dio(BaseOptions(baseUrl: ApiConfig.baseUrl));
dio.options.headers['Authorization'] = 'Bearer $token';
final response = await dio.post('/user/logout');
return Map<String, dynamic>.from(response.data ?? {'success': true});
} catch (e) {
return {'success': false, 'message': e.toString()};
}
}
/// Logout API
Future<Map<String, dynamic>> logout() async {
try {
final response = await _dio.post('/user/logout');
return Map<String, dynamic>.from(response.data);
} catch (e) {
return {'success': false, 'message': e.toString()};
}
}
/// Refresh token
Future<Map<String, dynamic>> refreshToken(String oldToken) async {
try {
final response = await _dio.post(
'/user/refresh',
options: Options(headers: {
'Authorization': 'Bearer $oldToken',
}),
);
return Map<String, dynamic>.from(response.data);
} on DioException catch (e) {
final msg = e.response?.data?['message'] ?? 'Refresh failed';
return {'success': false, 'message': msg};
}
}
}