Skip to content

Commit 0dc0735

Browse files
committed
feat: empty connect button module for non-browser env
1 parent 1e0b5db commit 0dc0735

File tree

5 files changed

+88
-46
lines changed

5 files changed

+88
-46
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export const isBrowser = () =>
2+
![typeof window, typeof document].includes('undefined')
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { NEVER } from 'rxjs'
2+
import { ConnectButtonModuleOutput } from './types'
3+
4+
export const ConnectButtonNoopModule = (): ConnectButtonModuleOutput => {
5+
return {
6+
status$: NEVER,
7+
onConnect$: NEVER,
8+
onDisconnect$: NEVER,
9+
onUpdateSharedData$: NEVER,
10+
onShowPopover$: NEVER,
11+
onCancelRequestItem$: NEVER,
12+
onLinkClick$: NEVER,
13+
setStatus: () => {},
14+
setMode: () => {},
15+
setTheme: () => {},
16+
setActiveTab: () => {},
17+
setIsMobile: () => {},
18+
setIsWalletLinked: () => {},
19+
setIsExtensionAvailable: () => {},
20+
setConnected: () => {},
21+
setLoggedInTimestamp: () => {},
22+
setRequestItems: () => {},
23+
setAccounts: () => {},
24+
setPersonaData: () => {},
25+
setPersonaLabel: () => {},
26+
setDappName: () => {},
27+
destroy: () => {},
28+
disconnect: () => {},
29+
}
30+
}

packages/dapp-toolkit/src/modules/connect-button/connect-button.module.ts

+1-31
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {
66
map,
77
merge,
88
mergeMap,
9-
Observable,
109
of,
1110
Subscription,
1211
switchMap,
@@ -30,39 +29,10 @@ import {
3029
import { GatewayModule, RadixNetworkConfigById } from '../gateway'
3130
import { StateModule } from '../state'
3231
import { StorageModule } from '../storage'
33-
import { ConnectButtonStatus } from './types'
32+
import { ConnectButtonModuleOutput, ConnectButtonStatus } from './types'
3433

3534
export type ConnectButtonModule = ReturnType<typeof ConnectButtonModule>
3635

37-
export type ConnectButtonModuleOutput = {
38-
status$: Observable<RadixButtonStatus>
39-
onConnect$: Observable<{ challenge: string } | undefined>
40-
onDisconnect$: Observable<void>
41-
onUpdateSharedData$: Observable<void>
42-
onShowPopover$: Observable<void>
43-
onCancelRequestItem$: Observable<string>
44-
onLinkClick$: Observable<{
45-
type: 'account' | 'transaction' | 'showQrCode' | 'setupGuide'
46-
data: string
47-
}>
48-
setStatus: (value: RadixButtonStatus) => void
49-
setMode: (value: 'light' | 'dark') => void
50-
setTheme: (value: RadixButtonTheme) => void
51-
setActiveTab: (value: 'sharing' | 'requests') => void
52-
setIsMobile: (value: boolean) => void
53-
setIsWalletLinked: (value: boolean) => void
54-
setIsExtensionAvailable: (value: boolean) => void
55-
setConnected: (value: boolean) => void
56-
setLoggedInTimestamp: (value: string) => void
57-
setRequestItems: (value: RequestItem[]) => void
58-
setAccounts: (value: Account[]) => void
59-
setPersonaData: (value: { value: string; field: string }[]) => void
60-
setPersonaLabel: (value: string) => void
61-
setDappName: (value: string) => void
62-
destroy: () => void
63-
disconnect: () => void
64-
}
65-
6636
export type ConnectButtonModuleInput = {
6737
networkId: number
6838
environment?: string

packages/dapp-toolkit/src/modules/connect-button/types.ts

+37
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
import {
2+
RadixButtonStatus,
3+
RadixButtonTheme,
4+
RequestItem,
5+
Account,
6+
} from 'radix-connect-common'
7+
import { Observable } from 'rxjs'
8+
19
export type ConnectButtonStatus =
210
(typeof ConnectButtonStatus)[keyof typeof ConnectButtonStatus]
311
export const ConnectButtonStatus = {
@@ -6,3 +14,32 @@ export const ConnectButtonStatus = {
614
default: 'default',
715
error: 'error',
816
} as const
17+
18+
export type ConnectButtonModuleOutput = {
19+
status$: Observable<RadixButtonStatus>
20+
onConnect$: Observable<{ challenge: string } | undefined>
21+
onDisconnect$: Observable<void>
22+
onUpdateSharedData$: Observable<void>
23+
onShowPopover$: Observable<void>
24+
onCancelRequestItem$: Observable<string>
25+
onLinkClick$: Observable<{
26+
type: 'account' | 'transaction' | 'showQrCode' | 'setupGuide'
27+
data: string
28+
}>
29+
setStatus: (value: RadixButtonStatus) => void
30+
setMode: (value: 'light' | 'dark') => void
31+
setTheme: (value: RadixButtonTheme) => void
32+
setActiveTab: (value: 'sharing' | 'requests') => void
33+
setIsMobile: (value: boolean) => void
34+
setIsWalletLinked: (value: boolean) => void
35+
setIsExtensionAvailable: (value: boolean) => void
36+
setConnected: (value: boolean) => void
37+
setLoggedInTimestamp: (value: string) => void
38+
setRequestItems: (value: RequestItem[]) => void
39+
setAccounts: (value: Account[]) => void
40+
setPersonaData: (value: { value: string; field: string }[]) => void
41+
setPersonaLabel: (value: string) => void
42+
setDappName: (value: string) => void
43+
destroy: () => void
44+
disconnect: () => void
45+
}

packages/dapp-toolkit/src/radix-dapp-toolkit.ts

+18-15
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {
55
SendTransactionInput,
66
WalletApi,
77
} from './_types'
8+
import { isBrowser } from './helpers/is-browser'
89
import {
910
type WalletData,
1011
LocalStorageModule,
@@ -14,6 +15,7 @@ import {
1415
ConnectButtonModule,
1516
generateGatewayApiConfig,
1617
} from './modules'
18+
import { ConnectButtonNoopModule } from './modules/connect-button/connect-button-noop.module'
1719

1820
export type RadixDappToolkit = {
1921
walletApi: WalletApi
@@ -87,21 +89,22 @@ export const RadixDappToolkit = (
8789
})
8890

8991
const connectButtonModule =
90-
providers?.connectButtonModule ??
91-
ConnectButtonModule({
92-
logger,
93-
networkId,
94-
explorer: options.explorer,
95-
enableMobile: isMobileSupported,
96-
onDisconnect,
97-
dAppDefinitionAddress,
98-
providers: {
99-
stateModule,
100-
walletRequestModule,
101-
gatewayModule,
102-
storageModule: storageModule.getPartition('connectButton'),
103-
},
104-
})
92+
providers?.connectButtonModule ?? isBrowser()
93+
? ConnectButtonModule({
94+
logger,
95+
networkId,
96+
explorer: options.explorer,
97+
enableMobile: isMobileSupported,
98+
onDisconnect,
99+
dAppDefinitionAddress,
100+
providers: {
101+
stateModule,
102+
walletRequestModule,
103+
gatewayModule,
104+
storageModule: storageModule.getPartition('connectButton'),
105+
},
106+
})
107+
: ConnectButtonNoopModule()
105108

106109
return {
107110
walletApi: {

0 commit comments

Comments
 (0)