From 3832025b0c404498c798148f1e7c52f34dce372a Mon Sep 17 00:00:00 2001 From: Andreas Waschinski <25221082+waschinski@users.noreply.github.com> Date: Sat, 10 Jul 2021 02:02:57 +0200 Subject: Improving Adguard Home service Showing "x.x% blocked" similar to how the PiHole service is doing it. The status text will no longer be `true/false` but `enabled/disabled`. Endpoints require to be logged in so fetch does now send cookies to prevent 403s. --- src/components/services/AdGuardHome.vue | 40 +++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) (limited to 'src/components/services') diff --git a/src/components/services/AdGuardHome.vue b/src/components/services/AdGuardHome.vue index 6ef5302..0c689b9 100644 --- a/src/components/services/AdGuardHome.vue +++ b/src/components/services/AdGuardHome.vue @@ -16,14 +16,21 @@

{{ item.name }}

-

{{ item.subtitle }}

+

+ + +

- {{ status.protection_enabled }} + {{ status.protection_enabled ? 'enabled' : 'disabled' }}
@@ -44,16 +51,41 @@ export default { data: () => { return { status: null, + stats: null, }; }, + computed: { + percentage: function () { + if (this.stats) { + return (this.stats.num_blocked_filtering * 100 / this.stats.num_dns_queries).toFixed(2); + } + return ""; + }, + }, created: function () { this.fetchStatus(); + if (!this.item.subtitle) { + this.fetchStats(); + } }, methods: { fetchStatus: async function () { this.status = await fetch( - `${this.item.url}/control/status` - ).then((response) => response.json()); + `${this.item.url}/control/status`, + { + credentials: 'include' + } + ).then((response) => response.json()) + .catch((e) => console.log(e)); + }, + fetchStats: async function () { + this.stats = await fetch( + `${this.item.url}/control/stats`, + { + credentials: 'include' + } + ).then((response) => response.json()) + .catch((e) => console.log(e)); }, }, }; -- cgit v1.2.3