feat: check if valid guid before synchronization #30
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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()),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue