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,42 +71,48 @@ class _SynchronizationPageState extends State<SynchronizationPage>
} else { } else {
_isInternetConnexion = true; _isInternetConnexion = true;
// synchronization start // check if the guid is valid
await startSync(); if (await _apiProvider.guidActif() == true) {
// synchronization start
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) { showDialog(
// Afficher le message de mise à jour context: context,
showDialog( builder: (BuildContext context) {
context: context, return AlertDialog(
builder: (BuildContext context) { title: Text("New version available"),
return AlertDialog( content: Text(
title: Text("New version available"), "A new version is available. Would you like to install it?"),
content: Text( actions: [
"A new version is available. Would you like to install it?"), TextButton(
actions: [ child: Text("No"),
TextButton( onPressed: () {
child: Text("No"), Navigator.pop(context); // Closes the dialog box
onPressed: () { },
Navigator.pop(context); // Closes the dialog box ),
}, TextButton(
), child: Text("Yes"),
TextButton( onPressed: () {
child: Text("Yes"), Navigator.pop(context); // Closes the dialog box
onPressed: () { Navigator.push(
Navigator.pop(context); // Closes the dialog box context,
Navigator.push( MaterialPageRoute(
context, builder: (context) => UpdateCheckPage()),
MaterialPageRoute( );
builder: (context) => UpdateCheckPage()), },
); ),
}, ],
), );
], },
); );
}, }
} else {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SigninPage()),
); );
} }
} }