Webui: proper async hash

This commit is contained in:
2025-04-25 11:03:39 +02:00
parent bed55162d7
commit e7f22d783f
4 changed files with 42 additions and 12 deletions

View File

@@ -2,10 +2,13 @@ import { TAvailablePeerInfoTo } from "./api/dto";
import { useFetcher } from "react-router-dom";
import "./PeerAvailableCard.scss";
import { hashCert } from "./hash";
interface TAvailablePeerInfoToWithHash extends TAvailablePeerInfoTo {
certHash: string;
}
export interface TPeerAvailableCardProps {
peerInfo: TAvailablePeerInfoTo;
peerInfo: TAvailablePeerInfoToWithHash;
}
export function PeerAvailableCard({ peerInfo }: TPeerAvailableCardProps) {
@@ -18,7 +21,7 @@ export function PeerAvailableCard({ peerInfo }: TPeerAvailableCardProps) {
<span>{peerInfo.uuid}</span>
</div>
<div>
<span>Cert: {hashCert(peerInfo.cert)}</span>
<span>Cert: {peerInfo.certHash}</span>
</div>
</div>
<fetcher.Form

View File

@@ -4,10 +4,13 @@ import "./PeerKnownCard.scss";
import { useFetcher, useLoaderData } from "react-router-dom";
import { LoaderToType } from "./commonPlumbing";
import { peerStateLoader } from "./PeerStatePlumbing";
import { hashCert } from "./hash";
interface TKnownPeerInfoToWithHash extends TKnownPeerInfoTo {
certHash: string;
}
export interface TPeerKnownCardProps {
peerInfo: TKnownPeerInfoTo;
peerInfo: TKnownPeerInfoToWithHash;
}
export function PeerKnownCard({ peerInfo }: TPeerKnownCardProps) {
@@ -34,7 +37,7 @@ export function PeerKnownCard({ peerInfo }: TPeerKnownCardProps) {
</span>
</div>
<div>
<span>Cert: {hashCert(peerInfo.cert)}</span>
<span>Cert: {peerInfo.certHash}</span>
</div>
</div>
<div>

View File

@@ -4,7 +4,6 @@ import { LoaderToType } from "./commonPlumbing";
import { peerStateLoader } from "./PeerStatePlumbing";
import { PeerAvailableCard } from "./PeerAvailableCard";
import { PeerKnownCard } from "./PeerKnownCard";
import { hashCert } from "./hash";
export function PeerState() {
const loaderData = useLoaderData() as LoaderToType<typeof peerStateLoader>;
@@ -20,7 +19,7 @@ export function PeerState() {
return (
<div id={"PeerState"}>
<div>UUID: {loaderData.selfInfo.selfUuid}</div>
<div>Certificate: {hashCert(loaderData.selfInfo.cert)} </div>
<div>Certificate: {loaderData.selfInfo.certHash} </div>
<div>
<div>Known peers</div>
<div>{knownPeers}</div>

View File

@@ -8,13 +8,38 @@ import {
removeKnownPeer,
} from "./api/PeerState";
import { ActionFunctionArgs } from "react-router-dom";
import { hashCert } from "./hash";
export async function peerStateLoader() {
const selfInfoApi = await getSelfInfo();
const selfInfo = {
...selfInfoApi,
certHash: await hashCert(selfInfoApi.cert),
};
const availablePeersApi = await getAvailablePeers();
const availablePeers = await Promise.all(
availablePeersApi.map(async (peerInfo) => {
return {
...peerInfo,
certHash: await hashCert(peerInfo.cert),
};
}),
);
const knownPeersApi = await getKnownPeers();
const knownPeers = await Promise.all(
knownPeersApi.map(async (peerInfo) => {
return {
...peerInfo,
certHash: await hashCert(peerInfo.cert),
};
}),
);
const peerAddresses = await getPeerAddresses();
return {
selfInfo: await getSelfInfo(),
availablePeers: await getAvailablePeers(),
knownPeers: await getKnownPeers(),
peerAddresses: await getPeerAddresses(),
selfInfo,
availablePeers,
knownPeers,
peerAddresses,
};
}