partylights/boilerbloat/src/renderer/App.tsx
2021-11-10 00:38:22 +01:00

46 lines
955 B
TypeScript

import { MemoryRouter as Router, Switch, Route } from 'react-router-dom';
import { IpcRenderer } from 'electron/renderer';
import './App.css';
import { useEffect, useState } from 'react';
const ipcRenderer = (window as any).electron.ipcRenderer as IpcRenderer;
function tap() {
ipcRenderer.send("beat-tracking", "tap");
}
const Frontend: React.FC = () => {
const [state, setState] = useState<any>();
const pollMain = async () => {
const reply = await ipcRenderer.invoke("poll");
setState(reply);
}
useEffect(() => {
const interval = setInterval(pollMain, 20);
return () => clearInterval(interval);
});
return <>
<div>
State: {state ? JSON.stringify(state) : "undef"}
</div>
<div>
<button onClick={tap}>Tap</button>
</div>
</>;
};
export default function App() {
return (
<Router>
<Switch>
<Route path="/" component={Frontend} />
</Switch>
</Router>
);
}