Skip to content

Commit

Permalink
Merge pull request #97 from NillionNetwork/chore/allow-paramter-react…
Browse files Browse the repository at this point in the history
…-client

fix: default bootnodeurl for the testnet and parametrize client component
  • Loading branch information
pablojhl authored Feb 6, 2025
2 parents 6a3f7b1 + 2d29d79 commit f69e1b3
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 22 deletions.
2 changes: 1 addition & 1 deletion client-react-hooks/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "@nillion/client-react-hooks",
"license": "MIT",
"author": "devsupport@nillion.com",
"version": "0.3.1",
"version": "0.3.2",
"homepage": "https://nillion.pub/client-ts",
"repository": {
"type": "git",
Expand Down
68 changes: 47 additions & 21 deletions client-react-hooks/src/create-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,39 @@ export type TestnetOptions = {
seed: string;
keplr: Keplr;
paymentMode?: PaymentMode;
config?: TestnetConfig;
};

export type TestnetConfig = {
bootnodeUrl: string;
chainUrl: string;
chainId: string;
};

const TestnetDefaultConfig: TestnetConfig = {
bootnodeUrl:
"https://node-1.nilvm-testnet-1.nillion-network.testnet.nillion.network:14311",
chainUrl: "http://rpc.testnet.nilchain-rpc-proxy.nilogy.xyz",
chainId: "nillion-chain-testnet-1",
};

export type DevnetOptions = {
network: "devnet";
seed?: string;
signer?: Keplr | OfflineSigner;
paymentMode?: PaymentMode;
config?: DevnetConfig;
};

type Options = DevnetOptions | TestnetOptions;
export type DevnetConfig = {
bootnodeUrl: string;
chainUrl: string;
chainId: string;
seed: string;
nilchainPrivateKey0: string;
};

const DevnetConfig = {
const DevnetDefaultConfig: DevnetConfig = {
bootnodeUrl: "http://127.0.0.1:43207",
chainUrl: "http://127.0.0.1:48102",
chainId: "nillion-chain-devnet",
Expand All @@ -29,48 +50,53 @@ const DevnetConfig = {
"9a975f567428d054f2bf3092812e6c42f901ce07d9711bc77ee2cd81101f42c5",
};

const TestnetConfig = {
bootnodeUrl: "https://node-1.photon2.nillion-network.nilogy.xyz:14311/",
chainUrl: "http://rpc.testnet.nilchain-rpc-proxy.nilogy.xyz",
chainId: "nillion-chain-testnet-1",
};
type Options = DevnetOptions | TestnetOptions;

export async function createClient(options: Options) {
const builder = new VmClientBuilder(options.paymentMode);
switch (options.network.toLowerCase()) {
case "devnet": {
const config = options as DevnetOptions;
const network = options as DevnetOptions;
let config = DevnetDefaultConfig;
if (network.config !== undefined) {
config = network.config;
}

let signer: OfflineSigner;

if (config.signer) {
if ("getOfflineSigner" in config.signer) {
signer = config.signer.getOfflineSigner(DevnetConfig.chainId);
if (network.signer) {
if ("getOfflineSigner" in network.signer) {
signer = network.signer.getOfflineSigner(config.chainId);
} else {
signer = config.signer;
signer = network.signer;
}
} else {
signer = await createSignerFromKey(DevnetConfig.nilchainPrivateKey0);
signer = await createSignerFromKey(config.nilchainPrivateKey0);
}

const seed = config.seed ? config.seed : DevnetConfig.seed;
const seed = network.seed ? network.seed : config.seed;

builder
.seed(seed)
.bootnodeUrl(DevnetConfig.bootnodeUrl)
.chainUrl(DevnetConfig.chainUrl)
.bootnodeUrl(config.bootnodeUrl)
.chainUrl(config.chainUrl)
.signer(signer);

break;
}
case "testnet": {
const config = options as TestnetOptions;
const signer = config.keplr.getOfflineSigner(TestnetConfig.chainId);
const network = options as TestnetOptions;
let config = TestnetDefaultConfig;
if (network.config !== undefined) {
config = network.config;
}

const signer = network.keplr.getOfflineSigner(config.chainId);

builder
.seed(config.seed)
.bootnodeUrl(TestnetConfig.bootnodeUrl)
.chainUrl(TestnetConfig.chainUrl)
.seed(network.seed)
.bootnodeUrl(config.bootnodeUrl)
.chainUrl(config.chainUrl)
.signer(signer);

break;
Expand Down

0 comments on commit f69e1b3

Please # to comment.