Skip to content

Commit

Permalink
centralized state (#221)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelquigley committed Oct 9, 2024
1 parent f0cd66d commit c02b9c2
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 45 deletions.
35 changes: 35 additions & 0 deletions agent/agentUi/src/AgentUi.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {createBrowserRouter, RouterProvider} from "react-router-dom";
import Overview from "./Overview.jsx";
import ShareDetail from "./ShareDetail.jsx";
import {useEffect, useState} from "react";
import {AgentApi, ApiClient} from "./api/src/index.js";

const AgentUi = (props) => {
const [version, setVersion] = useState("");

let api = new AgentApi(new ApiClient(window.location.protocol+'//'+window.location.host));

useEffect(() => {
let mounted = true;
api.agentVersion((err, data) => {
if(mounted) {
setVersion(data.v);
}
});
}, []);

const router = createBrowserRouter([
{
path: "/",
element: <Overview version={version} />
},
{
path: "/share/:token",
element: <ShareDetail version={version} />
}
]);

return <RouterProvider router={router} />
}

export default AgentUi;
31 changes: 8 additions & 23 deletions agent/agentUi/src/NavBar.jsx
Original file line number Diff line number Diff line change
@@ -1,44 +1,29 @@
import {useEffect, useState} from "react";
import {AgentApi, ApiClient} from "./api/src/index.js";
import {AppBar, Button, IconButton, Toolbar, Typography} from "@mui/material";
import MenuIcon from "@mui/icons-material/Menu";
import {Link} from "react-router-dom";
import ListIcon from "@mui/icons-material/List";
import LanIcon from "@mui/icons-material/Lan";
import ShareIcon from "@mui/icons-material/Share";

function NavBar() {
const [version, setVersion] = useState("");

let api = new AgentApi(new ApiClient(window.location.protocol+'//'+window.location.host));

useEffect(() => {
let mounted = true;
api.agentVersion((err, data) => {
if(mounted) {
setVersion(data.v);
}
});
}, []);

const NavBar = (props) => {
return (
<AppBar position={"static"}>
<Toolbar>
<IconButton
size={"large"}
size="large"
edge={"start"}
color={"inherit"}
color="inherit"
aria-label={"menu"}
sx={{mr: 2}}
>
<MenuIcon/>
</IconButton>
<Typography variant={"p"} component={"div"} sx={{flexGrow: 1}}>
zrok Agent { version !== "" ? " | " + version : ""}
<Typography variant="p" component={"div"} sx={{flexGrow: 1}}>
zrok Agent { props.version !== "" ? " | " + props.version : ""}
</Typography>
<Button color={"inherit"} component={Link} to={"/"}><ListIcon /></Button>
<Button color={"inherit"}><LanIcon /></Button>
<Button color={"inherit"}><ShareIcon /></Button>
<Button color="inherit" component={Link} to={"/"}><ListIcon /></Button>
<Button color="inherit"><LanIcon /></Button>
<Button color="inherit"><ShareIcon /></Button>
</Toolbar>
</AppBar>
)
Expand Down
4 changes: 2 additions & 2 deletions agent/agentUi/src/Overview.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {AgentApi, ApiClient} from "./api/src/index.js";
import DataTable from "react-data-table-component";
import NavBar from "./NavBar.jsx";

function Overview() {
const Overview = (props) => {
const [shares, setShares] = useState([]);
const [accesses, setAccesses] = useState([]);

Expand Down Expand Up @@ -67,7 +67,7 @@ function Overview() {

return (
<>
<NavBar />
<NavBar version={props.version} />

<div class={"info"}>
<h2>Shares</h2>
Expand Down
4 changes: 2 additions & 2 deletions agent/agentUi/src/ShareDetail.jsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import NavBar from "./NavBar.jsx";
import {useParams} from "react-router-dom";

function ShareDetail() {
const ShareDetail = (props) => {
let params = useParams();

return (
<>
<NavBar />
<NavBar version={props.version} />

<h1>Share {params.token}</h1>
</>
Expand Down
23 changes: 5 additions & 18 deletions agent/agentUi/src/main.jsx
Original file line number Diff line number Diff line change
@@ -1,23 +1,10 @@
import './index.css';
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import Overview from "./Overview.jsx";
import ShareDetail from "./ShareDetail.jsx";

const router = createBrowserRouter([
{
path: "/",
element: <Overview />
},
{
path: "/share/:token",
element: <ShareDetail />
}
]);
import "./index.css";
import {StrictMode} from "react";
import {createRoot} from "react-dom/client";
import AgentUi from "./AgentUi.jsx";

createRoot(document.getElementById('root')).render(
<StrictMode>
<RouterProvider router={router} />
<AgentUi />
</StrictMode>,
)

0 comments on commit c02b9c2

Please sign in to comment.