diff --git a/packages/@magic-sdk/provider/src/modules/wallet.ts b/packages/@magic-sdk/provider/src/modules/wallet.ts index 70d1dee9a..c96d9b153 100644 --- a/packages/@magic-sdk/provider/src/modules/wallet.ts +++ b/packages/@magic-sdk/provider/src/modules/wallet.ts @@ -57,8 +57,27 @@ export class WalletModule extends BaseModule { /* Prompt Magic's Wallet UI (not available for users logged in with third party wallets) */ public showUI() { - const requestPayload = createJsonRpcRequestPayload(MagicPayloadMethod.ShowUI); - return this.request(requestPayload); + return this.request(createJsonRpcRequestPayload(MagicPayloadMethod.ShowUI)); + } + + public showAddress() { + return this.request(createJsonRpcRequestPayload(MagicPayloadMethod.ShowAddress)); + } + + public showSendTokensUI() { + return this.request(createJsonRpcRequestPayload(MagicPayloadMethod.ShowSendTokensUI)); + } + + public showOnRamp() { + return this.request(createJsonRpcRequestPayload(MagicPayloadMethod.ShowOnRamp)); + } + + public showNFTs() { + return this.request(createJsonRpcRequestPayload(MagicPayloadMethod.ShowNFTs)); + } + + public showBalances() { + return this.request(createJsonRpcRequestPayload(MagicPayloadMethod.ShowBalances)); } /* Get user info such as the wallet type they are logged in with */ diff --git a/packages/@magic-sdk/provider/test/spec/modules/wallet/showAddress.spec.ts b/packages/@magic-sdk/provider/test/spec/modules/wallet/showAddress.spec.ts new file mode 100644 index 000000000..151babb0e --- /dev/null +++ b/packages/@magic-sdk/provider/test/spec/modules/wallet/showAddress.spec.ts @@ -0,0 +1,23 @@ +import browserEnv from '@ikscodes/browser-env'; +import { createMagicSDK } from '../../../factories'; +import { isPromiEvent } from '../../../../src/util'; + +beforeEach(() => { + browserEnv.restore(); +}); + +test('Generate JSON RPC request payload with method `magic_show_address`', async () => { + const magic = createMagicSDK(); + magic.wallet.request = jest.fn(); + + magic.wallet.showAddress(); + + const requestPayload = magic.wallet.request.mock.calls[0][0]; + expect(requestPayload.method).toBe('magic_show_address'); + expect(requestPayload.params).toEqual([]); +}); + +test('method should return a PromiEvent', () => { + const magic = createMagicSDK(); + expect(isPromiEvent(magic.wallet.showAddress())).toBeTruthy(); +}); diff --git a/packages/@magic-sdk/provider/test/spec/modules/wallet/showBalances.spec.ts b/packages/@magic-sdk/provider/test/spec/modules/wallet/showBalances.spec.ts new file mode 100644 index 000000000..a40daf318 --- /dev/null +++ b/packages/@magic-sdk/provider/test/spec/modules/wallet/showBalances.spec.ts @@ -0,0 +1,23 @@ +import browserEnv from '@ikscodes/browser-env'; +import { createMagicSDK } from '../../../factories'; +import { isPromiEvent } from '../../../../src/util'; + +beforeEach(() => { + browserEnv.restore(); +}); + +test('Generate JSON RPC request payload with method `magic_show_balances`', async () => { + const magic = createMagicSDK(); + magic.wallet.request = jest.fn(); + + magic.wallet.showBalances(); + + const requestPayload = magic.wallet.request.mock.calls[0][0]; + expect(requestPayload.method).toBe('magic_show_balances'); + expect(requestPayload.params).toEqual([]); +}); + +test('method should return a PromiEvent', () => { + const magic = createMagicSDK(); + expect(isPromiEvent(magic.wallet.showBalances())).toBeTruthy(); +}); diff --git a/packages/@magic-sdk/provider/test/spec/modules/wallet/showNFTs.spec.ts b/packages/@magic-sdk/provider/test/spec/modules/wallet/showNFTs.spec.ts new file mode 100644 index 000000000..95ba7e7a4 --- /dev/null +++ b/packages/@magic-sdk/provider/test/spec/modules/wallet/showNFTs.spec.ts @@ -0,0 +1,23 @@ +import browserEnv from '@ikscodes/browser-env'; +import { createMagicSDK } from '../../../factories'; +import { isPromiEvent } from '../../../../src/util'; + +beforeEach(() => { + browserEnv.restore(); +}); + +test('Generate JSON RPC request payload with method `magic_show_nfts`', async () => { + const magic = createMagicSDK(); + magic.wallet.request = jest.fn(); + + magic.wallet.showNFTs(); + + const requestPayload = magic.wallet.request.mock.calls[0][0]; + expect(requestPayload.method).toBe('magic_show_nfts'); + expect(requestPayload.params).toEqual([]); +}); + +test('method should return a PromiEvent', () => { + const magic = createMagicSDK(); + expect(isPromiEvent(magic.wallet.showNFTs())).toBeTruthy(); +}); diff --git a/packages/@magic-sdk/provider/test/spec/modules/wallet/showOnRamp.spec.ts b/packages/@magic-sdk/provider/test/spec/modules/wallet/showOnRamp.spec.ts new file mode 100644 index 000000000..eaa829f26 --- /dev/null +++ b/packages/@magic-sdk/provider/test/spec/modules/wallet/showOnRamp.spec.ts @@ -0,0 +1,23 @@ +import browserEnv from '@ikscodes/browser-env'; +import { createMagicSDK } from '../../../factories'; +import { isPromiEvent } from '../../../../src/util'; + +beforeEach(() => { + browserEnv.restore(); +}); + +test('Generate JSON RPC request payload with method `magic_show_fiat_onramp`', async () => { + const magic = createMagicSDK(); + magic.wallet.request = jest.fn(); + + magic.wallet.showOnRamp(); + + const requestPayload = magic.wallet.request.mock.calls[0][0]; + expect(requestPayload.method).toBe('magic_show_fiat_onramp'); + expect(requestPayload.params).toEqual([]); +}); + +test('method should return a PromiEvent', () => { + const magic = createMagicSDK(); + expect(isPromiEvent(magic.wallet.showOnRamp())).toBeTruthy(); +}); diff --git a/packages/@magic-sdk/provider/test/spec/modules/wallet/showSendTokensUI.spec.ts b/packages/@magic-sdk/provider/test/spec/modules/wallet/showSendTokensUI.spec.ts new file mode 100644 index 000000000..93227ba19 --- /dev/null +++ b/packages/@magic-sdk/provider/test/spec/modules/wallet/showSendTokensUI.spec.ts @@ -0,0 +1,23 @@ +import browserEnv from '@ikscodes/browser-env'; +import { createMagicSDK } from '../../../factories'; +import { isPromiEvent } from '../../../../src/util'; + +beforeEach(() => { + browserEnv.restore(); +}); + +test('Generate JSON RPC request payload with method `magic_show_send_tokens_ui`', async () => { + const magic = createMagicSDK(); + magic.wallet.request = jest.fn(); + + magic.wallet.showSendTokensUI(); + + const requestPayload = magic.wallet.request.mock.calls[0][0]; + expect(requestPayload.method).toBe('magic_show_send_tokens_ui'); + expect(requestPayload.params).toEqual([]); +}); + +test('method should return a PromiEvent', () => { + const magic = createMagicSDK(); + expect(isPromiEvent(magic.wallet.showSendTokensUI())).toBeTruthy(); +}); diff --git a/packages/@magic-sdk/types/src/core/json-rpc-types.ts b/packages/@magic-sdk/types/src/core/json-rpc-types.ts index 8adc2f384..2545c969e 100644 --- a/packages/@magic-sdk/types/src/core/json-rpc-types.ts +++ b/packages/@magic-sdk/types/src/core/json-rpc-types.ts @@ -166,4 +166,9 @@ export enum MagicPayloadMethod { Login = 'mc_login', EncryptV1 = 'magic_auth_encrypt_v1', DecryptV1 = 'magic_auth_decrypt_v1', + ShowNFTs = 'magic_show_nfts', + ShowOnRamp = 'magic_show_fiat_onramp', + ShowSendTokensUI = 'magic_show_send_tokens_ui', + ShowAddress = 'magic_show_address', + ShowBalances = 'magic_show_balances', } diff --git a/yarn.lock b/yarn.lock index 876e94b33..a92020b26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2817,7 +2817,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/algorand@workspace:packages/@magic-ext/algorand" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2826,8 +2826,8 @@ __metadata: resolution: "@magic-ext/aptos@workspace:packages/@magic-ext/aptos" dependencies: "@aptos-labs/wallet-adapter-core": ^2.2.0 - "@magic-sdk/commons": ^14.4.1 - "@magic-sdk/provider": ^18.4.1 + "@magic-sdk/commons": ^14.5.0 + "@magic-sdk/provider": ^18.5.0 aptos: ^1.8.5 peerDependencies: "@aptos-labs/wallet-adapter-core": ^2.2.0 @@ -2839,7 +2839,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/auth@workspace:packages/@magic-ext/auth" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2847,7 +2847,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/avalanche@workspace:packages/@magic-ext/avalanche" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2855,7 +2855,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/bitcoin@workspace:packages/@magic-ext/bitcoin" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2863,7 +2863,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/conflux@workspace:packages/@magic-ext/conflux" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2871,7 +2871,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/cosmos@workspace:packages/@magic-ext/cosmos" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2879,7 +2879,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/ed25519@workspace:packages/@magic-ext/ed25519" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2887,7 +2887,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/flow@workspace:packages/@magic-ext/flow" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 "@onflow/fcl": ^1.4.1 "@onflow/types": ^1.1.0 peerDependencies: @@ -2900,7 +2900,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/gdkms@workspace:packages/@magic-ext/gdkms" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2908,7 +2908,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/harmony@workspace:packages/@magic-ext/harmony" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2916,7 +2916,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/icon@workspace:packages/@magic-ext/icon" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2924,18 +2924,18 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/near@workspace:packages/@magic-ext/near" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft -"@magic-ext/oauth@^12.4.1, @magic-ext/oauth@workspace:packages/@magic-ext/oauth": +"@magic-ext/oauth@^12.5.0, @magic-ext/oauth@workspace:packages/@magic-ext/oauth": version: 0.0.0-use.local resolution: "@magic-ext/oauth@workspace:packages/@magic-ext/oauth" dependencies: - "@magic-sdk/types": ^15.6.1 + "@magic-sdk/types": ^15.7.0 "@types/crypto-js": ~3.1.47 crypto-js: ^3.3.0 - magic-sdk: ^18.4.1 + magic-sdk: ^18.5.0 languageName: unknown linkType: soft @@ -2943,7 +2943,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/oidc@workspace:packages/@magic-ext/oidc" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2951,7 +2951,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/polkadot@workspace:packages/@magic-ext/polkadot" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2959,7 +2959,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/react-native-bare-oauth@workspace:packages/@magic-ext/react-native-bare-oauth" dependencies: - "@magic-sdk/react-native-bare": ^19.4.1 + "@magic-sdk/react-native-bare": ^19.5.0 "@magic-sdk/types": ^10.0.1 "@types/crypto-js": ~3.1.47 crypto-js: ^3.3.0 @@ -2975,7 +2975,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/react-native-expo-oauth@workspace:packages/@magic-ext/react-native-expo-oauth" dependencies: - "@magic-sdk/react-native-expo": ^19.4.1 + "@magic-sdk/react-native-expo": ^19.5.0 "@magic-sdk/types": ^10.0.0 "@types/crypto-js": ~3.1.47 crypto-js: ^3.3.0 @@ -2990,7 +2990,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/solana@workspace:packages/@magic-ext/solana" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -2998,7 +2998,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/taquito@workspace:packages/@magic-ext/taquito" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -3006,7 +3006,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/terra@workspace:packages/@magic-ext/terra" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -3014,7 +3014,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/tezos@workspace:packages/@magic-ext/tezos" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -3022,7 +3022,7 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/webauthn@workspace:packages/@magic-ext/webauthn" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft @@ -3030,16 +3030,16 @@ __metadata: version: 0.0.0-use.local resolution: "@magic-ext/zilliqa@workspace:packages/@magic-ext/zilliqa" dependencies: - "@magic-sdk/commons": ^14.4.1 + "@magic-sdk/commons": ^14.5.0 languageName: unknown linkType: soft -"@magic-sdk/commons@^14.4.1, @magic-sdk/commons@workspace:packages/@magic-sdk/commons": +"@magic-sdk/commons@^14.5.0, @magic-sdk/commons@workspace:packages/@magic-sdk/commons": version: 0.0.0-use.local resolution: "@magic-sdk/commons@workspace:packages/@magic-sdk/commons" dependencies: - "@magic-sdk/provider": ^18.4.1 - "@magic-sdk/types": ^15.6.1 + "@magic-sdk/provider": ^18.5.0 + "@magic-sdk/types": ^15.7.0 peerDependencies: "@magic-sdk/provider": ">=4.3.0" "@magic-sdk/types": ">=3.1.1" @@ -3053,17 +3053,17 @@ __metadata: "@babel/core": ^7.9.6 "@babel/plugin-proposal-optional-chaining": ^7.9.0 "@babel/runtime": ^7.9.6 - "@magic-ext/oauth": ^12.4.1 - magic-sdk: ^18.4.1 + "@magic-ext/oauth": ^12.5.0 + magic-sdk: ^18.5.0 languageName: unknown linkType: soft -"@magic-sdk/provider@^18.4.1, @magic-sdk/provider@workspace:packages/@magic-sdk/provider": +"@magic-sdk/provider@^18.5.0, @magic-sdk/provider@workspace:packages/@magic-sdk/provider": version: 0.0.0-use.local resolution: "@magic-sdk/provider@workspace:packages/@magic-sdk/provider" dependencies: "@babel/plugin-transform-modules-commonjs": ^7.9.6 - "@magic-sdk/types": ^15.6.1 + "@magic-sdk/types": ^15.7.0 "@peculiar/webcrypto": ^1.1.7 eventemitter3: ^4.0.4 localforage: ^1.7.4 @@ -3075,7 +3075,7 @@ __metadata: languageName: unknown linkType: soft -"@magic-sdk/react-native-bare@^19.4.1, @magic-sdk/react-native-bare@workspace:packages/@magic-sdk/react-native-bare": +"@magic-sdk/react-native-bare@^19.5.0, @magic-sdk/react-native-bare@workspace:packages/@magic-sdk/react-native-bare": version: 0.0.0-use.local resolution: "@magic-sdk/react-native-bare@workspace:packages/@magic-sdk/react-native-bare" dependencies: @@ -3083,9 +3083,9 @@ __metadata: "@babel/core": ^7.15.0 "@babel/plugin-transform-flow-strip-types": ^7.14.5 "@babel/runtime": ~7.10.4 - "@magic-sdk/commons": ^14.4.1 - "@magic-sdk/provider": ^18.4.1 - "@magic-sdk/types": ^15.6.1 + "@magic-sdk/commons": ^14.5.0 + "@magic-sdk/provider": ^18.5.0 + "@magic-sdk/types": ^15.7.0 "@react-native-async-storage/async-storage": ^1.15.5 "@types/lodash": ^4.14.158 buffer: ~5.6.0 @@ -3111,7 +3111,7 @@ __metadata: languageName: unknown linkType: soft -"@magic-sdk/react-native-expo@^19.4.1, @magic-sdk/react-native-expo@workspace:packages/@magic-sdk/react-native-expo": +"@magic-sdk/react-native-expo@^19.5.0, @magic-sdk/react-native-expo@workspace:packages/@magic-sdk/react-native-expo": version: 0.0.0-use.local resolution: "@magic-sdk/react-native-expo@workspace:packages/@magic-sdk/react-native-expo" dependencies: @@ -3119,9 +3119,9 @@ __metadata: "@babel/core": ^7.15.0 "@babel/plugin-transform-flow-strip-types": ^7.14.5 "@babel/runtime": ~7.10.4 - "@magic-sdk/commons": ^14.4.1 - "@magic-sdk/provider": ^18.4.1 - "@magic-sdk/types": ^15.6.1 + "@magic-sdk/commons": ^14.5.0 + "@magic-sdk/provider": ^18.5.0 + "@magic-sdk/types": ^15.7.0 "@react-native-async-storage/async-storage": ^1.15.5 "@types/lodash": ^4.14.158 buffer: ~5.6.0 @@ -3147,7 +3147,7 @@ __metadata: languageName: unknown linkType: soft -"@magic-sdk/types@^15.6.1, @magic-sdk/types@workspace:packages/@magic-sdk/types": +"@magic-sdk/types@^15.7.0, @magic-sdk/types@workspace:packages/@magic-sdk/types": version: 0.0.0-use.local resolution: "@magic-sdk/types@workspace:packages/@magic-sdk/types" languageName: unknown @@ -12773,16 +12773,16 @@ fsevents@^2.3.2: languageName: unknown linkType: soft -"magic-sdk@^18.4.1, magic-sdk@workspace:packages/magic-sdk": +"magic-sdk@^18.5.0, magic-sdk@workspace:packages/magic-sdk": version: 0.0.0-use.local resolution: "magic-sdk@workspace:packages/magic-sdk" dependencies: "@babel/core": ^7.9.6 "@babel/plugin-proposal-optional-chaining": ^7.9.0 "@babel/runtime": ^7.9.6 - "@magic-sdk/commons": ^14.4.1 - "@magic-sdk/provider": ^18.4.1 - "@magic-sdk/types": ^15.6.1 + "@magic-sdk/commons": ^14.5.0 + "@magic-sdk/provider": ^18.5.0 + "@magic-sdk/types": ^15.7.0 localforage: ^1.7.4 localforage-driver-memory: ^1.0.5 languageName: unknown