diff --git a/CHANGELOG.md b/CHANGELOG.md
index c4b9f685..ccb98bf7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,12 @@ NOTE: Add new changes BELOW THIS COMMENT.
- The `GET /clients/find` HTTP API is deprecated. Use the new `POST /clients/search` API.
+### Fixed
+
+- The formatting of large numbers on the dashboard ([#7329]).
+
+[#7329]: https://github.com/AdguardTeam/AdGuardHome/issues/7329
+
diff --git a/client/src/components/Dashboard/Counters.tsx b/client/src/components/Dashboard/Counters.tsx
index e68ce417..d281086d 100644
--- a/client/src/components/Dashboard/Counters.tsx
+++ b/client/src/components/Dashboard/Counters.tsx
@@ -23,7 +23,7 @@ interface RowProps {
const Row = ({ label, count, response_status, tooltipTitle, translationComponents }: RowProps) => {
const content = response_status ? (
- {formatNumber(count)}
+ {count}
) : (
count
);
@@ -77,16 +77,16 @@ const Counters = ({ refreshButton, subtitle }: CountersProps) => {
? t('number_of_dns_query_hours', { count: msToHours(interval) })
: t('number_of_dns_query_days', { count: msToDays(interval) });
- const rows = [
+ const rows: RowProps[] = [
{
label: 'dns_query',
- count: numDnsQueries.toString(),
+ count: formatNumber(numDnsQueries),
tooltipTitle: dnsQueryTooltip,
response_status: RESPONSE_FILTER.ALL.QUERY,
},
{
label: 'blocked_by',
- count: numBlockedFiltering.toString(),
+ count: formatNumber(numBlockedFiltering),
tooltipTitle: 'number_of_dns_query_blocked_24_hours',
response_status: RESPONSE_FILTER.BLOCKED.QUERY,
@@ -98,19 +98,19 @@ const Counters = ({ refreshButton, subtitle }: CountersProps) => {
},
{
label: 'stats_malware_phishing',
- count: numReplacedSafebrowsing.toString(),
+ count: formatNumber(numReplacedSafebrowsing),
tooltipTitle: 'number_of_dns_query_blocked_24_hours_by_sec',
response_status: RESPONSE_FILTER.BLOCKED_THREATS.QUERY,
},
{
label: 'stats_adult',
- count: numReplacedParental.toString(),
+ count: formatNumber(numReplacedParental),
tooltipTitle: 'number_of_dns_query_blocked_24_hours_adult',
response_status: RESPONSE_FILTER.BLOCKED_ADULT_WEBSITES.QUERY,
},
{
label: 'enforced_save_search',
- count: numReplacedSafesearch.toString(),
+ count: formatNumber(numReplacedSafesearch),
tooltipTitle: 'number_of_dns_query_to_safe_search',
response_status: RESPONSE_FILTER.SAFE_SEARCH.QUERY,
},
diff --git a/client/src/helpers/helpers.tsx b/client/src/helpers/helpers.tsx
index 0ad9e9e2..d04676c4 100644
--- a/client/src/helpers/helpers.tsx
+++ b/client/src/helpers/helpers.tsx
@@ -521,7 +521,7 @@ export const getObjDiff = (initialValues: any, values: any) =>
* @param num {number} to format
* @returns {string} Returns a string with a language-sensitive representation of this number
*/
-export const formatNumber = (num: any) => {
+export const formatNumber = (num: number): string => {
const currentLanguage = i18n.languages[0] || DEFAULT_LANGUAGE;
return num.toLocaleString(currentLanguage);
};
diff --git a/scripts/make/go-lint.sh b/scripts/make/go-lint.sh
index 2eb60a2d..56569da3 100644
--- a/scripts/make/go-lint.sh
+++ b/scripts/make/go-lint.sh
@@ -223,6 +223,12 @@ run_linter ineffassign ./...
run_linter unparam ./...
find . \
+ '(' \
+ -name 'node_modules' \
+ -type 'd' \
+ -prune \
+ ')' \
+ -o \
-type 'f' \
'(' \
-name 'Makefile' \