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
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 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:sqflite/sqflite.dart';
@ -155,8 +157,11 @@ class ServersProvider with ChangeNotifier {
}
}
void checkServerUpdatesAvailable(Server server) async {
setUpdateAvailableLoadStatus(LoadStatus.loading, true);
void checkServerUpdatesAvailable({
required Server server,
bool? setValues
}) async {
if (setValues == true) setUpdateAvailableLoadStatus(LoadStatus.loading, true);
final result = await _apiClient!.checkServerUpdates();
if (result['result'] == 'success') {
UpdateAvailableData data = UpdateAvailableData.fromJson(result['data']);
@ -170,11 +175,16 @@ class ServersProvider with ChangeNotifier {
newVersion: data.newVersion!,
)
: false;
setUpdateAvailableData(data);
setUpdateAvailableLoadStatus(LoadStatus.loaded, true);
if (setValues == true) {
setUpdateAvailableData(data);
}
else {
if (data.currentVersion == data.newVersion) setUpdateAvailableData(data);
}
if (setValues == true) setUpdateAvailableLoadStatus(LoadStatus.loaded, true);
}
else {
setUpdateAvailableLoadStatus(LoadStatus.error, true);
if (setValues == true) setUpdateAvailableLoadStatus(LoadStatus.error, true);
}
}
@ -189,7 +199,10 @@ class ServersProvider with ChangeNotifier {
Future initializateServer(Server server) async {
final serverStatus = await _apiClient!.getServerStatus();
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;
}
}
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') {
serversProvider.clearUpdateAvailable(serversProvider.selectedServer!, serversProvider.updateAvailable.data!.newVersion!);
serversProvider.recheckPeriodServerUpdated();
showSnacbkar(
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.requestStartUpdateSuccessful,
@ -79,7 +80,10 @@ class UpdateScreen extends StatelessWidget {
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
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(
data: serverStatus['data']
);
serversProvider.checkServerUpdatesAvailable(server);
serversProvider.checkServerUpdatesAvailable(
server: server,
setValues: true
);
statusProvider.setServerStatusLoad(LoadStatus.loaded);
}
else {

View file

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