Files
solana/explorer/src/components/ClusterStatusButton.tsx

48 lines
1.2 KiB
TypeScript
Raw Normal View History

import React from "react";
2020-03-31 14:36:40 +08:00
import { useCluster, ClusterStatus, Cluster } from "../providers/cluster";
2020-03-31 14:36:40 +08:00
function ClusterStatusButton({ onClick }: { onClick: () => void }) {
2020-03-19 18:18:58 +08:00
return (
<div onClick={onClick}>
<Button />
</div>
);
}
function Button() {
2020-03-31 14:36:40 +08:00
const { status, cluster, name, customUrl } = useCluster();
const statusName = cluster !== Cluster.Custom ? `${name}` : `${customUrl}`;
switch (status) {
2020-03-31 14:36:40 +08:00
case ClusterStatus.Connected:
2020-03-19 18:18:58 +08:00
return (
<span className="btn btn-outline-success lift">
<span className="fe fe-check-circle mr-2"></span>
{statusName}
</span>
);
2020-03-31 14:36:40 +08:00
case ClusterStatus.Connecting:
return (
2020-03-19 18:18:58 +08:00
<span className="btn btn-outline-warning lift">
<span
2020-03-19 18:18:58 +08:00
className="spinner-grow spinner-grow-sm text-warning mr-2"
role="status"
aria-hidden="true"
></span>
2020-03-19 18:18:58 +08:00
{statusName}
</span>
);
2020-03-31 14:36:40 +08:00
case ClusterStatus.Failure:
2020-03-19 18:18:58 +08:00
return (
<span className="btn btn-outline-danger lift">
<span className="fe fe-alert-circle mr-2"></span>
{statusName}
</span>
);
}
}
2020-03-31 14:36:40 +08:00
export default ClusterStatusButton;