Improve flexibility of url parsing (#26)
This commit is contained in:
parent
1ad1ba73fa
commit
e59625a41d
|
@ -78,7 +78,8 @@ function networkReducer(state: State, action: Action): State {
|
|||
}
|
||||
|
||||
function initState(): State {
|
||||
const networkUrlParam = findGetParameter("networkUrl");
|
||||
const networkUrlParam =
|
||||
findGetParameter("clusterUrl") || findGetParameter("networkUrl");
|
||||
|
||||
let network;
|
||||
let customUrl = DEFAULT_CUSTOM_URL;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React from "react";
|
||||
import { TransactionSignature, Connection } from "@solana/web3.js";
|
||||
import { findGetParameter } from "../utils";
|
||||
import { findGetParameter, findPathSegment } from "../utils";
|
||||
import { useNetwork } from "../providers/network";
|
||||
|
||||
export enum Status {
|
||||
|
@ -85,9 +85,22 @@ function reducer(state: State, action: Action): State {
|
|||
return state;
|
||||
}
|
||||
|
||||
function urlSignatures(): Array<string> {
|
||||
const signatures: Array<string> = [];
|
||||
return signatures
|
||||
.concat(findGetParameter("tx")?.split(",") || [])
|
||||
.concat(findGetParameter("txn")?.split(",") || [])
|
||||
.concat(findGetParameter("txs")?.split(",") || [])
|
||||
.concat(findGetParameter("txns")?.split(",") || [])
|
||||
.concat(findGetParameter("transaction")?.split(",") || [])
|
||||
.concat(findGetParameter("transactions")?.split(",") || [])
|
||||
.concat(findPathSegment("transaction")?.split(",") || [])
|
||||
.concat(findPathSegment("transactions")?.split(",") || []);
|
||||
}
|
||||
|
||||
function initState(): State {
|
||||
let idCounter = 0;
|
||||
const signatures = findGetParameter("txs")?.split(",") || [];
|
||||
const signatures = urlSignatures();
|
||||
const transactions = signatures.reduce(
|
||||
(transactions: Transactions, signature) => {
|
||||
const id = ++idCounter;
|
||||
|
|
|
@ -11,6 +11,20 @@ export function findGetParameter(parameterName: string): string | null {
|
|||
return result;
|
||||
}
|
||||
|
||||
export function findPathSegment(pathName: string): string | null {
|
||||
const segments = window.location.pathname.substr(1).split("/");
|
||||
if (segments.length < 2) return null;
|
||||
|
||||
// remove all but last two segments
|
||||
segments.splice(0, segments.length - 2);
|
||||
|
||||
if (segments[0] === pathName) {
|
||||
return segments[1];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
export function assertUnreachable(x: never): never {
|
||||
throw new Error("Unreachable!");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue