microsoft / azure-boards-estimate

MIT License
34 stars 25 forks source link

Copying estimation link is broken due to double encoding #220

Closed sergey-litvinov closed 1 year ago

sergey-litvinov commented 1 year ago

Good day.

The plugin is pretty amazing, but we started to see an issue. We typically reuse existing session (based on the query) and then we just copy link to estimation session and then everyone joins by that link. The problem that we see when we copy a link to current session like below

https://dev.azure.com/someOrg/someTeam/_apps/hub/ms-devlabs.estimate.estimate-hub#/session/bhubx/SomeEstimate%20-%20Squad%20Session

then when we open that link in Chrome, it starts to loading Azure DevOps (and header is displayed), and then it double encodes hash for the link and it becomes

https://dev.azure.com/someOrg/someTeam/_apps/hub/ms-devlabs.estimate.estimate-hub#%2Fsession%2Fbhubx%2FSomeEstimate+-+Squad+Session=

and then a half second later it adds / there like

https://dev.azure.com/someOrg/someTeam/_apps/hub/ms-devlabs.estimate.estimate-hub#/%2Fsession%2Fbhubx%2FSomeEstimate+-+Squad+Session=

and displays just a blank page. It loads all sessions by _apis/ExtensionManagement/InstalledExtensions/ms-devlabs/estimate/Data/Scopes/Default/Current/Collections/sessions-5df83ce3-f701-47b9-98df-d588ca3171e2/Documents and i guess then it tries to iterate existing sessions and just can't match one in the url due to double encoding.

It started to happen ~2 weeks ago. It happens on both Windows & macOS and in Chrome\Safari so i guess it's not browser\platform specific

AminTi commented 1 year ago

Thanks for reporting.

AminTi commented 1 year ago

I cloud not reproduce it, it works as expected for me. do you use VPN ?

unholyranger-work commented 1 year ago

@AminTi We use VPN, I turned it off, and still got this effect.

We're running Estimate boards 2.3.81 but this started in 2.3.80 based on the timeframe we noticed it and when the extension was updated (Feb 6th).

Steps to recreate:

URL: _apps/hub/ms-devlabs.estimate.estimate-hub#/%2Fsession%2Fbhubx%2FTeam+-+Squad+Refinement=

Original URL: (when first navigating) _apps/hub/ms-devlabs.estimate.estimate-hub#/session/bhubx/Team%20-%20Squad%20Refinement

With this bug, we are unable to share direct links to sessions nor refresh during a session; which is a pain point to have to renavigate from the start.

sergey-litvinov commented 1 year ago

@AminTi i also debugged it locally and found a place where it happens. It loads

https://dev.azure.com/SomeOrg/_static/_ext/ms.vss-web/platform-content/ms.vss-web.platform-content.es6.P4y1CG.min.js

Inside of it there is a following code

    let o;
    if (window.location.hash) {
      var a = new URLSearchParams(window.location.hash.substring(1));
      o = a.get('code'),
      a.delete('code'),
      window.location.hash = '#' + a.toString()
    }
    class c extends g.VssService {

It gets executed before estimation board plugin, so when estimation board execution starts, then url is already encoded. Here are a couple of screenshots:

The first one when hash is still original:

FF_ScreenBefore

One more with a variable state before the hash change happened FF_ScreenBefore2

And then the final after a.ToString() of UrlSearchParams type happened and hash is updated:

FF_ScreenAfter

And basically it's doing a following code and it re encodes it again so it breaks the name

new URLSearchParams("/session/bhubx/Some_Some%20-%20Squad%20Refinement%20-%20Some%20Some").toString();

that outputs

'%2Fsession%2Fbhubx%2FSome_Some+-+Squad+Refinement+-+Some+Some='

Screenshots are from FireFox 110.0. I feel like it's not truly Estimation board issue since it happens on more common platform side, but if that change eventually would happen everywhere, then it might need a fix on Estimation board as well. Or if you feel that it's a platform side issue, then i would be happy to create a defect in a more correct place (if you help to understand what the place should be).

akamud commented 1 year ago

This is definitely not fixed. Just had this issue, fixing the double encoded characters manually makes the link work as expected.

AminTi commented 1 year ago

Resolved

unholyranger-work commented 1 year ago

The resolution doesn't help us :/ The encoded part is no longer put in the URL; which works, we can refresh now... but we can't direct link to the session and a refresh starts us back at the extension home page.

sergey-litvinov commented 1 year ago

To comment here too - it's resolved for us as part of the linked issue