From 5cfd9155c344f25a911b359ffd96df7cbc67cb4b Mon Sep 17 00:00:00 2001 From: NlightN22 Date: Mon, 26 Feb 2024 01:17:55 +0700 Subject: [PATCH] add access page --- src/AppBody.tsx | 8 +- src/pages/AccessSettings.tsx | 63 ++++++++++++++ src/pages/RecordingsPage.tsx | 3 - src/router/routes.path.ts | 2 +- src/router/routes.tsx | 5 ++ src/services/frigate.proxy/frigate.api.ts | 18 +++- src/services/frigate.proxy/frigate.schema.ts | 34 +++++++- src/shared/components/AutoUpdatedImage.tsx | 2 - src/shared/components/CamerasTransferList.tsx | 84 +++++++++++++++++++ .../filters.aps/CameraSelectFilter.tsx | 2 +- .../filters.aps/HostSelectFilter.tsx | 2 +- .../filters.aps/OneSelectFilter.tsx | 28 +++---- src/widgets/header/header.links.ts | 2 +- 13 files changed, 224 insertions(+), 29 deletions(-) create mode 100644 src/pages/AccessSettings.tsx create mode 100644 src/shared/components/CamerasTransferList.tsx diff --git a/src/AppBody.tsx b/src/AppBody.tsx index a22a46c..d64400f 100644 --- a/src/AppBody.tsx +++ b/src/AppBody.tsx @@ -7,7 +7,13 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { Context } from '.'; import SideBar from './shared/components/SideBar'; -const queryClient = new QueryClient() +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + refetchOnWindowFocus: false + } + } +}) const AppBody = () => { useEffect(() => { diff --git a/src/pages/AccessSettings.tsx b/src/pages/AccessSettings.tsx new file mode 100644 index 0000000..24c9f51 --- /dev/null +++ b/src/pages/AccessSettings.tsx @@ -0,0 +1,63 @@ +import { useQuery } from '@tanstack/react-query'; +import React, { useContext, useEffect, useState } from 'react'; +import { frigateApi, frigateQueryKeys } from '../services/frigate.proxy/frigate.api'; +import CenterLoader from '../shared/components/CenterLoader'; +import RetryErrorPage from './RetryErrorPage'; +import { Flex, Group, Select, Text } from '@mantine/core'; +import OneSelectFilter, { OneSelectItem } from '../shared/components/filters.aps/OneSelectFilter'; +import { useMediaQuery } from '@mantine/hooks'; +import { dimensions } from '../shared/dimensions/dimensions'; +import CamerasTransferList from '../shared/components/CamerasTransferList'; +import { Context } from '..'; + +const AccessSettings = () => { + const { data, isPending, isError, refetch } = useQuery({ + queryKey: [frigateQueryKeys.getRoles], + queryFn: frigateApi.getRoles + }) + const { sideBarsStore } = useContext(Context) + + + useEffect(() => { + sideBarsStore.rightVisible = false + sideBarsStore.setLeftChildren(null) + sideBarsStore.setRightChildren(null) + }, []) + + const isMobile = useMediaQuery(dimensions.mobileSize) + const [roleId, setRoleId] = useState() + + + if (isPending) return + if (isError || !data) return + const rolesSelect: OneSelectItem[] = data.map(role => ({ value: role.id, label: role.name })) + + const handleSelectRole = (value: string) => { + setRoleId(value) + } + + console.log('AccessSettings rendered') + return ( + + Please select role + + {!isMobile ? : <>} + ) diff --git a/src/widgets/header/header.links.ts b/src/widgets/header/header.links.ts index abcad0c..8294765 100644 --- a/src/widgets/header/header.links.ts +++ b/src/widgets/header/header.links.ts @@ -10,6 +10,6 @@ export const testHeaderLinks: HeaderActionProps = {link: routesPath.SETTINGS_PATH, label: headerMenu.settings, links: []}, {link: routesPath.RECORDINGS_PATH, label: headerMenu.recordings, links: []}, {link: routesPath.HOSTS_PATH, label: headerMenu.hostsConfig, links: []}, - {link: routesPath.ROLES_PATH, label: headerMenu.acessSettings, links: []}, + {link: routesPath.ACCESS_PATH, label: headerMenu.acessSettings, links: []}, ] } \ No newline at end of file