mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-23 15:29:13 +00:00
Fixed server updater
This commit is contained in:
parent
4d27774d1d
commit
d6e3d16dff
5 changed files with 50 additions and 10 deletions
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
)
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Add table
Reference in a new issue