Skip to content

Commit

Permalink
feat: Add embed-wallet-inject permissions option (#177)
Browse files Browse the repository at this point in the history
  • Loading branch information
skambalin authored Feb 15, 2024
1 parent 6b8beed commit d5a4f2e
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 9 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/embed-wallet-inject/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
4 changes: 3 additions & 1 deletion packages/embed-wallet-inject/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { EmbedWallet } from '@cere/embed-wallet';
import { EmbedWallet, PermissionRequest } from '@cere/embed-wallet';

import { PolkadotInjector } from './polkadot';

type InjectTarget = 'polkadot';
Expand All @@ -7,6 +8,7 @@ export type InjectOptions = {
name?: string;
targets?: InjectTarget[];
autoConnect?: boolean;
permissions?: PermissionRequest;
};

/**
Expand Down
15 changes: 11 additions & 4 deletions packages/embed-wallet-inject/src/polkadot/PolkadotInjector.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -8,6 +8,7 @@ export type PolkadotInjectorOptions = {
version?: string;
autoConnect?: boolean;
waitReady?: boolean;
permissions?: PermissionRequest;
};

export class PolkadotInjector {
Expand All @@ -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() {
Expand Down Expand Up @@ -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 = {
Expand Down
2 changes: 1 addition & 1 deletion packages/embed-wallet/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down

0 comments on commit d5a4f2e

Please sign in to comment.