Improve flexibility of url parsing (#26)
This commit is contained in:
committed by
Michael Vines
parent
1ad1ba73fa
commit
e59625a41d
@ -78,7 +78,8 @@ function networkReducer(state: State, action: Action): State {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initState(): State {
|
function initState(): State {
|
||||||
const networkUrlParam = findGetParameter("networkUrl");
|
const networkUrlParam =
|
||||||
|
findGetParameter("clusterUrl") || findGetParameter("networkUrl");
|
||||||
|
|
||||||
let network;
|
let network;
|
||||||
let customUrl = DEFAULT_CUSTOM_URL;
|
let customUrl = DEFAULT_CUSTOM_URL;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { TransactionSignature, Connection } from "@solana/web3.js";
|
import { TransactionSignature, Connection } from "@solana/web3.js";
|
||||||
import { findGetParameter } from "../utils";
|
import { findGetParameter, findPathSegment } from "../utils";
|
||||||
import { useNetwork } from "../providers/network";
|
import { useNetwork } from "../providers/network";
|
||||||
|
|
||||||
export enum Status {
|
export enum Status {
|
||||||
@ -85,9 +85,22 @@ function reducer(state: State, action: Action): State {
|
|||||||
return 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 {
|
function initState(): State {
|
||||||
let idCounter = 0;
|
let idCounter = 0;
|
||||||
const signatures = findGetParameter("txs")?.split(",") || [];
|
const signatures = urlSignatures();
|
||||||
const transactions = signatures.reduce(
|
const transactions = signatures.reduce(
|
||||||
(transactions: Transactions, signature) => {
|
(transactions: Transactions, signature) => {
|
||||||
const id = ++idCounter;
|
const id = ++idCounter;
|
||||||
|
@ -11,6 +11,20 @@ export function findGetParameter(parameterName: string): string | null {
|
|||||||
return result;
|
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 {
|
export function assertUnreachable(x: never): never {
|
||||||
throw new Error("Unreachable!");
|
throw new Error("Unreachable!");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user