From 03377cbaef3bfac10038cefb4bd5dc4ecefcfd35 Mon Sep 17 00:00:00 2001 From: Ash Keel Date: Thu, 20 Jan 2022 12:22:58 +0100 Subject: [PATCH] I'm too tired to make a proper debug page, so here's a lazy port of the old one --- frontend/src/ui/pages/Debug.tsx | 127 +++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 4 deletions(-) diff --git a/frontend/src/ui/pages/Debug.tsx b/frontend/src/ui/pages/Debug.tsx index d7810a8..8b3e2c2 100644 --- a/frontend/src/ui/pages/Debug.tsx +++ b/frontend/src/ui/pages/Debug.tsx @@ -1,6 +1,20 @@ -import React from 'react'; +import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { Button, PageContainer, PageHeader, PageTitle, styled } from '../theme'; +import { useSelector } from 'react-redux'; +import { RootState } from '../../store'; +import { + Button, + Field, + FieldNote, + FlexRow, + InputBox, + Label, + PageContainer, + PageHeader, + PageTitle, + styled, + Textarea, +} from '../theme'; const Disclaimer = styled('div', { display: 'flex', @@ -21,7 +35,36 @@ const DisclaimerParagraph = styled('p', { export default function DebugPage(): React.ReactElement { const { t } = useTranslation(); - const [warningDismissed, setWarningDismissed] = React.useState(false); + const [warningDismissed, setWarningDismissed] = useState(false); + const [readKey, setReadKey] = useState(''); + const [readValue, setReadValue] = useState(''); + const [writeKey, setWriteKey] = useState(''); + const [writeValue, setWriteValue] = useState(''); + const [writeErrorMsg, setWriteErrorMsg] = useState(null); + const api = useSelector((state: RootState) => state.api.client); + + const performRead = async () => { + const value = await api.getKey(readKey); + setReadValue(value); + }; + const performWrite = async () => { + const result = await api.putKey(writeKey, writeValue); + console.log(result); + }; + const fixJSON = () => { + try { + setWriteValue(JSON.stringify(JSON.parse(writeValue))); + setWriteErrorMsg(null); + } catch (e) { + setWriteErrorMsg(e.message); + } + }; + const dumpKeys = async () => { + console.log(await api.keyList()); + }; + const dumpAll = async () => { + console.log(await api.getKeysByPrefix('')); + }; if (!warningDismissed) { return ( @@ -36,5 +79,81 @@ export default function DebugPage(): React.ReactElement { ); } - return WIP; + return ( + + + {t('pages.debug.title')} + + + + + + + + +
{ + e.preventDefault(); + if ((e.target as HTMLFormElement).checkValidity()) { + performRead(); + } + }} + > + + + + setReadKey(e.target.value)} + id="read-key" + css={{ flex: '1' }} + /> + + + + +
+ +
{ + e.preventDefault(); + if ((e.target as HTMLFormElement).checkValidity()) { + performWrite; + } + }} + > + + + + setWriteKey(e.target.value)} + id="write-key" + css={{ flex: '1' }} + /> + + + + + {writeErrorMsg && {writeErrorMsg}} + +
+
+ ); }