Improve flexibility of url parsing (#26)

This commit is contained in:
Justin Starry 2020-03-30 23:34:03 +08:00 committed by Michael Vines
parent 1ad1ba73fa
commit e59625a41d
3 changed files with 31 additions and 3 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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!");
}