mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-05-14 05:52:51 +00:00
Extracted server status stuff to a separate provider
This commit is contained in:
parent
0271c704a7
commit
4a2d78e8cf
30 changed files with 585 additions and 405 deletions
|
@ -4,6 +4,8 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|||
|
||||
import 'package:adguard_home_manager/screens/servers/servers.dart';
|
||||
|
||||
import 'package:adguard_home_manager/constants/enums.dart';
|
||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||
import 'package:adguard_home_manager/functions/open_url.dart';
|
||||
import 'package:adguard_home_manager/models/server.dart';
|
||||
import 'package:adguard_home_manager/providers/servers_provider.dart';
|
||||
|
@ -20,6 +22,7 @@ class HomeAppBar extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
final statusProvider = Provider.of<StatusProvider>(context);
|
||||
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||
|
||||
final Server? server = serversProvider.selectedServer;
|
||||
|
@ -38,14 +41,14 @@ class HomeAppBar extends StatelessWidget {
|
|||
centerTitle: false,
|
||||
forceElevated: innerBoxScrolled,
|
||||
leading: Icon(
|
||||
serversProvider.selectedServer != null && serversProvider.serverStatus.data != null
|
||||
? serversProvider.serverStatus.data!.generalEnabled == true
|
||||
serversProvider.selectedServer != null && statusProvider.serverStatus != null
|
||||
? statusProvider.serverStatus!.generalEnabled == true
|
||||
? Icons.gpp_good_rounded
|
||||
: Icons.gpp_bad_rounded
|
||||
: Icons.shield,
|
||||
size: 30,
|
||||
color: serversProvider.selectedServer != null && serversProvider.serverStatus.data != null
|
||||
? serversProvider.serverStatus.data!.generalEnabled == true
|
||||
color: serversProvider.selectedServer != null && statusProvider.serverStatus != null
|
||||
? statusProvider.serverStatus!.generalEnabled == true
|
||||
? appConfigProvider.useThemeColorForStatus
|
||||
? Theme.of(context).colorScheme.primary
|
||||
: Colors.green
|
||||
|
@ -95,7 +98,7 @@ class HomeAppBar extends StatelessWidget {
|
|||
],
|
||||
),
|
||||
),
|
||||
if (serversProvider.selectedServer != null && serversProvider.serverStatus.loadStatus == 1) PopupMenuItem(
|
||||
if (serversProvider.selectedServer != null && statusProvider.loadStatus == LoadStatus.loaded) PopupMenuItem(
|
||||
onTap: () => openUrl("${server!.connectionMethod}://${server.domain}${server.path ?? ""}${server.port != null ? ':${server.port}' : ""}"),
|
||||
child: Row(
|
||||
children: [
|
||||
|
|
|
@ -7,7 +7,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|||
import 'package:adguard_home_manager/widgets/combined_line_chart.dart';
|
||||
|
||||
import 'package:adguard_home_manager/functions/number_format.dart';
|
||||
import 'package:adguard_home_manager/providers/servers_provider.dart';
|
||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||
|
||||
class CombinedChartData {
|
||||
|
@ -51,56 +51,56 @@ class CombinedHomeChart extends StatelessWidget {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
final statusProvider = Provider.of<StatusProvider>(context);
|
||||
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||
|
||||
final width = MediaQuery.of(context).size.width;
|
||||
|
||||
if (serversProvider.serverStatus.data != null) {
|
||||
if (statusProvider.serverStatus != null) {
|
||||
final data = CombinedChartData(
|
||||
totalQueries: CombinedChartItem(
|
||||
label: AppLocalizations.of(context)!.dnsQueries,
|
||||
color: Colors.blue,
|
||||
data: serversProvider.serverStatus.data!.stats.dnsQueries
|
||||
data: statusProvider.serverStatus!.stats.dnsQueries
|
||||
),
|
||||
blockedFilters: appConfigProvider.hideZeroValues == true
|
||||
? removeZero(serversProvider.serverStatus.data!.stats.blockedFiltering) != null
|
||||
? removeZero(statusProvider.serverStatus!.stats.blockedFiltering) != null
|
||||
? CombinedChartItem(
|
||||
label: AppLocalizations.of(context)!.blockedFilters,
|
||||
color: Colors.red,
|
||||
data: serversProvider.serverStatus.data!.stats.blockedFiltering
|
||||
data: statusProvider.serverStatus!.stats.blockedFiltering
|
||||
)
|
||||
: null
|
||||
: CombinedChartItem(
|
||||
label: AppLocalizations.of(context)!.blockedFilters,
|
||||
color: Colors.red,
|
||||
data: serversProvider.serverStatus.data!.stats.blockedFiltering
|
||||
data: statusProvider.serverStatus!.stats.blockedFiltering
|
||||
) ,
|
||||
replacedSafeBrowsing: appConfigProvider.hideZeroValues == true
|
||||
? removeZero(serversProvider.serverStatus.data!.stats.replacedSafebrowsing) != null
|
||||
? removeZero(statusProvider.serverStatus!.stats.replacedSafebrowsing) != null
|
||||
? CombinedChartItem(
|
||||
label: AppLocalizations.of(context)!.malwarePhisingBlocked,
|
||||
color: Colors.green,
|
||||
data: serversProvider.serverStatus.data!.stats.replacedSafebrowsing
|
||||
data: statusProvider.serverStatus!.stats.replacedSafebrowsing
|
||||
)
|
||||
: null
|
||||
: CombinedChartItem(
|
||||
label: AppLocalizations.of(context)!.malwarePhisingBlocked,
|
||||
color: Colors.green,
|
||||
data: serversProvider.serverStatus.data!.stats.replacedSafebrowsing
|
||||
data: statusProvider.serverStatus!.stats.replacedSafebrowsing
|
||||
) ,
|
||||
replacedParental: appConfigProvider.hideZeroValues == true
|
||||
? removeZero(serversProvider.serverStatus.data!.stats.replacedParental) != null
|
||||
? removeZero(statusProvider.serverStatus!.stats.replacedParental) != null
|
||||
? CombinedChartItem(
|
||||
label: AppLocalizations.of(context)!.blockedAdultWebsites,
|
||||
color: Colors.orange,
|
||||
data: serversProvider.serverStatus.data!.stats.replacedParental
|
||||
data: statusProvider.serverStatus!.stats.replacedParental
|
||||
)
|
||||
: null
|
||||
: CombinedChartItem(
|
||||
label: AppLocalizations.of(context)!.blockedAdultWebsites,
|
||||
color: Colors.orange,
|
||||
data: serversProvider.serverStatus.data!.stats.replacedParental
|
||||
data: statusProvider.serverStatus!.stats.replacedParental
|
||||
) ,
|
||||
);
|
||||
|
||||
|
@ -184,29 +184,29 @@ class CombinedHomeChart extends StatelessWidget {
|
|||
legend(
|
||||
label: data.totalQueries.label,
|
||||
color: data.totalQueries.color,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numDnsQueries, Platform.localeName),
|
||||
secondaryValue: "${doubleFormat(serversProvider.serverStatus.data!.stats.avgProcessingTime*1000, Platform.localeName)} ms",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numDnsQueries, Platform.localeName),
|
||||
secondaryValue: "${doubleFormat(statusProvider.serverStatus!.stats.avgProcessingTime*1000, Platform.localeName)} ms",
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
if (data.blockedFilters != null) legend(
|
||||
label: data.blockedFilters!.label,
|
||||
color: data.blockedFilters!.color,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numBlockedFiltering, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numBlockedFiltering/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numBlockedFiltering, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numBlockedFiltering/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
if (data.replacedSafeBrowsing != null) legend(
|
||||
label: data.replacedSafeBrowsing!.label,
|
||||
color: data.replacedSafeBrowsing!.color,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numReplacedSafebrowsing, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numReplacedSafebrowsing/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numReplacedSafebrowsing, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numReplacedSafebrowsing/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
if (data.replacedParental != null) legend(
|
||||
label: data.replacedParental!.label,
|
||||
color: data.replacedParental!.color,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numReplacedParental, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numReplacedParental/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numReplacedParental, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numReplacedParental/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
),
|
||||
],
|
||||
),
|
||||
|
@ -247,29 +247,29 @@ class CombinedHomeChart extends StatelessWidget {
|
|||
legend(
|
||||
label: data.totalQueries.label,
|
||||
color: data.totalQueries.color,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numDnsQueries, Platform.localeName),
|
||||
secondaryValue: "${doubleFormat(serversProvider.serverStatus.data!.stats.avgProcessingTime*1000, Platform.localeName)} ms",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numDnsQueries, Platform.localeName),
|
||||
secondaryValue: "${doubleFormat(statusProvider.serverStatus!.stats.avgProcessingTime*1000, Platform.localeName)} ms",
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
if (data.blockedFilters != null) legend(
|
||||
label: data.blockedFilters!.label,
|
||||
color: data.blockedFilters!.color,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numBlockedFiltering, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numBlockedFiltering/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numBlockedFiltering, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numBlockedFiltering/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
if (data.replacedSafeBrowsing != null) legend(
|
||||
label: data.replacedSafeBrowsing!.label,
|
||||
color: data.replacedSafeBrowsing!.color,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numReplacedSafebrowsing, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numReplacedSafebrowsing/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numReplacedSafebrowsing, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numReplacedSafebrowsing/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
if (data.replacedParental != null) legend(
|
||||
label: data.replacedParental!.label,
|
||||
color: data.replacedParental!.color,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numReplacedParental, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numReplacedParental/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numReplacedParental, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numReplacedParental/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
],
|
||||
|
|
|
@ -3,14 +3,15 @@ import 'package:flutter/material.dart';
|
|||
|
||||
import 'package:adguard_home_manager/screens/home/management_modal.dart';
|
||||
|
||||
import 'package:adguard_home_manager/providers/servers_provider.dart';
|
||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||
import 'package:adguard_home_manager/constants/enums.dart';
|
||||
|
||||
class HomeFab extends StatelessWidget {
|
||||
const HomeFab({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
final statusProvider = Provider.of<StatusProvider>(context);
|
||||
|
||||
final width = MediaQuery.of(context).size.width;
|
||||
|
||||
|
@ -35,7 +36,7 @@ class HomeFab extends StatelessWidget {
|
|||
}
|
||||
}
|
||||
|
||||
return serversProvider.serverStatus.loadStatus == 1
|
||||
return statusProvider.loadStatus == LoadStatus.loaded
|
||||
? FloatingActionButton(
|
||||
onPressed: openManagementBottomSheet,
|
||||
child: const Icon(Icons.shield_rounded),
|
||||
|
|
|
@ -15,6 +15,8 @@ import 'package:adguard_home_manager/screens/home/top_items.dart';
|
|||
import 'package:adguard_home_manager/screens/home/chart.dart';
|
||||
|
||||
import 'package:adguard_home_manager/functions/number_format.dart';
|
||||
import 'package:adguard_home_manager/constants/enums.dart';
|
||||
import 'package:adguard_home_manager/providers/status_provider.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';
|
||||
|
@ -55,6 +57,7 @@ class _HomeState extends State<Home> {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
final statusProvider = Provider.of<StatusProvider>(context);
|
||||
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||
|
||||
final width = MediaQuery.of(context).size.width;
|
||||
|
@ -109,7 +112,7 @@ class _HomeState extends State<Home> {
|
|||
|
||||
List<Widget> listItems() {
|
||||
return [
|
||||
ServerStatus(serverStatus: serversProvider.serverStatus.data!),
|
||||
ServerStatusWidget(serverStatus: statusProvider.serverStatus!),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
child: Divider(
|
||||
|
@ -124,40 +127,40 @@ class _HomeState extends State<Home> {
|
|||
FractionallySizedBox(
|
||||
widthFactor: width > 700 ? 0.5 : 1,
|
||||
child: HomeChart(
|
||||
data: serversProvider.serverStatus.data!.stats.dnsQueries,
|
||||
data: statusProvider.serverStatus!.stats.dnsQueries,
|
||||
label: AppLocalizations.of(context)!.dnsQueries,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numDnsQueries, Platform.localeName),
|
||||
secondaryValue: "${doubleFormat(serversProvider.serverStatus.data!.stats.avgProcessingTime*1000, Platform.localeName)} ms",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numDnsQueries, Platform.localeName),
|
||||
secondaryValue: "${doubleFormat(statusProvider.serverStatus!.stats.avgProcessingTime*1000, Platform.localeName)} ms",
|
||||
color: Colors.blue,
|
||||
),
|
||||
),
|
||||
FractionallySizedBox(
|
||||
widthFactor: width > 700 ? 0.5 : 1,
|
||||
child: HomeChart(
|
||||
data: serversProvider.serverStatus.data!.stats.blockedFiltering,
|
||||
data: statusProvider.serverStatus!.stats.blockedFiltering,
|
||||
label: AppLocalizations.of(context)!.blockedFilters,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numBlockedFiltering, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numBlockedFiltering/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numBlockedFiltering, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numBlockedFiltering/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
color: Colors.red,
|
||||
),
|
||||
),
|
||||
FractionallySizedBox(
|
||||
widthFactor: width > 700 ? 0.5 : 1,
|
||||
child: HomeChart(
|
||||
data: serversProvider.serverStatus.data!.stats.replacedSafebrowsing,
|
||||
data: statusProvider.serverStatus!.stats.replacedSafebrowsing,
|
||||
label: AppLocalizations.of(context)!.malwarePhisingBlocked,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numReplacedSafebrowsing, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numReplacedSafebrowsing/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numReplacedSafebrowsing, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numReplacedSafebrowsing/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
color: Colors.green,
|
||||
),
|
||||
),
|
||||
FractionallySizedBox(
|
||||
widthFactor: width > 700 ? 0.5 : 1,
|
||||
child: HomeChart(
|
||||
data: serversProvider.serverStatus.data!.stats.replacedParental,
|
||||
data: statusProvider.serverStatus!.stats.replacedParental,
|
||||
label: AppLocalizations.of(context)!.blockedAdultWebsites,
|
||||
primaryValue: intFormat(serversProvider.serverStatus.data!.stats.numReplacedParental, Platform.localeName),
|
||||
secondaryValue: "${serversProvider.serverStatus.data!.stats.numDnsQueries > 0 ? doubleFormat((serversProvider.serverStatus.data!.stats.numReplacedParental/serversProvider.serverStatus.data!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
primaryValue: intFormat(statusProvider.serverStatus!.stats.numReplacedParental, Platform.localeName),
|
||||
secondaryValue: "${statusProvider.serverStatus!.stats.numDnsQueries > 0 ? doubleFormat((statusProvider.serverStatus!.stats.numReplacedParental/statusProvider.serverStatus!.stats.numDnsQueries)*100, Platform.localeName) : 0}%",
|
||||
color: Colors.orange,
|
||||
),
|
||||
),
|
||||
|
@ -172,7 +175,7 @@ class _HomeState extends State<Home> {
|
|||
if (width <= 700) ...[
|
||||
TopItems(
|
||||
label: AppLocalizations.of(context)!.topQueriedDomains,
|
||||
data: serversProvider.serverStatus.data!.stats.topQueriedDomains,
|
||||
data: statusProvider.serverStatus!.stats.topQueriedDomains,
|
||||
type: 'topQueriedDomains',
|
||||
),
|
||||
Padding(
|
||||
|
@ -187,7 +190,7 @@ class _HomeState extends State<Home> {
|
|||
|
||||
TopItems(
|
||||
label: AppLocalizations.of(context)!.topBlockedDomains,
|
||||
data: serversProvider.serverStatus.data!.stats.topBlockedDomains,
|
||||
data: statusProvider.serverStatus!.stats.topBlockedDomains,
|
||||
type: 'topBlockedDomains',
|
||||
),
|
||||
Padding(
|
||||
|
@ -201,7 +204,7 @@ class _HomeState extends State<Home> {
|
|||
|
||||
TopItems(
|
||||
label: AppLocalizations.of(context)!.topClients,
|
||||
data: serversProvider.serverStatus.data!.stats.topClients,
|
||||
data: statusProvider.serverStatus!.stats.topClients,
|
||||
type: 'topClients',
|
||||
clients: true,
|
||||
),
|
||||
|
@ -219,7 +222,7 @@ class _HomeState extends State<Home> {
|
|||
),
|
||||
child: TopItems(
|
||||
label: AppLocalizations.of(context)!.topQueriedDomains,
|
||||
data: serversProvider.serverStatus.data!.stats.topQueriedDomains,
|
||||
data: statusProvider.serverStatus!.stats.topQueriedDomains,
|
||||
type: 'topQueriedDomains',
|
||||
),
|
||||
),
|
||||
|
@ -232,7 +235,7 @@ class _HomeState extends State<Home> {
|
|||
),
|
||||
child: TopItems(
|
||||
label: AppLocalizations.of(context)!.topBlockedDomains,
|
||||
data: serversProvider.serverStatus.data!.stats.topBlockedDomains,
|
||||
data: statusProvider.serverStatus!.stats.topBlockedDomains,
|
||||
type: 'topBlockedDomains',
|
||||
),
|
||||
),
|
||||
|
@ -245,7 +248,7 @@ class _HomeState extends State<Home> {
|
|||
),
|
||||
child: TopItems(
|
||||
label: AppLocalizations.of(context)!.topClients,
|
||||
data: serversProvider.serverStatus.data!.stats.topClients,
|
||||
data: statusProvider.serverStatus!.stats.topClients,
|
||||
type: 'topClients',
|
||||
),
|
||||
),
|
||||
|
@ -279,7 +282,9 @@ class _HomeState extends State<Home> {
|
|||
onRefresh: () async {
|
||||
final result = await getServerStatus(serversProvider.selectedServer!);
|
||||
if (result['result'] == 'success') {
|
||||
serversProvider.setServerStatusData(result['data']);
|
||||
statusProvider.setServerStatusData(
|
||||
data: result['data']
|
||||
);
|
||||
}
|
||||
else {
|
||||
appConfigProvider.addLog(result['log']);
|
||||
|
@ -295,13 +300,13 @@ class _HomeState extends State<Home> {
|
|||
SliverOverlapInjector(
|
||||
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
|
||||
),
|
||||
if (serversProvider.serverStatus.loadStatus == 0) SliverFillRemaining(
|
||||
if (statusProvider.loadStatus == LoadStatus.loading) SliverFillRemaining(
|
||||
child: loading(),
|
||||
),
|
||||
if (serversProvider.serverStatus.loadStatus == 1) SliverList.list(
|
||||
if (statusProvider.loadStatus == LoadStatus.loaded) SliverList.list(
|
||||
children: listItems()
|
||||
),
|
||||
if (serversProvider.serverStatus.loadStatus == 2) SliverFillRemaining(
|
||||
if (statusProvider.loadStatus == LoadStatus.error) SliverFillRemaining(
|
||||
child: loadError(),
|
||||
),
|
||||
],
|
||||
|
|
|
@ -10,6 +10,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|||
|
||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||
import 'package:adguard_home_manager/functions/compare_versions.dart';
|
||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||
import 'package:adguard_home_manager/functions/time_server_disabled.dart';
|
||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||
import 'package:adguard_home_manager/services/http_requests.dart';
|
||||
|
@ -74,6 +75,7 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
final statusProvider = Provider.of<StatusProvider>(context);
|
||||
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||
|
||||
void startTimer(DateTime deadline) {
|
||||
|
@ -92,7 +94,9 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
});
|
||||
final result = await getServerStatus(serversProvider.selectedServer!);
|
||||
if (result['result'] == 'success') {
|
||||
serversProvider.setServerStatusData(result['data']);
|
||||
statusProvider.setServerStatusData(
|
||||
data: result['data']
|
||||
);
|
||||
}
|
||||
} else {
|
||||
setState(() {
|
||||
|
@ -104,16 +108,16 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
}
|
||||
|
||||
if (
|
||||
serversProvider.serverStatus.data != null &&
|
||||
serversProvider.serverStatus.data!.disabledUntil != null &&
|
||||
serversProvider.serverStatus.data!.disabledUntil != currentDeadline
|
||||
statusProvider.serverStatus != null &&
|
||||
statusProvider.serverStatus!.disabledUntil != null &&
|
||||
statusProvider.serverStatus!.disabledUntil != currentDeadline
|
||||
) {
|
||||
startTimer(serversProvider.serverStatus.data!.disabledUntil!);
|
||||
startTimer(statusProvider.serverStatus!.disabledUntil!);
|
||||
}
|
||||
|
||||
if (
|
||||
serversProvider.serverStatus.data != null &&
|
||||
serversProvider.serverStatus.data!.generalEnabled == true
|
||||
statusProvider.serverStatus != null &&
|
||||
statusProvider.serverStatus!.generalEnabled == true
|
||||
) {
|
||||
setState(() {
|
||||
start = 0;
|
||||
|
@ -128,7 +132,7 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
required String filter,
|
||||
int? time
|
||||
}) async {
|
||||
final result = await serversProvider.updateBlocking(
|
||||
final result = await statusProvider.updateBlocking(
|
||||
server: serversProvider.selectedServer!,
|
||||
block: filter,
|
||||
newStatus: value,
|
||||
|
@ -164,7 +168,7 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
child: Icon(
|
||||
Icons.keyboard_arrow_down_rounded,
|
||||
size: 26,
|
||||
color: serversProvider.serverStatus.data!.generalEnabled == true
|
||||
color: statusProvider.serverStatus!.generalEnabled == true
|
||||
? Theme.of(context).colorScheme.onSurfaceVariant
|
||||
: Colors.grey,
|
||||
),
|
||||
|
@ -180,7 +184,7 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
fontSize: 18,
|
||||
),
|
||||
),
|
||||
if (serversProvider.serverStatus.data!.timeGeneralDisabled > 0) ...[
|
||||
if (statusProvider.serverStatus!.timeGeneralDisabled > 0) ...[
|
||||
const SizedBox(height: 2),
|
||||
if (currentDeadline != null) Text(
|
||||
"${AppLocalizations.of(context)!.remainingTime}: ${generateRemainingTimeString(currentDeadline!.difference(DateTime.now()))}"
|
||||
|
@ -191,8 +195,8 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
],
|
||||
),
|
||||
Switch(
|
||||
value: serversProvider.serverStatus.data!.generalEnabled,
|
||||
onChanged: serversProvider.protectionsManagementProcess.contains('general') == false
|
||||
value: statusProvider.serverStatus!.generalEnabled,
|
||||
onChanged: statusProvider.protectionsManagementProcess.contains('general') == false
|
||||
? (value) {
|
||||
if (value == false && expandableController.expanded == true && legacyMode == false) {
|
||||
expandableController.toggle();
|
||||
|
@ -216,35 +220,35 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
children: [
|
||||
ActionChip(
|
||||
label: Text(AppLocalizations.of(context)!.seconds(30)),
|
||||
onPressed: serversProvider.protectionsManagementProcess.contains('general') == false && serversProvider.serverStatus.data!.generalEnabled == true
|
||||
onPressed: statusProvider.protectionsManagementProcess.contains('general') == false && statusProvider.serverStatus!.generalEnabled == true
|
||||
? () => disableWithCountdown(29000)
|
||||
: null,
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
ActionChip(
|
||||
label: Text(AppLocalizations.of(context)!.minute(1)),
|
||||
onPressed: serversProvider.protectionsManagementProcess.contains('general') == false && serversProvider.serverStatus.data!.generalEnabled == true
|
||||
onPressed: statusProvider.protectionsManagementProcess.contains('general') == false && statusProvider.serverStatus!.generalEnabled == true
|
||||
? () => disableWithCountdown(59000)
|
||||
: null,
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
ActionChip(
|
||||
label: Text(AppLocalizations.of(context)!.minutes(10)),
|
||||
onPressed: serversProvider.protectionsManagementProcess.contains('general') == false && serversProvider.serverStatus.data!.generalEnabled == true
|
||||
onPressed: statusProvider.protectionsManagementProcess.contains('general') == false && statusProvider.serverStatus!.generalEnabled == true
|
||||
? () => disableWithCountdown(599000)
|
||||
: null,
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
ActionChip(
|
||||
label: Text(AppLocalizations.of(context)!.hour(1)),
|
||||
onPressed: serversProvider.protectionsManagementProcess.contains('general') == false && serversProvider.serverStatus.data!.generalEnabled == true
|
||||
onPressed: statusProvider.protectionsManagementProcess.contains('general') == false && statusProvider.serverStatus!.generalEnabled == true
|
||||
? () => disableWithCountdown(3599000)
|
||||
: null,
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
ActionChip(
|
||||
label: Text(AppLocalizations.of(context)!.hours(24)),
|
||||
onPressed: serversProvider.protectionsManagementProcess.contains('general') == false && serversProvider.serverStatus.data!.generalEnabled == true
|
||||
onPressed: statusProvider.protectionsManagementProcess.contains('general') == false && statusProvider.serverStatus!.generalEnabled == true
|
||||
? () => disableWithCountdown(86399000)
|
||||
: null,
|
||||
),
|
||||
|
@ -256,7 +260,7 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 24),
|
||||
child: serverVersionIsAhead(
|
||||
currentVersion: serversProvider.serverStatus.data!.serverVersion,
|
||||
currentVersion: statusProvider.serverStatus!.serverVersion,
|
||||
referenceVersion: 'v0.107.28',
|
||||
referenceVersionBeta: 'v0.108.0-b.33'
|
||||
) == true
|
||||
|
@ -266,7 +270,7 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
color: Colors.transparent,
|
||||
borderRadius: BorderRadius.circular(28),
|
||||
child: InkWell(
|
||||
onTap: serversProvider.serverStatus.data!.generalEnabled == true && !serversProvider.protectionsManagementProcess.contains('general')
|
||||
onTap: statusProvider.serverStatus!.generalEnabled == true && !statusProvider.protectionsManagementProcess.contains('general')
|
||||
? () => expandableController.toggle()
|
||||
: null,
|
||||
borderRadius: BorderRadius.circular(28),
|
||||
|
@ -301,9 +305,9 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
color: Colors.transparent,
|
||||
borderRadius: BorderRadius.circular(28),
|
||||
child: InkWell(
|
||||
onTap: serversProvider.protectionsManagementProcess.contains('general') == false
|
||||
onTap: statusProvider.protectionsManagementProcess.contains('general') == false
|
||||
? () => updateBlocking(
|
||||
value: !serversProvider.serverStatus.data!.generalEnabled,
|
||||
value: !statusProvider.serverStatus!.generalEnabled,
|
||||
filter: 'general_legacy'
|
||||
) : null,
|
||||
borderRadius: BorderRadius.circular(28),
|
||||
|
@ -408,30 +412,30 @@ class _ManagementModalState extends State<ManagementModal> with SingleTickerProv
|
|||
smallSwitch(
|
||||
AppLocalizations.of(context)!.ruleFiltering,
|
||||
Icons.filter_list_rounded,
|
||||
serversProvider.serverStatus.data!.filteringEnabled,
|
||||
statusProvider.serverStatus!.filteringEnabled,
|
||||
(value) => updateBlocking(value: value, filter: 'filtering'),
|
||||
serversProvider.protectionsManagementProcess.contains('filtering')
|
||||
statusProvider.protectionsManagementProcess.contains('filtering')
|
||||
),
|
||||
smallSwitch(
|
||||
AppLocalizations.of(context)!.safeBrowsing,
|
||||
Icons.vpn_lock_rounded,
|
||||
serversProvider.serverStatus.data!.safeBrowsingEnabled,
|
||||
statusProvider.serverStatus!.safeBrowsingEnabled,
|
||||
(value) => updateBlocking(value: value, filter: 'safeBrowsing'),
|
||||
serversProvider.protectionsManagementProcess.contains('safeBrowsing')
|
||||
statusProvider.protectionsManagementProcess.contains('safeBrowsing')
|
||||
),
|
||||
smallSwitch(
|
||||
AppLocalizations.of(context)!.parentalFiltering,
|
||||
Icons.block,
|
||||
serversProvider.serverStatus.data!.parentalControlEnabled,
|
||||
statusProvider.serverStatus!.parentalControlEnabled,
|
||||
(value) => updateBlocking(value: value, filter: 'parentalControl'),
|
||||
serversProvider.protectionsManagementProcess.contains('parentalControl')
|
||||
statusProvider.protectionsManagementProcess.contains('parentalControl')
|
||||
),
|
||||
smallSwitch(
|
||||
AppLocalizations.of(context)!.safeSearch,
|
||||
Icons.search_rounded,
|
||||
serversProvider.serverStatus.data!.safeSearchEnabled,
|
||||
statusProvider.serverStatus!.safeSearchEnabled,
|
||||
(value) => updateBlocking(value: value, filter: 'safeSearch'),
|
||||
serversProvider.protectionsManagementProcess.contains('safeSearch')
|
||||
statusProvider.protectionsManagementProcess.contains('safeSearch')
|
||||
),
|
||||
];
|
||||
}
|
||||
|
|
|
@ -5,10 +5,10 @@ import 'package:adguard_home_manager/screens/home/status_box.dart';
|
|||
|
||||
import 'package:adguard_home_manager/models/server_status.dart';
|
||||
|
||||
class ServerStatus extends StatelessWidget {
|
||||
final ServerStatusData serverStatus;
|
||||
class ServerStatusWidget extends StatelessWidget {
|
||||
final ServerStatus serverStatus;
|
||||
|
||||
const ServerStatus({
|
||||
const ServerStatusWidget({
|
||||
Key? key,
|
||||
required this.serverStatus,
|
||||
}) : super(key: key);
|
||||
|
|
|
@ -13,6 +13,7 @@ import 'package:adguard_home_manager/widgets/options_modal.dart';
|
|||
import 'package:adguard_home_manager/screens/top_items/top_items.dart';
|
||||
|
||||
import 'package:adguard_home_manager/models/applied_filters.dart';
|
||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||
import 'package:adguard_home_manager/models/menu_option.dart';
|
||||
import 'package:adguard_home_manager/providers/logs_provider.dart';
|
||||
import 'package:adguard_home_manager/classes/process_modal.dart';
|
||||
|
@ -37,6 +38,7 @@ class TopItems extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final serversProvider = Provider.of<ServersProvider>(context);
|
||||
final statusProvider = Provider.of<StatusProvider>(context);
|
||||
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||
final logsProvider = Provider.of<LogsProvider>(context);
|
||||
|
||||
|
@ -61,7 +63,7 @@ class TopItems extends StatelessWidget {
|
|||
final rules = await getFilteringRules(server: serversProvider.selectedServer!);
|
||||
|
||||
if (rules['result'] == 'success') {
|
||||
FilteringStatus oldStatus = serversProvider.serverStatus.data!.filteringStatus;
|
||||
FilteringStatus oldStatus = statusProvider.serverStatus!.filteringStatus;
|
||||
|
||||
List<String> newRules = rules['data'].userRules.where((d) => !d.contains(domain)).toList();
|
||||
if (newStatus == 'block') {
|
||||
|
@ -70,7 +72,7 @@ class TopItems extends StatelessWidget {
|
|||
else if (newStatus == 'unblock') {
|
||||
newRules.add("@@||$domain^");
|
||||
}
|
||||
FilteringStatus newObj = serversProvider.serverStatus.data!.filteringStatus;
|
||||
FilteringStatus newObj = statusProvider.serverStatus!.filteringStatus;
|
||||
newObj.userRules = newRules;
|
||||
serversProvider.setFilteringStatus(newObj);
|
||||
|
||||
|
@ -154,7 +156,7 @@ class TopItems extends StatelessWidget {
|
|||
String? name;
|
||||
if (clients != null && clients == true) {
|
||||
try {
|
||||
name = serversProvider.serverStatus.data!.clients.firstWhere((c) => c.ids.contains(item.keys.toList()[0])).name;
|
||||
name = statusProvider.serverStatus!.clients.firstWhere((c) => c.ids.contains(item.keys.toList()[0])).name;
|
||||
} catch (e) {
|
||||
// ---- //
|
||||
}
|
||||
|
@ -241,13 +243,13 @@ class TopItems extends StatelessWidget {
|
|||
List<Map<String, dynamic>> generateData() {
|
||||
switch (type) {
|
||||
case 'topQueriedDomains':
|
||||
return serversProvider.serverStatus.data!.stats.topQueriedDomains;
|
||||
return statusProvider.serverStatus!.stats.topQueriedDomains;
|
||||
|
||||
case 'topBlockedDomains':
|
||||
return serversProvider.serverStatus.data!.stats.topBlockedDomains;
|
||||
return statusProvider.serverStatus!.stats.topBlockedDomains;
|
||||
|
||||
case 'topClients':
|
||||
return serversProvider.serverStatus.data!.stats.topClients;
|
||||
return statusProvider.serverStatus!.stats.topClients;
|
||||
|
||||
default:
|
||||
return [];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue