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';
class ApiProvider {
Dio dio = Dio();
final Dio _dio;
ApiProvider() : _dio = Dio();
String connErr = 'Please check your internet connection and try again';
Future<Response> 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<Response> 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();
}
}

View File

@ -15,7 +15,7 @@ class SigninPage extends StatefulWidget {
class _SigninPageState extends State<SigninPage> {
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<SigninPage> {
@override
void initState() {
super.initState();
_apiProvider = ApiProvider();
_etUserName = TextEditingController(text: SharedPrefs().login);
_etPinCode = TextEditingController(text: '');
@ -57,14 +60,14 @@ class _SigninPageState extends State<SigninPage> {
// set to french
SharedPrefs().langage = "fr";
}
super.initState();
}
@override
void dispose() {
_etUserName.dispose();
_etPinCode.dispose();
_apiProvider.close();
super.dispose();
}

View File

@ -29,15 +29,17 @@ class _VerificationPageState extends State<VerificationPage> {
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();
}

View File

@ -24,6 +24,7 @@ class _SynchronizationPageState extends State<SynchronizationPage>
late AnimationController _animationController;
late Animation<double> _rotationAnimation;
late ApiProvider _apiProvider;
bool _isSyncing = false;
bool _isInternetConnexion = true;
@ -37,6 +38,8 @@ class _SynchronizationPageState extends State<SynchronizationPage>
void initState() {
super.initState();
_apiProvider = ApiProvider();
_animationController = AnimationController(
vsync: this,
duration: Duration(seconds: 2),
@ -49,6 +52,7 @@ class _SynchronizationPageState extends State<SynchronizationPage>
@override
void dispose() {
_animationController.dispose();
_apiProvider.close();
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();
int _totalUploaded = 0;
@ -212,8 +216,6 @@ class _SynchronizationPageState extends State<SynchronizationPage>
_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<SynchronizationPage>
}
// upload photo to server
await _uploadVisitPhotos(_apiProvider);
await _uploadVisitPhotos();
// delete visits without a photo!
await objectbox.DeleteVisitWithoutPhoto();