From 946e3528e7dfc50c8151617485aa63a1d644c7fd Mon Sep 17 00:00:00 2001 From: Frederik Benoist Date: Sun, 18 Jun 2023 12:42:23 +0200 Subject: [PATCH] refactor: ApiProvider uses --- lib/network/api_provider.dart | 49 +++++++++++++------------ lib/ui/authentication/signin.dart | 9 +++-- lib/ui/authentication/verification.dart | 4 +- lib/ui/sync/tab_synchro.dart | 10 +++-- 4 files changed, 41 insertions(+), 31 deletions(-) diff --git a/lib/network/api_provider.dart b/lib/network/api_provider.dart index 37b9c0d..47278ed 100644 --- a/lib/network/api_provider.dart +++ b/lib/network/api_provider.dart @@ -12,24 +12,27 @@ import 'package:mobdr/main.dart'; import 'package:mobdr/service/shared_prefs.dart'; class ApiProvider { - Dio dio = Dio(); + final Dio _dio; + + ApiProvider() : _dio = Dio(); + String connErr = 'Please check your internet connection and try again'; Future getCrud(url, body) async { print('url : ' + url.toString()); try { - dio.options.headers['content-Type'] = 'application/json'; - dio.options.headers['Accept'] = 'application/json'; - dio.options.headers['Cookie'] = "pguid=${SharedPrefs().guid}"; + _dio.options.headers['content-Type'] = 'application/json'; + _dio.options.headers['Accept'] = 'application/json'; + _dio.options.headers['Cookie'] = "pguid=${SharedPrefs().guid}"; - dio.options.connectTimeout = Duration(seconds: 5); - dio.options.receiveTimeout = Duration(seconds: 4); + _dio.options.connectTimeout = Duration(seconds: 5); + _dio.options.receiveTimeout = Duration(seconds: 4); 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) { //print(e.toString()+' | '+url.toString()); if (e.type == DioErrorType.badResponse) { @@ -47,19 +50,18 @@ class ApiProvider { throw 'cancel'; } throw connErr; - } finally { - //dio.close(); // TODO: Attention pas close } } Future getConnect(url, apiToken) async { print('url : ' + url.toString()); try { - dio.options.headers['content-Type'] = 'application/x-www-form-urlencoded'; - dio.options.connectTimeout = Duration(seconds: 5); - dio.options.receiveTimeout = Duration(seconds: 4); + _dio.options.headers['content-Type'] = + 'application/x-www-form-urlencoded'; + _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) { //print(e.toString()+' | '+url.toString()); if (e.type == DioErrorType.badResponse) { @@ -77,8 +79,6 @@ class ApiProvider { throw 'cancel'; } throw connErr; - } finally { - //dio.close(); // TODO: Attention pas close } } @@ -86,11 +86,12 @@ class ApiProvider { print('url : ' + url.toString()); print('postData : ' + data.toString()); try { - dio.options.headers['content-Type'] = 'application/x-www-form-urlencoded'; - dio.options.connectTimeout = Duration(seconds: 5); - dio.options.receiveTimeout = Duration(seconds: 4); + _dio.options.headers['content-Type'] = + 'application/x-www-form-urlencoded'; + _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) { //print(e.toString()+' | '+url.toString()); if (e.type == DioErrorType.badResponse) { @@ -108,8 +109,6 @@ class ApiProvider { throw 'cancel'; } throw connErr; - } finally { - //dio.close(); // TODO: Attention pas close } } @@ -165,7 +164,7 @@ class ApiProvider { /// get image from url Response ReponseImg = - await dio.get(ApiConstants.baseUrl + response.data['photo'], + await _dio.get(ApiConstants.baseUrl + response.data['photo'], options: Options( responseType: ResponseType.bytes, contentType: 'application/octet-stream', @@ -478,4 +477,8 @@ class ApiProvider { return "OK"; } + + void close() { + _dio.close(); + } } diff --git a/lib/ui/authentication/signin.dart b/lib/ui/authentication/signin.dart index af6efdc..44a14f8 100644 --- a/lib/ui/authentication/signin.dart +++ b/lib/ui/authentication/signin.dart @@ -15,7 +15,7 @@ class SigninPage extends StatefulWidget { class _SigninPageState extends State { bool _obscureText = true; IconData _iconVisible = Icons.visibility_off; - ApiProvider _apiProvider = ApiProvider(); // TODO: A voir si bien positionné + late ApiProvider _apiProvider; TextEditingController _etUserName = TextEditingController(); TextEditingController _etPinCode = TextEditingController(); @@ -38,6 +38,9 @@ class _SigninPageState extends State { @override void initState() { + super.initState(); + + _apiProvider = ApiProvider(); _etUserName = TextEditingController(text: SharedPrefs().login); _etPinCode = TextEditingController(text: ''); @@ -57,14 +60,14 @@ class _SigninPageState extends State { // set to french SharedPrefs().langage = "fr"; } - - super.initState(); } @override void dispose() { _etUserName.dispose(); _etPinCode.dispose(); + _apiProvider.close(); + super.dispose(); } diff --git a/lib/ui/authentication/verification.dart b/lib/ui/authentication/verification.dart index e94e67c..cc8e95a 100644 --- a/lib/ui/authentication/verification.dart +++ b/lib/ui/authentication/verification.dart @@ -29,15 +29,17 @@ class _VerificationPageState extends State { bool _buttonDisabled = true; String _securityCode = ''; - ApiProvider _apiProvider = ApiProvider(); // TODO: A voir si bien positionné + late ApiProvider _apiProvider; @override void initState() { super.initState(); + _apiProvider = ApiProvider(); } @override void dispose() { + _apiProvider.close(); super.dispose(); } diff --git a/lib/ui/sync/tab_synchro.dart b/lib/ui/sync/tab_synchro.dart index 8200b7b..252a931 100644 --- a/lib/ui/sync/tab_synchro.dart +++ b/lib/ui/sync/tab_synchro.dart @@ -24,6 +24,7 @@ class _SynchronizationPageState extends State late AnimationController _animationController; late Animation _rotationAnimation; + late ApiProvider _apiProvider; bool _isSyncing = false; bool _isInternetConnexion = true; @@ -37,6 +38,8 @@ class _SynchronizationPageState extends State void initState() { super.initState(); + _apiProvider = ApiProvider(); + _animationController = AnimationController( vsync: this, duration: Duration(seconds: 2), @@ -49,6 +52,7 @@ class _SynchronizationPageState extends State @override void dispose() { _animationController.dispose(); + _apiProvider.close(); super.dispose(); } @@ -71,7 +75,7 @@ class _SynchronizationPageState extends State } } - Future _uploadVisitPhotos(ApiProvider _apiProvider) async { + Future _uploadVisitPhotos() async { List _visitPhotosList = objectbox.getAllVisitPhotos(); int _totalUploaded = 0; @@ -212,8 +216,6 @@ class _SynchronizationPageState extends State _animationController.repeat(); - final ApiProvider _apiProvider = ApiProvider(); - // log tracker LoggerUtil.dblog('LOG', 'MOBDR', 'Nombre Photo(s): ' + objectbox.getVisitPhotoCount().toString(), 0); @@ -225,7 +227,7 @@ class _SynchronizationPageState extends State } // upload photo to server - await _uploadVisitPhotos(_apiProvider); + await _uploadVisitPhotos(); // delete visits without a photo! await objectbox.DeleteVisitWithoutPhoto();