mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-05-04 20:30:35 +00:00
Bug fixes
This commit is contained in:
parent
bc7cb4ccd4
commit
525facc538
9 changed files with 171 additions and 121 deletions
|
@ -72,8 +72,8 @@ class DhcpStatus {
|
|||
|
||||
factory DhcpStatus.fromJson(Map<String, dynamic> json) => DhcpStatus(
|
||||
interfaceName: json["interface_name"],
|
||||
v4: IpVersion.fromJson(json["v4"]),
|
||||
v6: IpVersion.fromJson(json["v6"]),
|
||||
v4: json["v4"] != null ? IpVersion.fromJson(json["v4"]) : null,
|
||||
v6: json["v6"] != null ? IpVersion.fromJson(json["v6"]) : null,
|
||||
leases: List<Lease>.from(json["leases"].map((x) => Lease.fromJson(x))),
|
||||
staticLeases: List<Lease>.from(json["static_leases"].map((x) => Lease.fromJson(x))),
|
||||
enabled: json["enabled"],
|
||||
|
|
|
@ -12,7 +12,7 @@ class DnsInfo {
|
|||
int? cacheSize;
|
||||
int? cacheTtlMin;
|
||||
int? cacheTtlMax;
|
||||
bool cacheOptimistic;
|
||||
bool? cacheOptimistic;
|
||||
bool resolveClients;
|
||||
bool usePrivatePtrResolvers;
|
||||
List<String> localPtrUpstreams;
|
||||
|
|
|
@ -169,12 +169,14 @@ class ServersProvider with ChangeNotifier {
|
|||
|
||||
void checkServerUpdatesAvailable({
|
||||
required Server server,
|
||||
ApiClient? apiClient
|
||||
}) async {
|
||||
final client = apiClient ?? _apiClient;
|
||||
setUpdateAvailableLoadStatus(LoadStatus.loading, true);
|
||||
final result = await _apiClient!.checkServerUpdates();
|
||||
final result = await client!.checkServerUpdates();
|
||||
if (result['result'] == 'success') {
|
||||
UpdateAvailableData data = UpdateAvailableData.fromJson(result['data']);
|
||||
final gitHubResult = await _apiClient!.getUpdateChangelog(releaseTag: data.newVersion ?? data.currentVersion);
|
||||
final gitHubResult = await client!.getUpdateChangelog(releaseTag: data.newVersion ?? data.currentVersion);
|
||||
if (gitHubResult['result'] == 'success') {
|
||||
data.changelog = gitHubResult['body'];
|
||||
}
|
||||
|
@ -186,11 +188,12 @@ class ServersProvider with ChangeNotifier {
|
|||
}
|
||||
}
|
||||
|
||||
Future initializateServer(Server server) async {
|
||||
Future initializateServer(Server server, ApiClient apiClient) async {
|
||||
final serverStatus = await _apiClient!.getServerStatus();
|
||||
if (serverStatus['result'] == 'success') {
|
||||
checkServerUpdatesAvailable( // Do not await
|
||||
server: server,
|
||||
apiClient: apiClient
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -222,8 +225,9 @@ class ServersProvider with ChangeNotifier {
|
|||
|
||||
if (defaultServer != null) {
|
||||
_selectedServer = defaultServer;
|
||||
_apiClient = ApiClient(server: defaultServer);
|
||||
initializateServer(defaultServer);
|
||||
final client = ApiClient(server: defaultServer);
|
||||
_apiClient = client;
|
||||
initializateServer(defaultServer, client);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -304,7 +304,7 @@ class _HomeState extends State<Home> {
|
|||
displacement: 95,
|
||||
onRefresh: () async {
|
||||
final result = await statusProvider.getServerStatus();
|
||||
if (result == false) {
|
||||
if (mounted && result == false) {
|
||||
showSnacbkar(
|
||||
appConfigProvider: appConfigProvider,
|
||||
label: AppLocalizations.of(context)!.serverStatusNotRefreshed,
|
||||
|
|
|
@ -80,7 +80,7 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
newStatus: value,
|
||||
time: time
|
||||
);
|
||||
if (result != null) {
|
||||
if (mounted && result != null) {
|
||||
if (result != false) {
|
||||
appConfigProvider.addLog(result);
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ class _CacheConfigDnsScreenState extends State<CacheConfigDnsScreen> {
|
|||
cacheSizeController.text = dnsProvider.dnsInfo!.cacheSize.toString();
|
||||
overrideMinTtlController.text = dnsProvider.dnsInfo!.cacheTtlMin.toString();
|
||||
overrideMaxTtlController.text = dnsProvider.dnsInfo!.cacheTtlMax.toString();
|
||||
optimisticCache = dnsProvider.dnsInfo!.cacheOptimistic;
|
||||
optimisticCache = dnsProvider.dnsInfo!.cacheOptimistic ?? false;
|
||||
validData = true;
|
||||
super.initState();
|
||||
}
|
||||
|
|
|
@ -130,7 +130,7 @@ class _TopItemsScreenState extends State<TopItemsScreen> {
|
|||
body: RefreshIndicator(
|
||||
onRefresh: () async {
|
||||
final result = await statusProvider.getServerStatus();
|
||||
if (result == false) {
|
||||
if (mounted && result == false) {
|
||||
showSnacbkar(
|
||||
appConfigProvider: appConfigProvider,
|
||||
label: AppLocalizations.of(context)!.serverStatusNotRefreshed,
|
||||
|
|
|
@ -20,6 +20,7 @@ import 'package:adguard_home_manager/models/clients.dart';
|
|||
import 'package:adguard_home_manager/models/clients_allowed_blocked.dart';
|
||||
import 'package:adguard_home_manager/models/server.dart';
|
||||
import 'package:adguard_home_manager/constants/urls.dart';
|
||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
|
||||
|
||||
Future<Map<String, dynamic>> apiRequest({
|
||||
|
@ -270,6 +271,7 @@ class ApiClient {
|
|||
});
|
||||
|
||||
Future getServerVersion() async {
|
||||
try {
|
||||
final result = await apiRequest(
|
||||
server: server,
|
||||
method: 'get',
|
||||
|
@ -300,9 +302,22 @@ class ApiClient {
|
|||
else {
|
||||
return result;
|
||||
}
|
||||
} catch (e) {
|
||||
Sentry.captureException(e);
|
||||
return {
|
||||
'result': 'error',
|
||||
'log': AppLog(
|
||||
type: 'get_server_version',
|
||||
dateTime: DateTime.now(),
|
||||
message: 'error_code_not_expected',
|
||||
resBody: e.toString()
|
||||
)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Future getServerStatus() async {
|
||||
try {
|
||||
final result = await Future.wait([
|
||||
apiRequest(server: server, method: 'get', urlPath: '/stats', type: 'server_status'),
|
||||
apiRequest(server: server, method: 'get', urlPath: '/status', type: 'server_status'),
|
||||
|
@ -370,6 +385,18 @@ class ApiClient {
|
|||
)
|
||||
};
|
||||
}
|
||||
} catch (e) {
|
||||
Sentry.captureException(e);
|
||||
return {
|
||||
'result': 'error',
|
||||
'log': AppLog(
|
||||
type: 'get_server_status',
|
||||
dateTime: DateTime.now(),
|
||||
message: 'no_response',
|
||||
resBody: e.toString()
|
||||
)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Future updateFiltering({
|
||||
|
@ -2004,6 +2031,7 @@ class ApiClient {
|
|||
}
|
||||
|
||||
Future checkServerUpdates() async {
|
||||
try {
|
||||
final result = await Future.wait([
|
||||
apiRequest(
|
||||
urlPath: '/version.json',
|
||||
|
@ -2058,6 +2086,18 @@ class ApiClient {
|
|||
)
|
||||
};
|
||||
}
|
||||
} catch (e) {
|
||||
Sentry.captureException(e);
|
||||
return {
|
||||
'result': 'error',
|
||||
'log': AppLog(
|
||||
type: 'get_filtering_status',
|
||||
dateTime: DateTime.now(),
|
||||
message: 'no_response',
|
||||
resBody: e.toString(),
|
||||
)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Future getUpdateChangelog({
|
||||
|
|
|
@ -256,6 +256,8 @@ class _AddServerModalState extends State<AddServerModal> {
|
|||
? await loginHA(serverObj)
|
||||
: await login(serverObj);
|
||||
|
||||
if (!mounted) return;
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
if (serverObj.user != null && serverObj.password != null) {
|
||||
serverObj.authToken = encodeBase64UserPass(serverObj.user!, serverObj.password!);
|
||||
|
@ -268,6 +270,8 @@ class _AddServerModalState extends State<AddServerModal> {
|
|||
|
||||
final serverStatus = await apiClient.getServerStatus();
|
||||
|
||||
if (!mounted) return;
|
||||
|
||||
if (serverStatus['result'] == 'success') {
|
||||
statusProvider.setServerStatusData(
|
||||
data: serverStatus['data']
|
||||
|
@ -380,12 +384,14 @@ class _AddServerModalState extends State<AddServerModal> {
|
|||
? await loginHA(serverObj)
|
||||
: await login(serverObj);
|
||||
|
||||
if (!mounted) return;
|
||||
if (result['result'] == 'success') {
|
||||
if (serverObj.user != null && serverObj.password != null) {
|
||||
serverObj.authToken = encodeBase64UserPass(serverObj.user!, serverObj.password!);
|
||||
}
|
||||
final serverSaved = await serversProvider.editServer(serverObj);
|
||||
|
||||
if (!mounted) return;
|
||||
if (serverSaved == null) {
|
||||
final ApiClient apiClient = ApiClient(server: serverObj);
|
||||
final version = await apiClient.getServerVersion();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue