bitshares / beet

Beet is a stand-alone key/identity-manager and signing app for BitShares, heavily influenced by Scatter.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Deeplink length can exceed webview2 url length limits

grctest opened this issue · comments

commented

Describe the bug

WebView2 (default web view on windows) limits the length of deeplink support to 2000 chars (with extra for params), and there doesn't seem to be a workaround.

So an external app cannot trigger a large operation deeplink, but the same deeplink can be pasted into firefox, which works.

To Reproduce

Create a deeplink with multiple operations (11 transfer operations for example).

Try to interact with this deeplink in a webview2 based app, such as microsoft edge, or a tauri app (see the airdrop tool for example). It won't work.

Then try pasting this same deeplink into firefox, it will work.

Expected behavior

All operations and operation bundles which are less than the max 1 block limits should work in a deeplink.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows 11
  • Browser: Edge & Firefox

Additional context

It's possible that for example the committee configuration might not work in a deeplink despite bieng a single operation, it max exceed this max url limit, so this deeplink button wouldn't work in an app running on windows.

BTS-CM/airdrop_tool#2

commented

Users can now upload local json for prompts, exceeding this max deeplink length.

The data being sent to the prompt is also now sent via ipcmain/ipcrenderer to avoid a similar url length issue.

Merged into develop branch.

commented

An interesting idea I've come across on the internet is using JS based compression like fflate/pako to compress the url parameters to exceed the URL length further, we could look into something like this by adding a "is compressed" flag, then decompress the incoming deeplink, however we'd then need to re-compress/decompress when sending the data via the context bridge api.