diff --git a/Cargo.lock b/Cargo.lock index 86482d8a82..aa8c3eb28e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1629,7 +1629,7 @@ dependencies = [ [[package]] name = "nym-client-wasm" -version = "0.1.2" +version = "0.1.3" dependencies = [ "console_error_panic_hook", "crypto", diff --git a/clients/webassembly/Cargo.toml b/clients/webassembly/Cargo.toml index 07b4443117..3a12c97172 100644 --- a/clients/webassembly/Cargo.toml +++ b/clients/webassembly/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-client-wasm" -version = "0.1.2" +version = "0.1.3" authors = ["Dave Hrycyszyn ", "Jedrzej Stuczynski "] edition = "2018" repository = "https://github.com/nymtech/nym" diff --git a/clients/webassembly/helpers.js b/clients/webassembly/helpers.js index a1f1355263..e3b2dd16de 100644 --- a/clients/webassembly/helpers.js +++ b/clients/webassembly/helpers.js @@ -8,6 +8,14 @@ export function makeAuthenticateRequest(address, token) { return JSON.stringify({ "type": "authenticate", "address": address, "token": token }); } +export async function getInitialGatewayAddress(directoryUrl) { + const topology = await getTopology(directoryUrl); + if (topology.gatewayNodes.length > 0) { + return topology.gatewayNodes[0].clientListener; + } + return ""; +} + // NOTE: this currently does not implement chunking and too long messages will cause a panic export function makeSendablePacket(topology, message, recipient) { return wasm.create_gateway_sphinx_packet(topology, message, recipient); diff --git a/clients/webassembly/js-example/index.js b/clients/webassembly/js-example/index.js index f58ab648e3..3352509c27 100644 --- a/clients/webassembly/js-example/index.js +++ b/clients/webassembly/js-example/index.js @@ -13,7 +13,7 @@ // limitations under the License. import * as wasm from "nym-client-wasm"; -import { makeRegisterRequest, makeAuthenticateRequest, makeSendablePacket, getTopology } from "nym-client-wasm/helpers" +import { makeRegisterRequest, makeAuthenticateRequest, makeSendablePacket, getTopology, getInitialGatewayAddress } from "nym-client-wasm/helpers" class GatewayConnection { constructor(gateway_url, ownAddress, registeredCallback) { @@ -121,10 +121,14 @@ function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } -function main() { - var gatewayUrl = "ws://127.0.0.1:1977"; +async function main() { var directoryUrl = "http://127.0.0.1:8080/api/presence/topology"; + const gatewayUrl = await getInitialGatewayAddress(directoryUrl); + if (gatewayUrl == "") { + alert("No gateways detected - cannot procede"); + return; + } // NOTE: in an actual application, you should save those keys somewhere and only generate them a single time // then reuse them in subsequent runs diff --git a/clients/webassembly/js-example/package.json b/clients/webassembly/js-example/package.json index 34b980ed39..f57803ef64 100644 --- a/clients/webassembly/js-example/package.json +++ b/clients/webassembly/js-example/package.json @@ -27,7 +27,7 @@ }, "homepage": "https://github.com/rustwasm/create-wasm-app#readme", "dependencies": { - "nym-client-wasm": "^0.1.2" + "nym-client-wasm": "^0.1.3" }, "devDependencies": { "hello-wasm-pack": "^0.1.0", @@ -36,4 +36,4 @@ "webpack-dev-server": "^3.1.5", "copy-webpack-plugin": "^5.0.0" } -} +} \ No newline at end of file diff --git a/clients/webassembly/js-example/yarn.lock b/clients/webassembly/js-example/yarn.lock index b20f3812d4..6d702766d7 100644 --- a/clients/webassembly/js-example/yarn.lock +++ b/clients/webassembly/js-example/yarn.lock @@ -2484,10 +2484,10 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nym-client-wasm@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nym-client-wasm/-/nym-client-wasm-0.1.2.tgz#1a89b28eafaff61de7d71b9045c2c6f76813d8e0" - integrity sha512-G4Nsw+abk/UC5PbvxiEspMiq2EAXWOFvsXLGVkS2fzg2WxRlkf8hXoRK8mbgeqFlOB0LDf8ZSauI4eyqu0UPFw== +nym-client-wasm@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/nym-client-wasm/-/nym-client-wasm-0.1.3.tgz#49f93a6a6db0e26dfe94337625a69ea922b05cda" + integrity sha512-ce8JojJ5sXIuY2hbFmgo2W1Nyy56uQ8GnsG6yBt3rzu6+seIRdxPd5ilN86L0Ps7uYLpAyydcwWLErjR6W9S+g== object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1"