Manage state per channel. Closes #2

This commit is contained in:
Paul
2021-08-07 20:43:08 +01:00
parent 7d76a657fa
commit 1f903cd56b
14 changed files with 392 additions and 404 deletions

View File

@@ -1,14 +1,16 @@
/* eslint-disable react-hooks/rules-of-hooks */
import { useRenderState } from "../../../lib/renderer/Singleton";
import { observer } from "mobx-react-lite";
import { Channel } from "revolt.js/dist/maps/Channels";
import { getRenderer } from "../../../lib/renderer/Singleton";
interface Props {
id: string;
channel: Channel;
}
export function ChannelDebugInfo({ id }: Props) {
export const ChannelDebugInfo = observer(({ channel }: Props) => {
if (process.env.NODE_ENV !== "development") return null;
const view = useRenderState(id);
if (!view) return null;
const renderer = getRenderer(channel);
return (
<span style={{ display: "block", padding: "12px 10px 0 10px" }}>
@@ -22,20 +24,26 @@ export function ChannelDebugInfo({ id }: Props) {
Channel Info
</span>
<p style={{ fontSize: "10px", userSelect: "text" }}>
State: <b>{view.type}</b> <br />
{view.type === "RENDER" && view.messages.length > 0 && (
State: <b>{renderer.state}</b> <br />
Stale: <b>{renderer.stale ? "Yes" : "No"}</b> <br />
Fetching: <b>{renderer.fetching ? "Yes" : "No"}</b> <br />
<br />
{renderer.state === "RENDER" && renderer.messages.length > 0 && (
<>
Start: <b>{view.messages[0]._id}</b> <br />
Start: <b>{renderer.messages[0]._id}</b> <br />
End:{" "}
<b>
{view.messages[view.messages.length - 1]._id}
{
renderer.messages[renderer.messages.length - 1]
._id
}
</b>{" "}
<br />
At Top: <b>{view.atTop ? "Yes" : "No"}</b> <br />
At Bottom: <b>{view.atBottom ? "Yes" : "No"}</b>
At Top: <b>{renderer.atTop ? "Yes" : "No"}</b> <br />
At Bottom: <b>{renderer.atBottom ? "Yes" : "No"}</b>
</>
)}
</p>
</span>
);
}
});