- {NETWORKS.map((net, index) => {
- const active = net === network;
- if (net === Network.Custom)
+ {CLUSTERS.map((net, index) => {
+ const active = net === cluster;
+ if (net === Cluster.Custom)
return (
-
updateNetwork(dispatch, net, customUrl)}
+ onChange={() => updateCluster(dispatch, net, customUrl)}
/>
- {`${networkName(net)}: `}
+ {`${clusterName(net)}: `}
- {networkUrl(net, customUrl)}
+ {clusterUrl(net, customUrl)}
);
@@ -134,4 +134,4 @@ function NetworkToggle() {
);
}
-export default NetworkModal;
+export default ClusterModal;
diff --git a/explorer/src/components/NetworkStatusButton.tsx b/explorer/src/components/ClusterStatusButton.tsx
similarity index 66%
rename from explorer/src/components/NetworkStatusButton.tsx
rename to explorer/src/components/ClusterStatusButton.tsx
index 308e12f708..ab7013f388 100644
--- a/explorer/src/components/NetworkStatusButton.tsx
+++ b/explorer/src/components/ClusterStatusButton.tsx
@@ -1,7 +1,7 @@
import React from "react";
-import { useNetwork, NetworkStatus, Network } from "../providers/network";
+import { useCluster, ClusterStatus, Cluster } from "../providers/cluster";
-function NetworkStatusButton({ onClick }: { onClick: () => void }) {
+function ClusterStatusButton({ onClick }: { onClick: () => void }) {
return (
@@ -10,11 +10,11 @@ function NetworkStatusButton({ onClick }: { onClick: () => void }) {
}
function Button() {
- const { status, network, name, customUrl } = useNetwork();
- const statusName = network !== Network.Custom ? `${name}` : `${customUrl}`;
+ const { status, cluster, name, customUrl } = useCluster();
+ const statusName = cluster !== Cluster.Custom ? `${name}` : `${customUrl}`;
switch (status) {
- case NetworkStatus.Connected:
+ case ClusterStatus.Connected:
return (
@@ -22,7 +22,7 @@ function Button() {
);
- case NetworkStatus.Connecting:
+ case ClusterStatus.Connecting:
return (
);
- case NetworkStatus.Failure:
+ case ClusterStatus.Failure:
return (
@@ -44,4 +44,4 @@ function Button() {
}
}
-export default NetworkStatusButton;
+export default ClusterStatusButton;
diff --git a/explorer/src/components/TransactionsCard.tsx b/explorer/src/components/TransactionsCard.tsx
index cf2649976e..66e22ea8d2 100644
--- a/explorer/src/components/TransactionsCard.tsx
+++ b/explorer/src/components/TransactionsCard.tsx
@@ -9,14 +9,14 @@ import {
} from "../providers/transactions";
import bs58 from "bs58";
import { assertUnreachable } from "../utils";
-import { useNetwork } from "../providers/network";
+import { useCluster } from "../providers/cluster";
function TransactionsCard() {
const { transactions, idCounter } = useTransactions();
const dispatch = useTransactionsDispatch();
const signatureInput = React.useRef(null);
const [error, setError] = React.useState("");
- const { url } = useNetwork();
+ const { url } = useCluster();
const onNew = (signature: string) => {
if (signature.length === 0) return;
@@ -115,7 +115,7 @@ const renderTransactionRow = (transaction: Transaction) => {
switch (transaction.status) {
case Status.CheckFailed:
statusClass = "dark";
- statusText = "Network Error";
+ statusText = "Cluster Error";
break;
case Status.Checking:
statusClass = "info";
diff --git a/explorer/src/providers/network.tsx b/explorer/src/providers/cluster.tsx
similarity index 54%
rename from explorer/src/providers/network.tsx
rename to explorer/src/providers/cluster.tsx
index 95d7f75172..b1052812e0 100644
--- a/explorer/src/providers/network.tsx
+++ b/explorer/src/providers/cluster.tsx
@@ -2,35 +2,35 @@ import React from "react";
import { testnetChannelEndpoint, Connection } from "@solana/web3.js";
import { findGetParameter } from "../utils";
-export enum NetworkStatus {
+export enum ClusterStatus {
Connected,
Connecting,
Failure
}
-export enum Network {
+export enum Cluster {
MainnetBeta,
Testnet,
Devnet,
Custom
}
-export const NETWORKS = [
- Network.MainnetBeta,
- Network.Testnet,
- Network.Devnet,
- Network.Custom
+export const CLUSTERS = [
+ Cluster.MainnetBeta,
+ Cluster.Testnet,
+ Cluster.Devnet,
+ Cluster.Custom
];
-export function networkName(network: Network): string {
- switch (network) {
- case Network.MainnetBeta:
+export function clusterName(cluster: Cluster): string {
+ switch (cluster) {
+ case Cluster.MainnetBeta:
return "Mainnet Beta";
- case Network.Testnet:
+ case Cluster.Testnet:
return "Testnet";
- case Network.Devnet:
+ case Cluster.Devnet:
return "Devnet";
- case Network.Custom:
+ case Cluster.Custom:
return "Custom";
}
}
@@ -39,39 +39,39 @@ export const MAINNET_BETA_URL = "https://api.mainnet-beta.solana.com";
export const TESTNET_URL = "https://testnet.solana.com";
export const DEVNET_URL = testnetChannelEndpoint("stable");
-export const DEFAULT_NETWORK = Network.MainnetBeta;
+export const DEFAULT_CLUSTER = Cluster.MainnetBeta;
export const DEFAULT_CUSTOM_URL = "http://localhost:8899";
interface State {
- network: Network;
+ cluster: Cluster;
customUrl: string;
- status: NetworkStatus;
+ status: ClusterStatus;
}
interface Connecting {
- status: NetworkStatus.Connecting;
- network: Network;
+ status: ClusterStatus.Connecting;
+ cluster: Cluster;
customUrl: string;
}
interface Connected {
- status: NetworkStatus.Connected;
+ status: ClusterStatus.Connected;
}
interface Failure {
- status: NetworkStatus.Failure;
+ status: ClusterStatus.Failure;
}
type Action = Connected | Connecting | Failure;
type Dispatch = (action: Action) => void;
-function networkReducer(state: State, action: Action): State {
+function clusterReducer(state: State, action: Action): State {
switch (action.status) {
- case NetworkStatus.Connected:
- case NetworkStatus.Failure: {
+ case ClusterStatus.Connected:
+ case ClusterStatus.Failure: {
return Object.assign({}, state, { status: action.status });
}
- case NetworkStatus.Connecting: {
+ case ClusterStatus.Connecting: {
return action;
}
}
@@ -83,62 +83,62 @@ function initState(): State {
const clusterUrlParam =
findGetParameter("clusterUrl") || findGetParameter("networkUrl");
- let network;
+ let cluster;
let customUrl = DEFAULT_CUSTOM_URL;
switch (clusterUrlParam) {
case MAINNET_BETA_URL:
- network = Network.MainnetBeta;
+ cluster = Cluster.MainnetBeta;
break;
case DEVNET_URL:
- network = Network.Devnet;
+ cluster = Cluster.Devnet;
break;
case TESTNET_URL:
- network = Network.Testnet;
+ cluster = Cluster.Testnet;
break;
}
switch (clusterParam) {
case "mainnet-beta":
- network = Network.MainnetBeta;
+ cluster = Cluster.MainnetBeta;
break;
case "devnet":
- network = Network.Devnet;
+ cluster = Cluster.Devnet;
break;
case "testnet":
- network = Network.Testnet;
+ cluster = Cluster.Testnet;
break;
}
- if (!network) {
+ if (!cluster) {
if (!clusterUrlParam) {
- network = DEFAULT_NETWORK;
+ cluster = DEFAULT_CLUSTER;
} else {
- network = Network.Custom;
+ cluster = Cluster.Custom;
customUrl = clusterUrlParam;
}
}
return {
- network,
+ cluster,
customUrl,
- status: NetworkStatus.Connecting
+ status: ClusterStatus.Connecting
};
}
const StateContext = React.createContext(undefined);
const DispatchContext = React.createContext(undefined);
-type NetworkProviderProps = { children: React.ReactNode };
-export function NetworkProvider({ children }: NetworkProviderProps) {
+type ClusterProviderProps = { children: React.ReactNode };
+export function ClusterProvider({ children }: ClusterProviderProps) {
const [state, dispatch] = React.useReducer(
- networkReducer,
+ clusterReducer,
undefined,
initState
);
React.useEffect(() => {
- // Connect to network immediately
- updateNetwork(dispatch, state.network, state.customUrl);
+ // Connect to cluster immediately
+ updateCluster(dispatch, state.cluster, state.customUrl);
}, []); // eslint-disable-line react-hooks/exhaustive-deps
return (
@@ -150,56 +150,56 @@ export function NetworkProvider({ children }: NetworkProviderProps) {
);
}
-export function networkUrl(network: Network, customUrl: string): string {
- switch (network) {
- case Network.Devnet:
+export function clusterUrl(cluster: Cluster, customUrl: string): string {
+ switch (cluster) {
+ case Cluster.Devnet:
return DEVNET_URL;
- case Network.MainnetBeta:
+ case Cluster.MainnetBeta:
return MAINNET_BETA_URL;
- case Network.Testnet:
+ case Cluster.Testnet:
return TESTNET_URL;
- case Network.Custom:
+ case Cluster.Custom:
return customUrl;
}
}
-export async function updateNetwork(
+export async function updateCluster(
dispatch: Dispatch,
- network: Network,
+ cluster: Cluster,
customUrl: string
) {
dispatch({
- status: NetworkStatus.Connecting,
- network,
+ status: ClusterStatus.Connecting,
+ cluster,
customUrl
});
try {
- const connection = new Connection(networkUrl(network, customUrl));
+ const connection = new Connection(clusterUrl(cluster, customUrl));
await connection.getRecentBlockhash();
- dispatch({ status: NetworkStatus.Connected });
+ dispatch({ status: ClusterStatus.Connected });
} catch (error) {
- console.error("Failed to update network", error);
- dispatch({ status: NetworkStatus.Failure });
+ console.error("Failed to update cluster", error);
+ dispatch({ status: ClusterStatus.Failure });
}
}
-export function useNetwork() {
+export function useCluster() {
const context = React.useContext(StateContext);
if (!context) {
- throw new Error(`useNetwork must be used within a NetworkProvider`);
+ throw new Error(`useCluster must be used within a ClusterProvider`);
}
return {
...context,
- url: networkUrl(context.network, context.customUrl),
- name: networkName(context.network)
+ url: clusterUrl(context.cluster, context.customUrl),
+ name: clusterName(context.cluster)
};
}
-export function useNetworkDispatch() {
+export function useClusterDispatch() {
const context = React.useContext(DispatchContext);
if (!context) {
- throw new Error(`useNetworkDispatch must be used within a NetworkProvider`);
+ throw new Error(`useClusterDispatch must be used within a ClusterProvider`);
}
return context;
}
diff --git a/explorer/src/providers/transactions.tsx b/explorer/src/providers/transactions.tsx
index 883958b461..c91788d880 100644
--- a/explorer/src/providers/transactions.tsx
+++ b/explorer/src/providers/transactions.tsx
@@ -1,7 +1,7 @@
import React from "react";
import { TransactionSignature, Connection } from "@solana/web3.js";
import { findGetParameter, findPathSegment } from "../utils";
-import { useNetwork } from "../providers/network";
+import { useCluster } from "../providers/cluster";
export enum Status {
Checking,
@@ -124,9 +124,9 @@ type TransactionsProviderProps = { children: React.ReactNode };
export function TransactionsProvider({ children }: TransactionsProviderProps) {
const [state, dispatch] = React.useReducer(reducer, undefined, initState);
- const { status, url } = useNetwork();
+ const { status, url } = useCluster();
- // Check transaction statuses on startup and whenever network updates
+ // Check transaction statuses on startup and whenever cluster updates
React.useEffect(() => {
Object.values(state.transactions).forEach(tx => {
checkTransactionStatus(dispatch, tx.id, tx.signature, url);