Optimize rendering, fix Android app extraction, and remove Cloudflare token leak
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { useEffect, useMemo, useRef, useState, memo } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { api } from '../../api/client';
|
||||
import {
|
||||
@@ -72,7 +72,7 @@ function AttemptMiniList({
|
||||
);
|
||||
}
|
||||
|
||||
export default function AccessDepthPanel({ agent, diagnostics }: Props) {
|
||||
function AccessDepthPanel({ agent, diagnostics }: Props) {
|
||||
const { latestMessage } = useWebSocket();
|
||||
const [policyLoaded, setPolicyLoaded] = useState(false);
|
||||
const [serverPolicy, setServerPolicy] = useState(parseAccessDepthServerPolicy({}));
|
||||
@@ -440,3 +440,5 @@ export default function AccessDepthPanel({ agent, diagnostics }: Props) {
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
export default memo(AccessDepthPanel);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useEffect, useRef } from 'react';
|
||||
import { useEffect, useRef, memo } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import type { Agent } from '../../types';
|
||||
import { agentsConnectedNotHashing, simpleDeployCalibrateFix, simpleDeployStatus } from '../../help/simpleDeploy';
|
||||
@@ -13,7 +13,7 @@ interface Props {
|
||||
const AUTO_RESTART_MS = 60_000;
|
||||
|
||||
/** Banner when agents are online but not hashing — with actionable fix buttons. */
|
||||
export default function ConnectedNotMiningBanner({ agents, selectedIds, onAction }: Props) {
|
||||
function ConnectedNotMiningBanner({ agents, selectedIds, onAction }: Props) {
|
||||
const stuck = agentsConnectedNotHashing(agents);
|
||||
const firstSeenRef = useRef<Map<string, number>>(new Map());
|
||||
const autoRestartedRef = useRef<Set<string>>(new Set());
|
||||
@@ -107,3 +107,5 @@ export default function ConnectedNotMiningBanner({ agents, selectedIds, onAction
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default memo(ConnectedNotMiningBanner);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState, useEffect, useRef, useCallback } from 'react';
|
||||
import { useState, useEffect, useRef, useCallback, memo } from 'react';
|
||||
import { api } from '../../api/client';
|
||||
import type { Agent, Build } from '../../types';
|
||||
import { aggressiveActionHint, type AggressiveRemoteAction } from '../../help/aggressiveActions';
|
||||
@@ -50,7 +50,7 @@ interface Props {
|
||||
onDispatchTunnel: (action: string, args?: Record<string, unknown>) => Promise<void>;
|
||||
}
|
||||
|
||||
export default function CrucibleExpandedOps({
|
||||
function CrucibleExpandedOps({
|
||||
activeTab,
|
||||
spreadHostHint = '',
|
||||
selectedAgents,
|
||||
@@ -957,3 +957,5 @@ export default function CrucibleExpandedOps({
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
export default memo(CrucibleExpandedOps);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { memo } from 'react';
|
||||
import type { FleetGroup } from '../../help/fleetGroups';
|
||||
import { HelpTip } from '../HelpTip';
|
||||
import './FleetGroupsStrip.css';
|
||||
@@ -11,7 +12,7 @@ interface Props {
|
||||
selectedCount?: number;
|
||||
}
|
||||
|
||||
export default function FleetGroupsStrip({
|
||||
function FleetGroupsStrip({
|
||||
groups,
|
||||
liveAgentIds,
|
||||
onSelectGroup,
|
||||
@@ -80,3 +81,5 @@ export default function FleetGroupsStrip({
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default memo(FleetGroupsStrip);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { useEffect, useMemo, useRef, useState, memo } from 'react';
|
||||
import type { Agent } from '../../types';
|
||||
import type { FleetGroup } from '../../help/fleetGroups';
|
||||
import { formatHashrate } from '../../help/fleetFilters';
|
||||
@@ -22,7 +22,7 @@ interface FleetHeatMiniMapProps {
|
||||
onSelectAgent: (id: string) => void;
|
||||
}
|
||||
|
||||
export default function FleetHeatMiniMap({
|
||||
function FleetHeatMiniMap({
|
||||
agents,
|
||||
groups,
|
||||
allIds,
|
||||
@@ -170,3 +170,5 @@ export default function FleetHeatMiniMap({
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default memo(FleetHeatMiniMap);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { memo } from 'react';
|
||||
import type { FleetFilterState } from '../../help/fleetFilters';
|
||||
import { collectFleetSubnets, collectFleetTags } from '../../help/fleetFilters';
|
||||
import type { Agent } from '../../types';
|
||||
@@ -17,7 +18,7 @@ interface Props {
|
||||
bulkBusy: boolean;
|
||||
}
|
||||
|
||||
export default function FleetToolbar({
|
||||
function FleetToolbar({
|
||||
agents,
|
||||
filters,
|
||||
onChange,
|
||||
@@ -143,3 +144,5 @@ export default function FleetToolbar({
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default memo(FleetToolbar);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { ReactNode } from 'react';
|
||||
import { memo, type ReactNode } from 'react';
|
||||
import type { FullSysCheckReport } from '../../types/syscheck';
|
||||
import './FullSysCheckPanel.css';
|
||||
|
||||
@@ -26,7 +26,7 @@ function BoolBadge({ v, yes = 'YES', no = 'NO' }: { v?: boolean; yes?: string; n
|
||||
return <span className={v ? 'syscheck-ok' : 'syscheck-bad'}>{v ? yes : no}</span>;
|
||||
}
|
||||
|
||||
export default function FullSysCheckPanel({
|
||||
function FullSysCheckPanel({
|
||||
report,
|
||||
agentName,
|
||||
onClose,
|
||||
@@ -288,3 +288,5 @@ export default function FullSysCheckPanel({
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default memo(FullSysCheckPanel);
|
||||
|
||||
Reference in New Issue
Block a user