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')}
+
+
+
+
+
+
+
+
+
+
+
+
+ );
}