From d62a476172b14fbca844d0f2cf57dcdc638c87c4 Mon Sep 17 00:00:00 2001 From: c00b3r Date: Wed, 18 Jun 2025 18:34:59 +0500 Subject: [PATCH] feat: implement pluralization for client and session counts in ClientsPage and SessionsPage --- src/pages/ClientsPage.tsx | 28 +++++++++++++--------------- src/pages/SessionsPage.tsx | 3 ++- src/utils/pluralize.ts | 16 ++++++++++++++++ 3 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 src/utils/pluralize.ts diff --git a/src/pages/ClientsPage.tsx b/src/pages/ClientsPage.tsx index 1e9c785..b4259ec 100644 --- a/src/pages/ClientsPage.tsx +++ b/src/pages/ClientsPage.tsx @@ -4,16 +4,17 @@ import SpinIcon from "../components/icons/SpinIcon"; import MultySelect from "../components/MultySelect"; import SearchInput from "../components/SearchInput"; import { useState } from "react"; -import { useDebounce } from "@uidotdev/usehooks"; import { useQuery } from "@tanstack/react-query"; import { IUser } from "../types/User"; import api from "../utils/api"; +import { Client } from "../types/Client"; +import pluralize from "../utils/pluralize"; function ClientsPage() { const [limit, setLimit] = useState(10); const [search, setSearch] = useState(null); - const debouncedSearch = useDebounce(search, 500); + // const debouncedSearch = useDebounce(search, 500); const { data: me } = useQuery({ queryKey: ["me"], @@ -22,13 +23,7 @@ function ClientsPage() { const { data: clients, isLoading } = useQuery({ queryKey: ["clients"], - queryFn: () => api.get("clients").json(), - enabled: !!me, - }); - - const { data: count } = useQuery({ - queryKey: ["clients", "count", debouncedSearch], - queryFn: () => api.get(`sessions/count?clients`).json(), + queryFn: () => api.get("clients").json(), enabled: !!me, }); @@ -77,7 +72,10 @@ function ClientsPage() {

- Найдено {count} клиентов + Найдено{" "} + {clients?.length + ? pluralize(clients?.length, "клиент") + : "0 клиентов"}

- {!!count && clients?.length === 0 && ( + {!!clients?.length && clients?.length === 0 && ( diff --git a/src/pages/SessionsPage.tsx b/src/pages/SessionsPage.tsx index f640295..2b535e0 100644 --- a/src/pages/SessionsPage.tsx +++ b/src/pages/SessionsPage.tsx @@ -14,6 +14,7 @@ import Button from "../components/Button"; import SearchInput from "../components/SearchInput"; import CloseIcon from "../components/icons/CloseIcon"; import SpinIcon from "../components/icons/SpinIcon"; +import pluralize from "../utils/pluralize"; function SessionsPage() { const [limit, setLimit] = useState(10); @@ -118,7 +119,7 @@ function SessionsPage() {

- Найдено {count} сеансов + Найдено {count ? pluralize(count, "сеанс") : "0 сеансов"}