mirror of https://github.com/jetkvm/kvm.git
refactor(ui): Don't fetch KeybardAndMouse Icon on every re-render (#795)
This commit is contained in:
parent
6202e3cafa
commit
8d1a66806c
|
@ -22,6 +22,39 @@ const USBStateMap: Record<USBStates, string> = {
|
||||||
"not attached": "Disconnected",
|
"not attached": "Disconnected",
|
||||||
suspended: "Low power mode",
|
suspended: "Low power mode",
|
||||||
};
|
};
|
||||||
|
const StatusCardProps: StatusProps = {
|
||||||
|
configured: {
|
||||||
|
icon: ({ className }) => (
|
||||||
|
<img className={cx(className)} src={KeyboardAndMouseConnectedIcon} alt="" />
|
||||||
|
),
|
||||||
|
iconClassName: "h-5 w-5 shrink-0",
|
||||||
|
statusIndicatorClassName: "bg-green-500 border-green-600",
|
||||||
|
},
|
||||||
|
attached: {
|
||||||
|
icon: ({ className }) => <LoadingSpinner className={cx(className)} />,
|
||||||
|
iconClassName: "h-5 w-5 text-blue-500",
|
||||||
|
statusIndicatorClassName: "bg-slate-300 border-slate-400",
|
||||||
|
},
|
||||||
|
addressed: {
|
||||||
|
icon: ({ className }) => <LoadingSpinner className={cx(className)} />,
|
||||||
|
iconClassName: "h-5 w-5 text-blue-500",
|
||||||
|
statusIndicatorClassName: "bg-slate-300 border-slate-400",
|
||||||
|
},
|
||||||
|
"not attached": {
|
||||||
|
icon: ({ className }) => (
|
||||||
|
<img className={cx(className)} src={KeyboardAndMouseConnectedIcon} alt="" />
|
||||||
|
),
|
||||||
|
iconClassName: "h-5 w-5 opacity-50 grayscale filter",
|
||||||
|
statusIndicatorClassName: "bg-slate-300 border-slate-400",
|
||||||
|
},
|
||||||
|
suspended: {
|
||||||
|
icon: ({ className }) => (
|
||||||
|
<img className={cx(className)} src={KeyboardAndMouseConnectedIcon} alt="" />
|
||||||
|
),
|
||||||
|
iconClassName: "h-5 w-5 opacity-50 grayscale filter",
|
||||||
|
statusIndicatorClassName: "bg-green-500 border-green-600",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
export default function USBStateStatus({
|
export default function USBStateStatus({
|
||||||
state,
|
state,
|
||||||
|
@ -30,39 +63,7 @@ export default function USBStateStatus({
|
||||||
state: USBStates;
|
state: USBStates;
|
||||||
peerConnectionState?: RTCPeerConnectionState | null;
|
peerConnectionState?: RTCPeerConnectionState | null;
|
||||||
}) {
|
}) {
|
||||||
const StatusCardProps: StatusProps = {
|
|
||||||
configured: {
|
|
||||||
icon: ({ className }) => (
|
|
||||||
<img className={cx(className)} src={KeyboardAndMouseConnectedIcon} alt="" />
|
|
||||||
),
|
|
||||||
iconClassName: "h-5 w-5 shrink-0",
|
|
||||||
statusIndicatorClassName: "bg-green-500 border-green-600",
|
|
||||||
},
|
|
||||||
attached: {
|
|
||||||
icon: ({ className }) => <LoadingSpinner className={cx(className)} />,
|
|
||||||
iconClassName: "h-5 w-5 text-blue-500",
|
|
||||||
statusIndicatorClassName: "bg-slate-300 border-slate-400",
|
|
||||||
},
|
|
||||||
addressed: {
|
|
||||||
icon: ({ className }) => <LoadingSpinner className={cx(className)} />,
|
|
||||||
iconClassName: "h-5 w-5 text-blue-500",
|
|
||||||
statusIndicatorClassName: "bg-slate-300 border-slate-400",
|
|
||||||
},
|
|
||||||
"not attached": {
|
|
||||||
icon: ({ className }) => (
|
|
||||||
<img className={cx(className)} src={KeyboardAndMouseConnectedIcon} alt="" />
|
|
||||||
),
|
|
||||||
iconClassName: "h-5 w-5 opacity-50 grayscale filter",
|
|
||||||
statusIndicatorClassName: "bg-slate-300 border-slate-400",
|
|
||||||
},
|
|
||||||
suspended: {
|
|
||||||
icon: ({ className }) => (
|
|
||||||
<img className={cx(className)} src={KeyboardAndMouseConnectedIcon} alt="" />
|
|
||||||
),
|
|
||||||
iconClassName: "h-5 w-5 opacity-50 grayscale filter",
|
|
||||||
statusIndicatorClassName: "bg-green-500 border-green-600",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const props = StatusCardProps[state];
|
const props = StatusCardProps[state];
|
||||||
if (!props) {
|
if (!props) {
|
||||||
console.warn("Unsupported USB state: ", state);
|
console.warn("Unsupported USB state: ", state);
|
||||||
|
|
Loading…
Reference in New Issue