mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-24 15:56:05 +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
|
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();
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -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
|
||||||
|
)
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Reference in a new issue