Fixed server updater

This commit is contained in:
Juan Gilsanz Polo 2023-06-08 16:27:51 +02:00
parent 4d27774d1d
commit d6e3d16dff
5 changed files with 50 additions and 10 deletions

View file

@ -39,7 +39,7 @@ bool compareVersions({
} }
else { // stable else { // stable
final current = currentVersion.replaceAll('v', ''); final current = currentVersion.replaceAll('v', '');
final newV = currentVersion.replaceAll('v', ''); final newV = newVersion.replaceAll('v', '');
final currentSplit = current.split('.').map((e) => int.parse(e)).toList(); final currentSplit = current.split('.').map((e) => int.parse(e)).toList();
final newSplit = newV.split('.').map((e) => int.parse(e)).toList(); final newSplit = newV.split('.').map((e) => int.parse(e)).toList();

View file

@ -1,3 +1,5 @@
import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
@ -155,8 +157,11 @@ class ServersProvider with ChangeNotifier {
} }
} }
void checkServerUpdatesAvailable(Server server) async { void checkServerUpdatesAvailable({
setUpdateAvailableLoadStatus(LoadStatus.loading, true); required Server server,
bool? setValues
}) async {
if (setValues == true) setUpdateAvailableLoadStatus(LoadStatus.loading, true);
final result = await _apiClient!.checkServerUpdates(); final result = await _apiClient!.checkServerUpdates();
if (result['result'] == 'success') { if (result['result'] == 'success') {
UpdateAvailableData data = UpdateAvailableData.fromJson(result['data']); UpdateAvailableData data = UpdateAvailableData.fromJson(result['data']);
@ -170,11 +175,16 @@ class ServersProvider with ChangeNotifier {
newVersion: data.newVersion!, newVersion: data.newVersion!,
) )
: false; : false;
if (setValues == true) {
setUpdateAvailableData(data); setUpdateAvailableData(data);
setUpdateAvailableLoadStatus(LoadStatus.loaded, true);
} }
else { else {
setUpdateAvailableLoadStatus(LoadStatus.error, true); if (data.currentVersion == data.newVersion) setUpdateAvailableData(data);
}
if (setValues == true) setUpdateAvailableLoadStatus(LoadStatus.loaded, true);
}
else {
if (setValues == true) setUpdateAvailableLoadStatus(LoadStatus.error, true);
} }
} }
@ -189,7 +199,10 @@ class ServersProvider with ChangeNotifier {
Future initializateServer(Server server) async { Future initializateServer(Server server) async {
final serverStatus = await _apiClient!.getServerStatus(); final serverStatus = await _apiClient!.getServerStatus();
if (serverStatus['result'] == 'success') { if (serverStatus['result'] == 'success') {
checkServerUpdatesAvailable(server); // Do not await checkServerUpdatesAvailable(
server: server,
setValues: true
); // Do not await
} }
} }
@ -229,4 +242,21 @@ class ServersProvider with ChangeNotifier {
return null; return null;
} }
} }
void recheckPeriodServerUpdated() {
if (_selectedServer != null) {
Server server = _selectedServer!;
Timer.periodic(
const Duration(seconds: 2),
(timer) {
if (_selectedServer != null && _selectedServer == server) {
checkServerUpdatesAvailable(server: server, setValues: false);
}
else {
timer.cancel();
}
}
);
}
}
} }

View file

@ -41,6 +41,7 @@ class UpdateScreen extends StatelessWidget {
if (result['result'] == 'success') { if (result['result'] == 'success') {
serversProvider.clearUpdateAvailable(serversProvider.selectedServer!, serversProvider.updateAvailable.data!.newVersion!); serversProvider.clearUpdateAvailable(serversProvider.selectedServer!, serversProvider.updateAvailable.data!.newVersion!);
serversProvider.recheckPeriodServerUpdated();
showSnacbkar( showSnacbkar(
appConfigProvider: appConfigProvider, appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.requestStartUpdateSuccessful, label: AppLocalizations.of(context)!.requestStartUpdateSuccessful,
@ -79,7 +80,10 @@ class UpdateScreen extends StatelessWidget {
color: Theme.of(context).colorScheme.onSurfaceVariant, color: Theme.of(context).colorScheme.onSurfaceVariant,
), ),
tooltip: AppLocalizations.of(context)!.checkUpdates, tooltip: AppLocalizations.of(context)!.checkUpdates,
onPressed: () => serversProvider.checkServerUpdatesAvailable(serversProvider.selectedServer!) onPressed: () => serversProvider.checkServerUpdatesAvailable(
server: serversProvider.selectedServer!,
setValues: true
)
), ),
], ],
), ),

View file

@ -145,7 +145,10 @@ class _ServersListItemState extends State<ServersListItem> with SingleTickerProv
statusProvider.setServerStatusData( statusProvider.setServerStatusData(
data: serverStatus['data'] data: serverStatus['data']
); );
serversProvider.checkServerUpdatesAvailable(server); serversProvider.checkServerUpdatesAvailable(
server: server,
setValues: true
);
statusProvider.setServerStatusLoad(LoadStatus.loaded); statusProvider.setServerStatusLoad(LoadStatus.loaded);
} }
else { else {

View file

@ -112,7 +112,10 @@ class _ServersTileItemState extends State<ServersTileItem> with SingleTickerProv
statusProvider.setServerStatusData( statusProvider.setServerStatusData(
data: serverStatus['data'] data: serverStatus['data']
); );
serversProvider.checkServerUpdatesAvailable(server); serversProvider.checkServerUpdatesAvailable(
server: server,
setValues: true
);
statusProvider.setServerStatusLoad(LoadStatus.loaded); statusProvider.setServerStatusLoad(LoadStatus.loaded);
} }
else { else {