@hashgraph/hedera-wallet-connect 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -187,6 +187,67 @@ to approve or reject the session:
187
187
  Upon receiving a `session_request` event, process the request. For instance, if the dApp
188
188
  requests a transaction to be signed:
189
189
 
190
+ #### Extension popup
191
+
192
+ By default, it is not possible to directly pop up an extension with Wallet Connect. However, to
193
+ allow this possibility, the dAppConnector look for extensions. If you create the AppConnector,
194
+ it will automatically send a message to the extension to detect if it is installed. In case the
195
+ extension is installed, it will be added to the available extensions and its data can be found
196
+ at the extensions property of dAppConnector.
197
+
198
+ To connect an available extension, use the method `connectExtension(<extensionId>)`. This will
199
+ link the extension to the signer and session. Whenever you use the signer created for this
200
+ session, the extension will automatically open. You can find out if the extension is available
201
+ by checking the `extensions` property.
202
+
203
+ ```javascript
204
+ const dAppConnector = new DAppConnector(
205
+ dAppMetadata,
206
+ LedgerId.TESTNET,
207
+ projectId,
208
+ Object.values(HederaJsonRpcMethod),
209
+ [HederaSessionEvent.ChainChanged, HederaSessionEvent.AccountsChanged],
210
+ [HederaChainId.Testnet]
211
+ )
212
+
213
+ [...]
214
+
215
+ dAppConnector?.extensions?.forEach((extension) => {
216
+ console.log(extension)
217
+ })
218
+
219
+ const extension = dAppConnector?.extensions?.find((extension) => extension.name === '<Extension name>')
220
+ if (extension.available) {
221
+ await dAppConnector!.connectExtension(extension.id);
222
+ const signer = dAppConnector.getSigner(AccountId.fromString('0.0.12345'))
223
+
224
+ // This request will open the extension
225
+ const response = await signer.signAndExecuteTransaction(transaction)
226
+ }
227
+ ```
228
+
229
+ Wallets that are compatible should be able to receive and respond to the following messages:
230
+
231
+ - `"hedera-extension-query"`: The extension is required to respond with
232
+ `"hedera-extension-response"` and provide the next set of data in the metadata property.
233
+ ```javascript
234
+ let metadata = {
235
+ id: '<extesnionId>',
236
+ name: '<Wallet name>',
237
+ url: '<Wallet url>',
238
+ icon: '<Wallet con>',
239
+ description: '<Wallet url>',
240
+ }
241
+ ```
242
+ - `"hedera-extension-open-<extensionId>"`: The extension needs to listen to this message and
243
+ automatically open.
244
+ - `"hedera-extension-connect-<extensionId>"`: The extension must listen to this message and
245
+ utilize the `pairingString` property in order to establish a connection.
246
+
247
+ This communication protocol between the wallet and web dApps requires an intermediate script to
248
+ use the Chrome API. Refer to the
249
+ [Chrome Extensions documentation](https://developer.chrome.com/docs/extensions/develop/concepts/messaging)
250
+
190
251
  ## Demo & docs
191
252
 
192
253
  This repository includes a vanilla html/css/javascript implementation with a dApp and wallet