Cache: add ReloadButton
This commit is contained in:
parent
eff2d05431
commit
f92cb03fd8
24
apps/web/Components/Admin/Cache/ReloadButton.tsx
Normal file
24
apps/web/Components/Admin/Cache/ReloadButton.tsx
Normal file
@ -0,0 +1,24 @@
|
||||
import { useState } from 'react';
|
||||
import { Button } from 'ui/elements';
|
||||
import { ReloadOutlined } from 'ui/elements/icons';
|
||||
|
||||
export function ReloadButton({ onClick }: { readonly onClick: () => Promise<unknown> }) {
|
||||
const [pending, setPending] = useState(false);
|
||||
|
||||
return (
|
||||
<Button
|
||||
loading={pending}
|
||||
onClick={() => {
|
||||
setPending(true);
|
||||
onClick().finally(() => {
|
||||
setTimeout(() => {
|
||||
setPending(false);
|
||||
}, 1000);
|
||||
});
|
||||
}}
|
||||
icon={<ReloadOutlined rev="" />}
|
||||
>
|
||||
Обновить
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
import Background from '../../Layout/Background';
|
||||
import { useFilteredQueries } from './lib/hooks';
|
||||
import { QueryList } from './QueryList';
|
||||
import { ReloadButton } from './ReloadButton';
|
||||
import { min } from '@/styles/mq';
|
||||
import styled from 'styled-components';
|
||||
import { Collapse, Divider, Input } from 'ui/elements';
|
||||
import { Flex } from 'ui/grid';
|
||||
|
||||
const Wrapper = styled(Background)`
|
||||
padding: 4px 6px;
|
||||
@ -20,8 +20,15 @@ const Wrapper = styled(Background)`
|
||||
}
|
||||
`;
|
||||
|
||||
const Flex = styled.div`
|
||||
display: flex;
|
||||
margin-bottom: 16px;
|
||||
justify-content: space-between;
|
||||
gap: 10px;
|
||||
`;
|
||||
|
||||
export function Cache() {
|
||||
const { filteredQueries, setFilterString } = useFilteredQueries();
|
||||
const { filteredQueries, refetch, setFilterString } = useFilteredQueries();
|
||||
|
||||
if (!filteredQueries) {
|
||||
return <div>Загрузка...</div>;
|
||||
@ -30,12 +37,13 @@ export function Cache() {
|
||||
return (
|
||||
<Wrapper>
|
||||
<Divider>Управление кэшем</Divider>
|
||||
<Flex marginBottom="16px">
|
||||
<Flex>
|
||||
<Input
|
||||
placeholder="Поиск по запросу"
|
||||
allowClear
|
||||
onChange={(e) => setFilterString(e.target.value)}
|
||||
/>
|
||||
<ReloadButton onClick={refetch} />
|
||||
</Flex>
|
||||
<Collapse
|
||||
accordion
|
||||
|
||||
@ -6,7 +6,7 @@ import { useEffect, useState } from 'react';
|
||||
import { useDebounce } from 'use-debounce';
|
||||
|
||||
export function useFilteredQueries() {
|
||||
const { data: queries } = useQuery({
|
||||
const { data: queries, refetch } = useQuery({
|
||||
enabled: false,
|
||||
queryFn: ({ signal }) => signal && cacheApi.getQueries({ signal }),
|
||||
queryKey: ['admin', 'cache', 'queries'],
|
||||
@ -26,5 +26,5 @@ export function useFilteredQueries() {
|
||||
}
|
||||
}, [debouncedFilterString, queries]);
|
||||
|
||||
return { filteredQueries, queries, setFilterString };
|
||||
return { filteredQueries, queries, refetch, setFilterString };
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user