diff --git a/src/apis/get-aliases.ts b/src/apis/get-aliases.ts index 932972a..923a4d1 100644 --- a/src/apis/get-aliases.ts +++ b/src/apis/get-aliases.ts @@ -1,13 +1,24 @@ -import {AliasList, PaginationResult} from "~/server-types" +import {AliasList, GetPageData, PaginationResult} from "~/server-types" import {client} from "~/constants/axios-client" -export default async function getAliases(): Promise< - PaginationResult -> { +export interface GetAliasesData extends GetPageData { + query?: string +} + +export default async function getAliases({ + query, + size, + page, +}: GetAliasesData): Promise> { const {data} = await client.get( `${import.meta.env.VITE_SERVER_BASE_URL}/alias`, { withCredentials: true, + params: { + query, + size, + page, + }, }, ) diff --git a/src/routes/AliasesRoute.tsx b/src/routes/AliasesRoute.tsx index dec15df..a7ef7b0 100644 --- a/src/routes/AliasesRoute.tsx +++ b/src/routes/AliasesRoute.tsx @@ -1,26 +1,55 @@ -import {ReactElement, useState} from "react" +import {ReactElement, useState, useTransition} from "react" import {AxiosError} from "axios" +import {MdSearch} from "react-icons/md" import {useQuery} from "@tanstack/react-query" +import {InputAdornment, TextField} from "@mui/material" import {AliasList, PaginationResult} from "~/server-types" +import {QueryResult, SimplePage} from "~/components" import AliasesDetails from "~/route-widgets/AliasesRoute/AliasesDetails" -import QueryResult from "~/components/QueryResult" -import SimplePage from "~/components/SimplePage" import getAliases from "~/apis/get-aliases" export default function AliasesRoute(): ReactElement { - const query = useQuery, AxiosError>( - ["get_aliases"], - getAliases, + const [searchValue, setSearchValue] = useState("") + const [queryValue, setQueryValue] = useState("") + const [, startTransition] = useTransition() + + const query = useQuery, AxiosError, void>( + ["get_aliases", queryValue], + () => + getAliases({ + query: queryValue, + }), ) - const [showCustomCreateDialog, setShowCustomCreateDialog] = - useState(false) - return ( - - > query={query}> + { + setSearchValue(event.target.value) + startTransition(() => { + setQueryValue(event.target.value) + }) + }} + label="Search" + id="search" + InputProps={{ + startAdornment: ( + + + + ), + }} + /> + } + > + , AxiosError, void> + query={query} + > {result => } diff --git a/src/server-types.ts b/src/server-types.ts index b1f2dbb..0792148 100644 --- a/src/server-types.ts +++ b/src/server-types.ts @@ -164,3 +164,8 @@ export interface User notes: UserNote isDecrypted: true } + +export interface GetPageData { + page?: number + size?: number +}