mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-05-02 03:24:26 +00:00
Update improvements
This commit is contained in:
parent
e02b598be9
commit
5edb302944
9 changed files with 79 additions and 16 deletions
|
@ -3,5 +3,5 @@ class Urls {
|
|||
static const String gitHub = "https://github.com/JGeek00/adguard-home-manager";
|
||||
static const String customRuleDocs = "https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters";
|
||||
static const String checkLatestReleaseUrl = "https://api.github.com/repos/JGeek00/adguard-home-manager/releases/latest";
|
||||
static const String adGuardHomeLatestRelease = "https://api.github.com/repos/AdGuardTeam/AdGuardHome/releases/latest";
|
||||
static const String adGuardHomeReleasesTags = "https://api.github.com/repos/AdGuardTeam/AdGuardHome/releases/tags";
|
||||
}
|
|
@ -596,5 +596,7 @@
|
|||
"unknownStatus": "Unknown status",
|
||||
"checkingUpdates": "Checking updates...",
|
||||
"checkUpdates": "Check updates",
|
||||
"requestingUpdate": "Requesting update..."
|
||||
"requestingUpdate": "Requesting update...",
|
||||
"autoupdateUnavailable": "Autoupdate unavailable",
|
||||
"autoupdateUnavailableDescription": "The autoupdate service is not available for this server. It could be because the server is running on a Docker container. You have to update your server manually."
|
||||
}
|
|
@ -596,5 +596,7 @@
|
|||
"unknownStatus": "Estado desconocido",
|
||||
"checkingUpdates": "Comprobando actualizaciones...",
|
||||
"checkUpdates": "Comprobar actualizaciones",
|
||||
"requestingUpdate": "Solicitando actualización..."
|
||||
"requestingUpdate": "Solicitando actualización...",
|
||||
"autoupdateUnavailable": "Autoactualización no disponible",
|
||||
"autoupdateUnavailableDescription": "El servicio de actualización automática del servidor no está disponible. Puede ser porque el servidor se esté ejecutando en un contenedor Docker. Tienes que actualizar tu servidor manualmente."
|
||||
}
|
|
@ -485,13 +485,13 @@ class ServersProvider with ChangeNotifier {
|
|||
|
||||
void checkServerUpdatesAvailable(Server server) async {
|
||||
setUpdateAvailableLoadStatus(LoadStatus.loading, true);
|
||||
final result = await Future.wait([
|
||||
checkServerUpdates(server: server),
|
||||
getUpdateChangelog(server: server)
|
||||
]);
|
||||
if (result[0]['result'] == 'success') {
|
||||
UpdateAvailableData data = result[0]['data'];
|
||||
data.changelog = result[1]['body'];
|
||||
final result = await checkServerUpdates(server: server);
|
||||
if (result['result'] == 'success') {
|
||||
UpdateAvailableData data = result['data'];
|
||||
final gitHubResult = await getUpdateChangelog(server: server, releaseTag: data.newVersion);
|
||||
if (gitHubResult['result'] == 'success') {
|
||||
data.changelog = gitHubResult['body'];
|
||||
}
|
||||
data.updateAvailable = data.newVersion.contains('b')
|
||||
? compareBetaVersions(
|
||||
currentVersion: data.currentVersion.replaceAll('v', ''),
|
||||
|
|
|
@ -9,7 +9,7 @@ import 'package:adguard_home_manager/screens/settings/access_settings/access_set
|
|||
import 'package:adguard_home_manager/screens/settings/customization/customization.dart';
|
||||
import 'package:adguard_home_manager/screens/settings/dhcp/dhcp.dart';
|
||||
import 'package:adguard_home_manager/widgets/section_label.dart';
|
||||
import 'package:adguard_home_manager/screens/settings/update.dart';
|
||||
import 'package:adguard_home_manager/screens/settings/update_server/update.dart';
|
||||
import 'package:adguard_home_manager/screens/settings/dns/dns.dart';
|
||||
import 'package:adguard_home_manager/screens/settings/dns_rewrites/dns_rewrites.dart';
|
||||
import 'package:adguard_home_manager/screens/servers/servers.dart';
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
class AutoUpdateUnavailableModal extends StatelessWidget {
|
||||
const AutoUpdateUnavailableModal({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: Column(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.error_rounded,
|
||||
size: 24,
|
||||
color: Theme.of(context).listTileTheme.iconColor
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
AppLocalizations.of(context)!.autoupdateUnavailable,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurface
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
content: Text(
|
||||
AppLocalizations.of(context)!.autoupdateUnavailableDescription,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurface
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
TextButton(
|
||||
onPressed: () => Navigator.pop(context),
|
||||
child: Text(AppLocalizations.of(context)!.close)
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
// ignore_for_file: use_build_context_synchronously
|
||||
|
||||
import 'package:adguard_home_manager/screens/settings/update_server/autoupdate_unavailable.dart';
|
||||
import 'package:animations/animations.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_html/flutter_html.dart';
|
||||
import 'package:html/parser.dart' as html;
|
||||
|
@ -7,8 +9,6 @@ import 'package:markdown/markdown.dart' as md;
|
|||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:adguard_home_manager/functions/compare_versions.dart';
|
||||
|
||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||
import 'package:adguard_home_manager/services/http_requests.dart';
|
||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||
|
@ -24,6 +24,13 @@ class UpdateScreen extends StatelessWidget {
|
|||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||
|
||||
void showAutoUpdateUnavailableModal() {
|
||||
showModal(
|
||||
context: context,
|
||||
builder: (context) => const AutoUpdateUnavailableModal()
|
||||
);
|
||||
}
|
||||
|
||||
void update() async {
|
||||
ProcessModal processModal = ProcessModal(context: context);
|
||||
|
@ -149,7 +156,9 @@ class UpdateScreen extends StatelessWidget {
|
|||
icon: const Icon(Icons.download_rounded),
|
||||
label: Text(AppLocalizations.of(context)!.updateNow),
|
||||
onPressed: serversProvider.updateAvailable.data!.updateAvailable != null && serversProvider.updateAvailable.data!.updateAvailable == true
|
||||
? () => update()
|
||||
? serversProvider.updateAvailable.data!.canAutoupdate == true
|
||||
? () => update()
|
||||
: () => showAutoUpdateUnavailableModal()
|
||||
: null
|
||||
)
|
||||
],
|
||||
|
@ -259,7 +268,9 @@ class UpdateScreen extends StatelessWidget {
|
|||
icon: const Icon(Icons.download_rounded),
|
||||
label: Text(AppLocalizations.of(context)!.updateNow),
|
||||
onPressed: serversProvider.updateAvailable.data!.updateAvailable != null && serversProvider.updateAvailable.data!.updateAvailable == true
|
||||
? () => update()
|
||||
? serversProvider.updateAvailable.data!.canAutoupdate == true
|
||||
? () => update()
|
||||
: () => showAutoUpdateUnavailableModal()
|
||||
: null
|
||||
)
|
||||
],
|
|
@ -2026,10 +2026,11 @@ Future checkServerUpdates({
|
|||
|
||||
Future getUpdateChangelog({
|
||||
required Server server,
|
||||
required String releaseTag
|
||||
}) async {
|
||||
try {
|
||||
HttpClient httpClient = HttpClient();
|
||||
HttpClientRequest request = await httpClient.getUrl(Uri.parse(Urls.adGuardHomeLatestRelease));
|
||||
HttpClientRequest request = await httpClient.getUrl(Uri.parse("${Urls.adGuardHomeReleasesTags}/$releaseTag"));
|
||||
HttpClientResponse response = await request.close();
|
||||
String reply = await response.transform(utf8.decoder).join();
|
||||
httpClient.close();
|
||||
|
|
|
@ -117,6 +117,7 @@ class _ServersListState extends State<ServersList> with SingleTickerProviderStat
|
|||
final serverStatus = await getServerStatus(server);
|
||||
if (serverStatus['result'] == 'success') {
|
||||
serversProvider.setServerStatusData(serverStatus['data']);
|
||||
serversProvider.checkServerUpdatesAvailable(server);
|
||||
serversProvider.setServerStatusLoad(1);
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Add table
Reference in a new issue