feat: check if valid guid before synchronization

pull/30/head
Frédérik Benoist 2023-10-18 14:23:36 +02:00
parent 7c946c7d27
commit cd3851b2b4
2 changed files with 70 additions and 36 deletions

View File

@ -10,6 +10,7 @@ import 'package:intl/intl.dart';
import 'package:mobdr/config/constant.dart'; import 'package:mobdr/config/constant.dart';
import 'package:mobdr/main.dart'; import 'package:mobdr/main.dart';
import 'package:mobdr/service/shared_prefs.dart'; import 'package:mobdr/service/shared_prefs.dart';
import 'package:mobdr/service/logger_util.dart';
class ApiProvider { class ApiProvider {
final Dio _dio; final Dio _dio;
@ -199,6 +200,30 @@ class ApiProvider {
} }
} }
Future<bool> guidActif() async {
final url =
'${ApiConstants.baseUrl}${ApiConstants.mp4Endpoint}${ApiConstants.restEndpoint}/login/${SharedPrefs().login}/guidactif';
final headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Cookie': 'pguid=${SharedPrefs().guid};',
};
final response = await http.get(Uri.parse(url), headers: headers);
if (response.statusCode == 200) {
final jsonResponse = json.decode(response.body);
if (jsonResponse.containsKey('general') &&
jsonResponse['general']['actif'] == true) {
return true;
}
}
return false;
}
/// Synchronize all informations about store, competitor, calendar /// Synchronize all informations about store, competitor, calendar
Future<String> SyncCalendar() async { Future<String> SyncCalendar() async {
DateTime now = DateTime.now(); DateTime now = DateTime.now();
@ -490,6 +515,9 @@ class ApiProvider {
if (data.containsKey('latest_version')) { if (data.containsKey('latest_version')) {
if (data['latest_version'] != SharedPrefs().appVersion) { if (data['latest_version'] != SharedPrefs().appVersion) {
LoggerUtil.logNStackInfo(
'A new version is available : ${data['latest_version']}');
// The versions differ // The versions differ
return true; return true;
} }

View File

@ -8,6 +8,7 @@ import 'package:mobdr/main.dart';
import 'package:mobdr/events.dart'; import 'package:mobdr/events.dart';
import 'package:mobdr/ui/reusable/reusable_widget.dart'; import 'package:mobdr/ui/reusable/reusable_widget.dart';
import 'package:mobdr/ui/appstore/updatecheck.dart'; import 'package:mobdr/ui/appstore/updatecheck.dart';
import 'package:mobdr/ui/authentication/signin.dart';
import 'package:mobdr/service/shared_prefs.dart'; import 'package:mobdr/service/shared_prefs.dart';
import 'package:mobdr/network/api_provider.dart'; import 'package:mobdr/network/api_provider.dart';
import 'package:mobdr/db/box_visit_photo.dart'; import 'package:mobdr/db/box_visit_photo.dart';
@ -40,7 +41,6 @@ class _SynchronizationPageState extends State<SynchronizationPage>
super.initState(); super.initState();
_apiProvider = ApiProvider(); _apiProvider = ApiProvider();
_animationController = AnimationController( _animationController = AnimationController(
vsync: this, vsync: this,
duration: Duration(seconds: 2), duration: Duration(seconds: 2),
@ -71,14 +71,14 @@ class _SynchronizationPageState extends State<SynchronizationPage>
} else { } else {
_isInternetConnexion = true; _isInternetConnexion = true;
// check if the guid is valid
if (await _apiProvider.guidActif() == true) {
// synchronization start // synchronization start
await startSync(); await startSync();
// Vérifier si une mise à jour est disponible // check is new version is available
bool isUpdateAvailable = await _apiProvider.checkAppVersion(); if (await _apiProvider.checkAppVersion()) {
// Display the update message
if (isUpdateAvailable) {
// Afficher le message de mise à jour
showDialog( showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
@ -109,6 +109,12 @@ class _SynchronizationPageState extends State<SynchronizationPage>
}, },
); );
} }
} else {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SigninPage()),
);
}
} }
} }