Pull request 2445: ADG-10438 fixed disabled state of clients action button

Updates #7923.

Squashed commit of the following:

commit 93a14a73b30f4e0e5ed7cd439781298782d9b78a
Merge: 39a009e99 ced9a1694
Author: Ildar Kamalov <ik@adguard.com>
Date:   Tue Aug 5 13:18:57 2025 +0300

    Merge branch 'master' into ADG-10438

commit 39a009e99b
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Mon Aug 4 14:55:27 2025 +0300

    home: fix disallowed rule

commit 80a1906055
Author: Ildar Kamalov <ik@adguard.com>
Date:   Thu Jul 31 17:21:53 2025 +0300

    changelog

commit 5c90a6b49b
Author: Ildar Kamalov <ik@adguard.com>
Date:   Thu Jul 31 17:15:56 2025 +0300

    changelog

commit 501d3575aa
Author: Ildar Kamalov <ik@adguard.com>
Date:   Thu Jul 31 17:12:27 2025 +0300

    ADG-10438 fixed disabled state of clients action button
This commit is contained in:
Ildar Kamalov 2025-08-05 13:41:05 +03:00
parent ced9a1694a
commit 451255675e
4 changed files with 32 additions and 14 deletions

View File

@ -17,6 +17,13 @@ See also the [v0.107.65 GitHub milestone][ms-v0.107.65].
NOTE: Add new changes BELOW THIS COMMENT.
-->
### Fixed
- Disabled state of Top clients action button in web UI ([#7923]).
[#7923]: https://github.com/AdguardTeam/AdGuardHome/issues/7923
<!--
NOTE: Add new changes ABOVE THIS COMMENT.
-->

View File

@ -337,7 +337,8 @@
}
.button-action--arrow-option:disabled {
display: none;
opacity: 0.5;
cursor: default;
}
.tooltip-custom__container .button-action--arrow-option {

View File

@ -475,7 +475,13 @@ func (clients *clientsContainer) findClient(
params.RemoteIP,
string(params.ClientID),
)
cj.Disallowed, cj.DisallowedRule = &disallowed, &rule
cj.Disallowed = &disallowed
if disallowed && rule != "" {
// Since "disallowed_rule" is omitted from JSON unless present, it
// should only be set when the client is actually blocked.
cj.DisallowedRule = &rule
}
return cj
}
@ -554,12 +560,19 @@ func (clients *clientsContainer) findRuntime(
// See https://github.com/AdguardTeam/AdGuardHome/issues/2428.
disallowed, rule := clients.clientChecker.IsBlockedClient(ip, string(params.ClientID))
var disallowedRule *string
if disallowed && rule != "" {
// Since "disallowed_rule" is omitted from JSON unless present, it
// should only be set when the client is actually blocked.
disallowedRule = &rule
}
return &clientJSON{
Name: host,
IDs: []string{idStr},
WHOIS: whois,
Disallowed: &disallowed,
DisallowedRule: &rule,
DisallowedRule: disallowedRule,
}
}

View File

@ -421,7 +421,6 @@ func TestClientsContainer_HandleSearchClient(t *testing.T) {
allowed = false
dissallowed = true
emptyRule = ""
disallowedRule = "disallowed_rule"
)
@ -432,7 +431,7 @@ func TestClientsContainer_HandleSearchClient(t *testing.T) {
return true, disallowedRule
}
return false, emptyRule
return false, ""
},
}
@ -481,11 +480,10 @@ func TestClientsContainer_HandleSearchClient(t *testing.T) {
}},
},
wantRuntime: &clientJSON{
Name: runtimeCli,
IDs: []string{runtimeCliIP},
Disallowed: &allowed,
DisallowedRule: &emptyRule,
WHOIS: &whois.Info{},
Name: runtimeCli,
IDs: []string{runtimeCliIP},
Disallowed: &allowed,
WHOIS: &whois.Info{},
},
}, {
name: "blocked_access",
@ -508,10 +506,9 @@ func TestClientsContainer_HandleSearchClient(t *testing.T) {
}},
},
wantRuntime: &clientJSON{
IDs: []string{nonExistentCliIP},
Disallowed: &allowed,
DisallowedRule: &emptyRule,
WHOIS: &whois.Info{},
IDs: []string{nonExistentCliIP},
Disallowed: &allowed,
WHOIS: &whois.Info{},
},
}}