Skip to content

Commit

Permalink
add new type in api - settings in order to support different types of… (
Browse files Browse the repository at this point in the history
#476)

* add new type in api - settings in order to support different types of 'urls' - json-rpc and substrate-connect; This makes the previous used apiURL deprecated

* Alter name from apiTypeUrl to apiType

* export types of possible endpoints

* minor fix on sequence of vars

* Fix lint error concerning imports

* Fix lint error concerning imports

* Fix PR comments: import types instead of import; seperate types from settings

* fix lint error

* Update packages/ui-settings/src/types.ts

Co-authored-by: Jaco <jacogr@gmail.com>

Co-authored-by: Jaco <jacogr@gmail.com>
  • Loading branch information
wirednkod and jacogr authored Jun 15, 2021
1 parent f345a70 commit 851c452
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
13 changes: 12 additions & 1 deletion packages/ui-settings/src/Settings.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright 2017-2021 @polkadot/ui-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0

import type { Option, SettingsStruct } from './types';
import type { Endpoint, EndpointType, Option, SettingsStruct } from './types';

import EventEmitter from 'eventemitter3';
import store from 'store';
Expand All @@ -24,6 +24,9 @@ function withDefault (options: Option[], option: string | undefined, fallback: s
export class Settings implements SettingsStruct {
readonly #emitter: EventEmitter;

#apiType: Endpoint;

// will become deprecated for supporting substrate connect light clients. apiType structure should be used instead
#apiUrl: string;

#camera: string;
Expand All @@ -47,7 +50,9 @@ export class Settings implements SettingsStruct {

this.#emitter = new EventEmitter();

// will become deprecated for supporting substrate connect light clients. apiType structure should be used instead
this.#apiUrl = (typeof settings.apiUrl === 'string' && settings.apiUrl) || process.env.WS_URL || (ENDPOINT_DEFAULT.value as string);
this.#apiType = { param: this.#apiUrl, type: 'json-rpc' as EndpointType };
this.#camera = withDefault(CAMERA, settings.camera, CAMERA_DEFAULT);
this.#ledgerConn = withDefault(LEDGER_CONN, settings.ledgerConn, LEDGER_CONN_DEFAULT);
this.#i18nLang = settings.i18nLang || LANGUAGE_DEFAULT;
Expand All @@ -62,6 +67,10 @@ export class Settings implements SettingsStruct {
return this.#camera;
}

public get apiType (): Endpoint {
return this.#apiType;
}

public get apiUrl (): string {
return this.#apiUrl;
}
Expand Down Expand Up @@ -140,6 +149,7 @@ export class Settings implements SettingsStruct {

public get (): SettingsStruct {
return {
apiType: this.#apiType,
apiUrl: this.#apiUrl,
camera: this.#camera,
i18nLang: this.#i18nLang,
Expand All @@ -153,6 +163,7 @@ export class Settings implements SettingsStruct {
}

public set (settings: Partial<SettingsStruct>): void {
this.#apiType = settings.apiType || this.#apiType;
this.#apiUrl = settings.apiUrl || this.#apiUrl;
this.#camera = settings.camera || this.#camera;
this.#ledgerConn = settings.ledgerConn || this.#ledgerConn;
Expand Down
8 changes: 8 additions & 0 deletions packages/ui-settings/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export type Option = {
}

export interface SettingsStruct {
apiType: Endpoint;
apiUrl: string;
camera: string;
i18nLang: string;
Expand All @@ -28,3 +29,10 @@ export interface NetworkSpecsStruct {
title: string;
unit: string;
}

export interface Endpoint {
type: EndpointType;
param: string;
}

export type EndpointType = 'json-rpc' | 'substrate-connect';

0 comments on commit 851c452

Please sign in to comment.