From 108552e4991a6f185006160a88a7683835b033a2 Mon Sep 17 00:00:00 2001 From: Sai Kranthi Date: Tue, 1 Oct 2024 19:07:17 +0530 Subject: [PATCH 1/4] fix: ensurepermissions without disconnecting --- src/hooks/permissions.ts | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/hooks/permissions.ts b/src/hooks/permissions.ts index 50c2554..ff62610 100644 --- a/src/hooks/permissions.ts +++ b/src/hooks/permissions.ts @@ -2,7 +2,8 @@ import type { ConnectMsg } from "./connection/connect"; import { STRATEGY_STORE } from "../strategy"; import useActiveStrategy from "./strategy"; import useGlobalState from "./global"; -import { useEffect } from "react"; +import { useEffect, useRef } from "react"; +import { comparePermissions } from "../utils"; import type { PermissionType } from "arconnect"; /** @@ -39,8 +40,10 @@ export default function usePermissions(): PermissionType[] { // sync permissions in global state export function useSyncPermissions() { + const isReconnecting = useRef(false); const { state, dispatch } = useGlobalState(); const strategy = useActiveStrategy(); + const { permissions: requiredPermissions, ensurePermissions } = state.config; useEffect(() => { // sync permissions @@ -55,12 +58,30 @@ export function useSyncPermissions() { try { const permissions = await strategy.getPermissions(); + const hasPermissions = comparePermissions( + requiredPermissions, + permissions + ); dispatch({ type: "UPDATE_PERMISSIONS", payload: permissions }); + if (requiredPermissions.length === 0 && ensurePermissions) { + fixupDisconnection(); + return; + } + + if (!hasPermissions && ensurePermissions && !isReconnecting.current) { + isReconnecting.current = true; + await strategy.connect( + requiredPermissions, + state.config.appInfo, + state.config.gatewayConfig + ); + } + if (permissions.length === 0) { fixupDisconnection(); } @@ -130,5 +151,5 @@ export function useSyncPermissions() { strategy.removeAddressEvent(addressChangeSync); } }; - }, [strategy, dispatch]); + }, [strategy, requiredPermissions, dispatch]); } From 2f419dc831e07d1568704a6f99cafd356b81cbba Mon Sep 17 00:00:00 2001 From: 7i7o Date: Wed, 9 Oct 2024 20:55:17 +0200 Subject: [PATCH 2/4] add batchSignDataItem to Arconnect strategy --- src/strategy/strategies/ArConnect.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/strategy/strategies/ArConnect.ts b/src/strategy/strategies/ArConnect.ts index 2bf154b..69febb5 100644 --- a/src/strategy/strategies/ArConnect.ts +++ b/src/strategy/strategies/ArConnect.ts @@ -1,6 +1,7 @@ import BrowserWalletStrategy from "./BrowserWallet"; import { callWindowApi } from "../../utils"; import type Strategy from "../Strategy"; +import type { DataItem } from "arconnect"; export default class ArConnectStrategy extends BrowserWalletStrategy @@ -31,4 +32,8 @@ export default class ArConnectStrategy public async addToken(id: string): Promise { return await callWindowApi("addToken", [id]); } + + public async batchSignDataItem(dataItems: DataItem[]): Promise { + return await callWindowApi("batchSignDataItem", [dataItems]); + } } From a63ce808ae43c5aa20683b5566234a4ac42f0a29 Mon Sep 17 00:00:00 2001 From: 7i7o Date: Thu, 10 Oct 2024 13:43:25 +0200 Subject: [PATCH 3/4] bump arconnect types package --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 153ce1c..b3b9a40 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "@types/react-dom": "^18.0.10", "@types/react-helmet": "^6.1.6", "@vitejs/plugin-react": "^3.0.0", - "arconnect": "^1.0.3", + "arconnect": "^1.0.4", "babel-loader": "^8.3.0", "prettier": "^2.8.2", "react": "^18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56b59af..0f47adc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,8 +88,8 @@ importers: specifier: ^3.0.0 version: 3.1.0(vite@4.5.5(@types/node@18.19.54)(terser@5.34.1)) arconnect: - specifier: ^1.0.3 - version: 1.0.3 + specifier: ^1.0.4 + version: 1.0.4 babel-loader: specifier: ^8.3.0 version: 8.4.1(@babel/core@7.25.2)(webpack@5.95.0(esbuild@0.18.20)) @@ -2231,8 +2231,8 @@ packages: arconnect@0.4.2: resolution: {integrity: sha512-Jkpd4QL3TVqnd3U683gzXmZUVqBUy17DdJDuL/3D9rkysLgX6ymJ2e+sR+xyZF5Rh42CBqDXWNMmCjBXeP7Gbw==} - arconnect@1.0.3: - resolution: {integrity: sha512-A4BTa1hl8SIbAMVUOsIiLwavmCvIMpbEFSem64klDBuBOMoIuEMUPxP5AoUfUxJZwUdL3NhNj584lCWUSGtdyA==} + arconnect@1.0.4: + resolution: {integrity: sha512-oEJRl2Cci2dSH+IEpdS1XEBqiZ+3OgPRSYWRx6MxDJU3I+NORrfrrjeZLcuruj6YNId5dpr0ROQuVnUrNkpfRg==} argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -7845,7 +7845,7 @@ snapshots: dependencies: arweave: 1.15.5 - arconnect@1.0.3: {} + arconnect@1.0.4: {} argparse@1.0.10: dependencies: From dca727c48b0319ea6fb9fea0208c4a27d5de0fcc Mon Sep 17 00:00:00 2001 From: 7i7o Date: Thu, 10 Oct 2024 13:43:49 +0200 Subject: [PATCH 4/4] 1.0.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b3b9a40..78400f6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "arweave-wallet-kit", "private": false, - "version": "1.0.6", + "version": "1.0.7", "type": "module", "publishConfig": { "access": "public"