From 0f03a8c2bfab2cfe0341a925cdbd187ae434b74e Mon Sep 17 00:00:00 2001 From: Tarik Gul <47201679+TarikGul@users.noreply.github.com> Date: Mon, 22 Jul 2024 13:27:58 -0700 Subject: [PATCH] Add new ledger app settings (#796) * Add ledger app settings * Add ledgerApp * Add to setting struct * add available ledger apps * fix info --- packages/ui-settings/src/Settings.ts | 14 +++++++++++++- packages/ui-settings/src/defaults/index.ts | 2 +- packages/ui-settings/src/defaults/ledger.ts | 20 ++++++++++++++++++++ packages/ui-settings/src/types.ts | 1 + 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/ui-settings/src/Settings.ts b/packages/ui-settings/src/Settings.ts index 3f2e5e17..cf562f56 100644 --- a/packages/ui-settings/src/Settings.ts +++ b/packages/ui-settings/src/Settings.ts @@ -8,7 +8,7 @@ import store from 'store'; import { hasProcess, isUndefined } from '@polkadot/util'; -import { CAMERA, CAMERA_DEFAULT, CRYPTOS, CRYPTOS_ETH, CRYPTOS_LEDGER, ENDPOINT_DEFAULT, ENDPOINTS, ICON_DEFAULT, ICONS, LANGUAGE_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT, LOCKING, LOCKING_DEFAULT, METADATA_UP, METADATA_UP_DEFAULT, NOTIFICATION_DEFAULT, PREFIX_DEFAULT, PREFIXES, STORAGE, STORAGE_DEFAULT, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './defaults/index.js'; +import { CAMERA, CAMERA_DEFAULT, CRYPTOS, CRYPTOS_ETH, CRYPTOS_LEDGER, ENDPOINT_DEFAULT, ENDPOINTS, ICON_DEFAULT, ICONS, LANGUAGE_DEFAULT, LEDGER_APP, LEDGER_APP_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT, LOCKING, LOCKING_DEFAULT, METADATA_UP, METADATA_UP_DEFAULT, NOTIFICATION_DEFAULT, PREFIX_DEFAULT, PREFIXES, STORAGE, STORAGE_DEFAULT, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './defaults/index.js'; type ChangeCallback = (settings: SettingsStruct) => void; type OnTypes = 'change'; @@ -35,6 +35,8 @@ export class Settings implements SettingsStruct { #icon: string; + #ledgerApp: string; + #ledgerConn: string; #locking: string; @@ -60,6 +62,7 @@ export class Settings implements SettingsStruct { this.#apiUrl = (typeof settings.apiUrl === 'string' && settings.apiUrl) || (hasProcess && 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.#ledgerApp = withDefault(LEDGER_APP, settings.ledgerApp, LEDGER_APP_DEFAULT); this.#ledgerConn = withDefault(LEDGER_CONN, settings.ledgerConn, LEDGER_CONN_DEFAULT); this.#i18nLang = settings.i18nLang || LANGUAGE_DEFAULT; this.#icon = settings.icon || ICON_DEFAULT; @@ -96,6 +99,10 @@ export class Settings implements SettingsStruct { return this.#notification; } + public get ledgerApp (): string { + return this.#ledgerApp; + } + public get ledgerConn (): string { return this.#ledgerConn; } @@ -144,6 +151,10 @@ export class Settings implements SettingsStruct { return ICONS; } + public get availableLedgerApp (): Option[] { + return LEDGER_APP; + } + public get availableLedgerConn (): Option[] { return LEDGER_CONN; } @@ -183,6 +194,7 @@ export class Settings implements SettingsStruct { camera: this.#camera, i18nLang: this.#i18nLang, icon: this.#icon, + ledgerApp: this.#ledgerApp, ledgerConn: this.#ledgerConn, locking: this.#locking, metadataUp: this.#metadataUp, diff --git a/packages/ui-settings/src/defaults/index.ts b/packages/ui-settings/src/defaults/index.ts index dc4094ee..b0f05c91 100644 --- a/packages/ui-settings/src/defaults/index.ts +++ b/packages/ui-settings/src/defaults/index.ts @@ -5,7 +5,7 @@ import type { Option } from '../types.js'; export { CRYPTOS, CRYPTOS_ETH, CRYPTOS_LEDGER } from './crypto.js'; export { ENDPOINT_DEFAULT, ENDPOINTS } from './endpoints.js'; -export { LEDGER_CONN, LEDGER_CONN_DEFAULT } from './ledger.js'; +export { LEDGER_APP, LEDGER_APP_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT } from './ledger.js'; export { PREFIX_DEFAULT, PREFIXES } from './ss58.js'; export { ICON_DEFAULT, ICON_DEFAULT_HOST, ICONS, NOTIFICATION_DEFAULT, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './ui.js'; diff --git a/packages/ui-settings/src/defaults/ledger.ts b/packages/ui-settings/src/defaults/ledger.ts index e9c03d69..d47feeea 100644 --- a/packages/ui-settings/src/defaults/ledger.ts +++ b/packages/ui-settings/src/defaults/ledger.ts @@ -28,3 +28,23 @@ export const LEDGER_CONN: Option[] = [ value: 'hid' } ]; + +export const LEDGER_APP_DEFAULT = 'generic'; + +export const LEDGER_APP: Option[] = [ + { + info: 'generic', + text: 'Use the Ledger Polkadot Generic App', + value: 'generic' + }, + { + info: 'migration', + text: 'Use the Ledger Migration App', + value: 'migration' + }, + { + info: 'legacy', + text: 'Use the Ledger Legacy App', + value: 'legacy' + } +]; diff --git a/packages/ui-settings/src/types.ts b/packages/ui-settings/src/types.ts index ab3644f9..d2d5c2d3 100644 --- a/packages/ui-settings/src/types.ts +++ b/packages/ui-settings/src/types.ts @@ -14,6 +14,7 @@ export interface SettingsStruct { camera: string; i18nLang: string; icon: string; + ledgerApp: string; ledgerConn: string; locking: string; metadataUp: string;