Convert all pages to Typescript
Convert all files in `client/src/pages` to Typescript
Gitlab: #30
Change-Id: I9b5ec5b042487d732bb7d46b584f797049eb068c
diff --git a/client/src/pages/ServerConfiguration.tsx b/client/src/pages/ServerConfiguration.tsx
new file mode 100644
index 0000000..e9e5328
--- /dev/null
+++ b/client/src/pages/ServerConfiguration.tsx
@@ -0,0 +1,41 @@
+import CircularProgress from '@mui/material/CircularProgress';
+import Container from '@mui/material/Container';
+import { useEffect, useState } from 'react';
+import { useParams } from 'react-router-dom';
+
+import Account from '../../../model/Account';
+import authManager from '../AuthManager';
+import AccountPreferences from '../components/AccountPreferences';
+import Header from '../components/Header';
+
+type ServerOverviewProps = {
+ accountId?: string;
+};
+
+const ServerOverview = (props: ServerOverviewProps) => {
+ const [account, setAccount] = useState<Account | null>(null);
+ const params = useParams();
+ const accountId = props.accountId || params.accountId;
+
+ useEffect(() => {
+ const controller = new AbortController();
+ authManager
+ .fetch(`/api/serverConfig`, { signal: controller.signal })
+ .then((res) => res.json())
+ .then((result) => {
+ console.log(result);
+ setAccount(Account.from(result));
+ })
+ .catch((e) => console.log(e));
+ // return () => controller.abort() // crash on React18
+ }, [accountId]);
+
+ return (
+ <Container maxWidth="sm" className="app">
+ <Header />
+ {account != null ? <AccountPreferences account={account} /> : <CircularProgress />}
+ </Container>
+ );
+};
+
+export default ServerOverview;