From d5a4f2e3f457fccf554c70cc684cfdf4c16c885e Mon Sep 17 00:00:00 2001 From: Sergey Kambalin Date: Thu, 15 Feb 2024 13:57:36 +0600 Subject: [PATCH] feat: Add embed-wallet-inject permissions option (#177) --- package-lock.json | 4 ++-- packages/embed-wallet-inject/package.json | 2 +- packages/embed-wallet-inject/src/index.ts | 4 +++- .../src/polkadot/PolkadotInjector.ts | 15 +++++++++++---- packages/embed-wallet/package.json | 2 +- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 61f9fd1e..fb9fe160 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39615,7 +39615,7 @@ }, "packages/embed-wallet": { "name": "@cere/embed-wallet", - "version": "0.13.0", + "version": "0.15.0", "license": "ISC", "dependencies": { "@cere/torus-embed": "0.2.7", @@ -39626,7 +39626,7 @@ }, "packages/embed-wallet-inject": { "name": "@cere/embed-wallet-inject", - "version": "0.13.0", + "version": "0.15.0", "dependencies": { "@polkadot/extension-inject": "^0.46.6" }, diff --git a/packages/embed-wallet-inject/package.json b/packages/embed-wallet-inject/package.json index 0cf302ca..ec6cfe51 100644 --- a/packages/embed-wallet-inject/package.json +++ b/packages/embed-wallet-inject/package.json @@ -1,6 +1,6 @@ { "name": "@cere/embed-wallet-inject", - "version": "0.14.0", + "version": "0.15.0", "sideEffects": false, "type": "module", "types": "./dist/types/index.d.ts", diff --git a/packages/embed-wallet-inject/src/index.ts b/packages/embed-wallet-inject/src/index.ts index 36aad2b2..bf00ad56 100644 --- a/packages/embed-wallet-inject/src/index.ts +++ b/packages/embed-wallet-inject/src/index.ts @@ -1,4 +1,5 @@ -import { EmbedWallet } from '@cere/embed-wallet'; +import { EmbedWallet, PermissionRequest } from '@cere/embed-wallet'; + import { PolkadotInjector } from './polkadot'; type InjectTarget = 'polkadot'; @@ -7,6 +8,7 @@ export type InjectOptions = { name?: string; targets?: InjectTarget[]; autoConnect?: boolean; + permissions?: PermissionRequest; }; /** diff --git a/packages/embed-wallet-inject/src/polkadot/PolkadotInjector.ts b/packages/embed-wallet-inject/src/polkadot/PolkadotInjector.ts index 9ca3b806..2ce8e4d3 100644 --- a/packages/embed-wallet-inject/src/polkadot/PolkadotInjector.ts +++ b/packages/embed-wallet-inject/src/polkadot/PolkadotInjector.ts @@ -1,4 +1,4 @@ -import { EmbedWallet } from '@cere/embed-wallet'; +import { EmbedWallet, PermissionRequest } from '@cere/embed-wallet'; import { injectExtension } from '@polkadot/extension-inject'; import type { Injected, InjectedAccount, InjectedAccounts } from '@polkadot/extension-inject/types'; import type { SignerPayloadRaw, SignerResult, Signer, SignerPayloadJSON } from '@polkadot/types/types'; @@ -8,6 +8,7 @@ export type PolkadotInjectorOptions = { version?: string; autoConnect?: boolean; waitReady?: boolean; + permissions?: PermissionRequest; }; export class PolkadotInjector { @@ -16,15 +17,17 @@ export class PolkadotInjector { private injected: boolean = false; private shouldConnect: boolean; private shouldWait: boolean; + private permissions?: PermissionRequest; constructor( readonly wallet: EmbedWallet, - { name, version, autoConnect = false, waitReady = true }: PolkadotInjectorOptions = {}, + { name, version, autoConnect = false, waitReady = true, permissions }: PolkadotInjectorOptions = {}, ) { - this.name = name || 'CereWallet'; + this.name = name || 'Cere Wallet'; this.version = version || '0.0.0'; this.shouldConnect = autoConnect; this.shouldWait = waitReady; + this.permissions = permissions; } get isInjected() { @@ -83,7 +86,11 @@ export class PolkadotInjector { } if (this.shouldConnect && this.wallet.status === 'ready') { - await this.wallet.connect(); + await this.wallet.connect({ + permissions: this.permissions, + }); + } else if (this.wallet.status === 'connected' && this.permissions) { + await this.wallet.requestPermissions(this.permissions).catch(console.warn); } const accounts: InjectedAccounts = { diff --git a/packages/embed-wallet/package.json b/packages/embed-wallet/package.json index f916c988..84bf5644 100644 --- a/packages/embed-wallet/package.json +++ b/packages/embed-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@cere/embed-wallet", - "version": "0.14.0", + "version": "0.15.0", "description": "Cere Wallet SDK to integrate the wallet into a web application.", "sideEffects": false, "main": "dist/bundle.umd.js",