diff --git a/packages/apps-electron/src/index.tsx b/packages/apps-electron/src/index.tsx
index af68f7f2d6..e32d7fde04 100644
--- a/packages/apps-electron/src/index.tsx
+++ b/packages/apps-electron/src/index.tsx
@@ -24,6 +24,9 @@ if (!rootElement) {
const store = new RemoteElectronStore(electronMainApi.accountStore);
ReactDOM.render(
- ,
+ ,
rootElement
);
diff --git a/packages/apps-electron/webpack.main.cjs b/packages/apps-electron/webpack.main.cjs
index 7ff1ca729a..d0a8260ccb 100644
--- a/packages/apps-electron/webpack.main.cjs
+++ b/packages/apps-electron/webpack.main.cjs
@@ -46,6 +46,9 @@ function createWebpack () {
new CopyWebpackPlugin({ patterns: [{ from: 'assets' }] })
],
resolve: {
+ alias: {
+ '@polkadot/hw-ledger-transports': require.resolve('@polkadot/hw-ledger-transports/node')
+ },
extensions: ['.js', '.jsx', '.json', '.mjs', '.ts', '.tsx']
},
target: 'electron-main'
diff --git a/packages/apps/src/Root.tsx b/packages/apps/src/Root.tsx
index 8223229759..ccf775dbd8 100644
--- a/packages/apps/src/Root.tsx
+++ b/packages/apps/src/Root.tsx
@@ -18,6 +18,7 @@ import { darkTheme, lightTheme } from './themes';
import WindowDimensions from './WindowDimensions';
interface Props {
+ isElectron: boolean;
store?: KeyringStore;
}
@@ -32,7 +33,7 @@ function createTheme ({ uiTheme }: { uiTheme: string }): ThemeDef {
: lightTheme;
}
-function Root ({ store }: Props): React.ReactElement {
+function Root ({ isElectron, store }: Props): React.ReactElement {
const [theme, setTheme] = useState(() => createTheme(settings));
useEffect((): void => {
@@ -45,6 +46,7 @@ function Root ({ store }: Props): React.ReactElement {
diff --git a/packages/apps/src/index.tsx b/packages/apps/src/index.tsx
index c692cf928c..2271c333ab 100644
--- a/packages/apps/src/index.tsx
+++ b/packages/apps/src/index.tsx
@@ -19,6 +19,6 @@ if (!rootElement) {
}
ReactDOM.render(
- ,
+ ,
rootElement
);
diff --git a/packages/page-accounts/src/CreateAccount.slow.spec.tsx b/packages/page-accounts/src/CreateAccount.slow.spec.tsx
index f059f406ac..5cd18dab23 100644
--- a/packages/page-accounts/src/CreateAccount.slow.spec.tsx
+++ b/packages/page-accounts/src/CreateAccount.slow.spec.tsx
@@ -27,6 +27,7 @@ const renderAccounts = () => {
diff --git a/packages/page-bounties/src/Bounties.slow.spec.tsx b/packages/page-bounties/src/Bounties.slow.spec.tsx
index 89abc58e49..52d04b3758 100644
--- a/packages/page-bounties/src/Bounties.slow.spec.tsx
+++ b/packages/page-bounties/src/Bounties.slow.spec.tsx
@@ -29,6 +29,7 @@ const renderBounties = () => {
diff --git a/packages/page-settings/src/General.tsx b/packages/page-settings/src/General.tsx
index 5d8e05bf92..71e5623797 100644
--- a/packages/page-settings/src/General.tsx
+++ b/packages/page-settings/src/General.tsx
@@ -20,11 +20,11 @@ interface Props {
className?: string;
}
-const ledgerConnOptions = settings.availableLedgerConn;
+const _ledgerConnOptions = settings.availableLedgerConn;
function General ({ className = '' }: Props): React.ReactElement {
const { t } = useTranslation();
- const { api, isApiReady } = useApi();
+ const { api, isApiReady, isElectron } = useApi();
const { isLedgerCapable } = useLedger();
// tri-state: null = nothing changed, false = no reload, true = reload required
const [changed, setChanged] = useState(null);
@@ -34,6 +34,11 @@ function General ({ className = '' }: Props): React.ReactElement {
return { ...values, uiTheme: values.uiTheme === 'dark' ? 'dark' : 'light' };
});
+ const ledgerConnOptions = useMemo(
+ () => _ledgerConnOptions.filter(({ value }) => !isElectron || value !== 'webusb'),
+ [isElectron]
+ );
+
const iconOptions = useMemo(
() => settings.availableIcons
.map((o): Option => createIdenticon(o, ['default']))
diff --git a/packages/react-api/src/Api.tsx b/packages/react-api/src/Api.tsx
index 867b2b6265..58b7678b7a 100644
--- a/packages/react-api/src/Api.tsx
+++ b/packages/react-api/src/Api.tsx
@@ -31,6 +31,7 @@ import { decodeUrlTypes } from './urlTypes';
interface Props {
children: React.ReactNode;
apiUrl: string;
+ isElectron: boolean;
store?: KeyringStore;
}
@@ -178,7 +179,7 @@ async function loadOnReady (api: ApiPromise, injectedPromise: Promise | null {
+function Api ({ apiUrl, children, isElectron, store }: Props): React.ReactElement | null {
const { queuePayload, queueSetTxStatus } = useContext(StatusContext);
const [state, setState] = useState({ hasInjectedAccounts: false, isApiReady: false } as unknown as ApiState);
const [isApiConnected, setIsApiConnected] = useState(false);
@@ -187,8 +188,8 @@ function Api ({ apiUrl, children, store }: Props): React.ReactElement | n
const [extensions, setExtensions] = useState();
const value = useMemo(
- () => ({ ...state, api, apiError, apiUrl, extensions, isApiConnected, isApiInitialized, isWaitingInjected: !extensions }),
- [apiError, extensions, isApiConnected, isApiInitialized, state, apiUrl]
+ () => ({ ...state, api, apiError, apiUrl, extensions, isApiConnected, isApiInitialized, isElectron, isWaitingInjected: !extensions }),
+ [apiError, extensions, isApiConnected, isApiInitialized, isElectron, state, apiUrl]
);
// initial initialization
diff --git a/packages/react-api/src/types.ts b/packages/react-api/src/types.ts
index fb7bf1b64c..f2b595d3a8 100644
--- a/packages/react-api/src/types.ts
+++ b/packages/react-api/src/types.ts
@@ -35,6 +35,7 @@ export interface ApiProps extends ApiState {
extensions?: InjectedExtension[];
isApiConnected: boolean;
isApiInitialized: boolean;
+ isElectron: boolean;
isWaitingInjected: boolean;
}