refactor: ApiProvider uses

release/mobdr-v0.0.1
Frédérik Benoist 2023-06-18 12:42:23 +02:00
parent 1ce2765172
commit 946e3528e7
4 changed files with 41 additions and 31 deletions

View File

@ -12,24 +12,27 @@ import 'package:mobdr/main.dart';
import 'package:mobdr/service/shared_prefs.dart'; import 'package:mobdr/service/shared_prefs.dart';
class ApiProvider { class ApiProvider {
Dio dio = Dio(); final Dio _dio;
ApiProvider() : _dio = Dio();
String connErr = 'Please check your internet connection and try again'; String connErr = 'Please check your internet connection and try again';
Future<Response> getCrud(url, body) async { Future<Response> getCrud(url, body) async {
print('url : ' + url.toString()); print('url : ' + url.toString());
try { try {
dio.options.headers['content-Type'] = 'application/json'; _dio.options.headers['content-Type'] = 'application/json';
dio.options.headers['Accept'] = 'application/json'; _dio.options.headers['Accept'] = 'application/json';
dio.options.headers['Cookie'] = "pguid=${SharedPrefs().guid}"; _dio.options.headers['Cookie'] = "pguid=${SharedPrefs().guid}";
dio.options.connectTimeout = Duration(seconds: 5); _dio.options.connectTimeout = Duration(seconds: 5);
dio.options.receiveTimeout = Duration(seconds: 4); _dio.options.receiveTimeout = Duration(seconds: 4);
if (body != null) { if (body != null) {
dio.options.queryParameters = body; _dio.options.queryParameters = body;
} }
return await dio.get(url); return await _dio.get(url);
} on DioError catch (e) { } on DioError catch (e) {
//print(e.toString()+' | '+url.toString()); //print(e.toString()+' | '+url.toString());
if (e.type == DioErrorType.badResponse) { if (e.type == DioErrorType.badResponse) {
@ -47,19 +50,18 @@ class ApiProvider {
throw 'cancel'; throw 'cancel';
} }
throw connErr; throw connErr;
} finally {
//dio.close(); // TODO: Attention pas close
} }
} }
Future<Response> getConnect(url, apiToken) async { Future<Response> getConnect(url, apiToken) async {
print('url : ' + url.toString()); print('url : ' + url.toString());
try { try {
dio.options.headers['content-Type'] = 'application/x-www-form-urlencoded'; _dio.options.headers['content-Type'] =
dio.options.connectTimeout = Duration(seconds: 5); 'application/x-www-form-urlencoded';
dio.options.receiveTimeout = Duration(seconds: 4); _dio.options.connectTimeout = Duration(seconds: 5);
_dio.options.receiveTimeout = Duration(seconds: 4);
return await dio.post(url, cancelToken: apiToken); return await _dio.post(url, cancelToken: apiToken);
} on DioError catch (e) { } on DioError catch (e) {
//print(e.toString()+' | '+url.toString()); //print(e.toString()+' | '+url.toString());
if (e.type == DioErrorType.badResponse) { if (e.type == DioErrorType.badResponse) {
@ -77,8 +79,6 @@ class ApiProvider {
throw 'cancel'; throw 'cancel';
} }
throw connErr; throw connErr;
} finally {
//dio.close(); // TODO: Attention pas close
} }
} }
@ -86,11 +86,12 @@ class ApiProvider {
print('url : ' + url.toString()); print('url : ' + url.toString());
print('postData : ' + data.toString()); print('postData : ' + data.toString());
try { try {
dio.options.headers['content-Type'] = 'application/x-www-form-urlencoded'; _dio.options.headers['content-Type'] =
dio.options.connectTimeout = Duration(seconds: 5); 'application/x-www-form-urlencoded';
dio.options.receiveTimeout = Duration(seconds: 4); _dio.options.connectTimeout = Duration(seconds: 5);
_dio.options.receiveTimeout = Duration(seconds: 4);
return await dio.post(url, data: data, cancelToken: apiToken); return await _dio.post(url, data: data, cancelToken: apiToken);
} on DioError catch (e) { } on DioError catch (e) {
//print(e.toString()+' | '+url.toString()); //print(e.toString()+' | '+url.toString());
if (e.type == DioErrorType.badResponse) { if (e.type == DioErrorType.badResponse) {
@ -108,8 +109,6 @@ class ApiProvider {
throw 'cancel'; throw 'cancel';
} }
throw connErr; throw connErr;
} finally {
//dio.close(); // TODO: Attention pas close
} }
} }
@ -165,7 +164,7 @@ class ApiProvider {
/// get image from url /// get image from url
Response ReponseImg = Response ReponseImg =
await dio.get(ApiConstants.baseUrl + response.data['photo'], await _dio.get(ApiConstants.baseUrl + response.data['photo'],
options: Options( options: Options(
responseType: ResponseType.bytes, responseType: ResponseType.bytes,
contentType: 'application/octet-stream', contentType: 'application/octet-stream',
@ -478,4 +477,8 @@ class ApiProvider {
return "OK"; return "OK";
} }
void close() {
_dio.close();
}
} }

View File

@ -15,7 +15,7 @@ class SigninPage extends StatefulWidget {
class _SigninPageState extends State<SigninPage> { class _SigninPageState extends State<SigninPage> {
bool _obscureText = true; bool _obscureText = true;
IconData _iconVisible = Icons.visibility_off; IconData _iconVisible = Icons.visibility_off;
ApiProvider _apiProvider = ApiProvider(); // TODO: A voir si bien positionné late ApiProvider _apiProvider;
TextEditingController _etUserName = TextEditingController(); TextEditingController _etUserName = TextEditingController();
TextEditingController _etPinCode = TextEditingController(); TextEditingController _etPinCode = TextEditingController();
@ -38,6 +38,9 @@ class _SigninPageState extends State<SigninPage> {
@override @override
void initState() { void initState() {
super.initState();
_apiProvider = ApiProvider();
_etUserName = TextEditingController(text: SharedPrefs().login); _etUserName = TextEditingController(text: SharedPrefs().login);
_etPinCode = TextEditingController(text: ''); _etPinCode = TextEditingController(text: '');
@ -57,14 +60,14 @@ class _SigninPageState extends State<SigninPage> {
// set to french // set to french
SharedPrefs().langage = "fr"; SharedPrefs().langage = "fr";
} }
super.initState();
} }
@override @override
void dispose() { void dispose() {
_etUserName.dispose(); _etUserName.dispose();
_etPinCode.dispose(); _etPinCode.dispose();
_apiProvider.close();
super.dispose(); super.dispose();
} }

View File

@ -29,15 +29,17 @@ class _VerificationPageState extends State<VerificationPage> {
bool _buttonDisabled = true; bool _buttonDisabled = true;
String _securityCode = ''; String _securityCode = '';
ApiProvider _apiProvider = ApiProvider(); // TODO: A voir si bien positionné late ApiProvider _apiProvider;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_apiProvider = ApiProvider();
} }
@override @override
void dispose() { void dispose() {
_apiProvider.close();
super.dispose(); super.dispose();
} }

View File

@ -24,6 +24,7 @@ class _SynchronizationPageState extends State<SynchronizationPage>
late AnimationController _animationController; late AnimationController _animationController;
late Animation<double> _rotationAnimation; late Animation<double> _rotationAnimation;
late ApiProvider _apiProvider;
bool _isSyncing = false; bool _isSyncing = false;
bool _isInternetConnexion = true; bool _isInternetConnexion = true;
@ -37,6 +38,8 @@ class _SynchronizationPageState extends State<SynchronizationPage>
void initState() { void initState() {
super.initState(); super.initState();
_apiProvider = ApiProvider();
_animationController = AnimationController( _animationController = AnimationController(
vsync: this, vsync: this,
duration: Duration(seconds: 2), duration: Duration(seconds: 2),
@ -49,6 +52,7 @@ class _SynchronizationPageState extends State<SynchronizationPage>
@override @override
void dispose() { void dispose() {
_animationController.dispose(); _animationController.dispose();
_apiProvider.close();
super.dispose(); super.dispose();
} }
@ -71,7 +75,7 @@ class _SynchronizationPageState extends State<SynchronizationPage>
} }
} }
Future<void> _uploadVisitPhotos(ApiProvider _apiProvider) async { Future<void> _uploadVisitPhotos() async {
List<VisitPhoto> _visitPhotosList = objectbox.getAllVisitPhotos(); List<VisitPhoto> _visitPhotosList = objectbox.getAllVisitPhotos();
int _totalUploaded = 0; int _totalUploaded = 0;
@ -212,8 +216,6 @@ class _SynchronizationPageState extends State<SynchronizationPage>
_animationController.repeat(); _animationController.repeat();
final ApiProvider _apiProvider = ApiProvider();
// log tracker // log tracker
LoggerUtil.dblog('LOG', 'MOBDR', LoggerUtil.dblog('LOG', 'MOBDR',
'Nombre Photo(s): ' + objectbox.getVisitPhotoCount().toString(), 0); 'Nombre Photo(s): ' + objectbox.getVisitPhotoCount().toString(), 0);
@ -225,7 +227,7 @@ class _SynchronizationPageState extends State<SynchronizationPage>
} }
// upload photo to server // upload photo to server
await _uploadVisitPhotos(_apiProvider); await _uploadVisitPhotos();
// delete visits without a photo! // delete visits without a photo!
await objectbox.DeleteVisitWithoutPhoto(); await objectbox.DeleteVisitWithoutPhoto();