Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

In some places, allow to use URL in addition to URI #85930

Open
jrieken opened this issue Dec 2, 2019 · 15 comments
Open

In some places, allow to use URL in addition to URI #85930

jrieken opened this issue Dec 2, 2019 · 15 comments
Assignees
Labels
api feature-request Request for new features or functionality uri
Milestone

Comments

@jrieken
Copy link
Member

jrieken commented Dec 2, 2019

This is followup work from #83645 and in essence it's about allowing to use the URL-type when dealing with resources outside of VS Code. So far we have identified:

  • the openExternal-api
  • the DocumentLinkProvider-api
@tjx666
Copy link
Contributor

tjx666 commented Jan 18, 2020

is there any progress? @jrieken

@nblagoev
Copy link

nblagoev commented Apr 10, 2020

Hi @jrieken, any ETA on resolving this? I cannot find a way out of this encoding problem with vscode.env.openExternal

  • Tried the same URL from the verification steps described at URI vs URL and going forward #83645 (comment)

    vscode.env.openExternal(
        vscode.Uri.parse(
            "https://firebasestorage.googleapis.com/v0/b/brewlangerie.appspot.com/o/products%2FzVNZkudXJyq8bPGTXUxx%2FBetterave-Sesame.jpg?alt=media&token=0b2310c4-3ea6-4207-bbde-9c3710ba0437"
        )
    )
  • Browser opens (1) with 400 Invalid HTTP method/URL pair. instead of (2)

    (1) https://firebasestorage.googleapis.com/v0/b/brewlangerie.appspot.com/o/products/zVNZkudXJyq8bPGTXUxx/Betterave-Sesame.jpg?alt=media&token=0b2310c4-3ea6-4207-bbde-9c3710ba0437
    
    (2) https://firebasestorage.googleapis.com/v0/b/brewlangerie.appspot.com/o/products%2FzVNZkudXJyq8bPGTXUxx%2FBetterave-Sesame.jpg?alt=media&token=0b2310c4-3ea6-4207-bbde-9c3710ba0437
    

@jrieken jrieken added the feature-request Request for new features or functionality label Apr 14, 2020
@jrieken jrieken added this to the Backlog milestone Apr 14, 2020
@DanTup
Copy link
Contributor

DanTup commented May 20, 2020

I'm blocked on this now too - I need to open URLs that have fragments and they get encoded incorrectly.

@jrieken this isn't assigned to any milestone - do you think it's likely to happen in the near future? Would you accept a PR that just adds an overload that takes URL in openExternal?

We can work around it for non-remote workspaces by just launching the browser ourselves, but it'll still be broken in VS Codespaces and friends.

@jrieken
Copy link
Member Author

jrieken commented May 20, 2020

It isn't a trivial change but feel free to give it a try, code pointer:

let uriAsString: string | undefined;

@DanTup
Copy link
Contributor

DanTup commented May 20, 2020

It isn't a trivial change

Before I bite off more than I can chew, what makes you say that? I thought it might just be a case of accepting a URL all the way through (in the same way as it currently accepts a URI). Now I'm not so sure 😄

(though probably if it was so simple, it would've been done already! ..)

@jrieken
Copy link
Member Author

jrieken commented May 26, 2020

For remote extension hosts, all uris go through some special handling so that an extension can talk about a (local) file-uri and so that the UI knows that it's a file-uri on the other machine. So, now the question is if URL objects should also go through that mechanism (which requires them to be uris) or not

@DanTup
Copy link
Contributor

DanTup commented May 26, 2020

I see - it does sound like there's more to it than I thought.

I've managed to work around it for now (passing things on the querystring - which isn't affected as much by the encoding - instead of the fragment, and having the receiving app move them over) as I needed a fix for the next release.

@chdsbd
Copy link

chdsbd commented Apr 17, 2021

As a hack, I was able to pass a string to vscode.env.openExternal(myUrl) instead of using vscode.env.openExternal(vscode.Uri.parse(myUrl)). I don't know how robust this is because I had to @ts-ignore the call, but it works for my use case and my url no longer gets double encoded.

@akosyakov
Copy link
Contributor

akosyakov commented Oct 15, 2021

Stumbled on the similar issue while trying to open external with query params for ouath2. ? in redirect URI gets double encoded. It would be nice if just string type can be allowed for external URIs 🙏

DanTup added a commit to Dart-Code/Dart-Code that referenced this issue Jan 24, 2022
This disables exposing the URL to avoid some VS Code encoding issues (microsoft/vscode#85930) in order to be compatible with DevTools using PageUrlStrategy.

It should be restored by changing these functions over to using raw strings where possible instead or Uris (#3799).
@DavidGoldman
Copy link
Contributor

It seems like this could be supported by changing the API to note it supports a string - or maybe introduce another API to avoid this double-encoding issue?

@eamodio
Copy link
Contributor

eamodio commented Jun 1, 2022

I got bit by this as well: gitkraken/vscode-gitlens#2014

As @DavidGoldman notes, passing a string works and avoids this problem. @jrieken could the .d.ts be updated to allow a string?

eamodio added a commit to gitkraken/vscode-gitlens that referenced this issue Jun 1, 2022
@DavidGoldman

This comment was marked as spam.

@tjx666
Copy link
Contributor

tjx666 commented Dec 24, 2022

@jrieken My issue #88273 is marked as duplicated with this issue, but I think it may not same with this.

I test following solution, but not work for my situation on windows.

As a hack, I was able to pass a string to vscode.env.openExternal(myUrl) instead of using vscode.env.openExternal(vscode.Uri.parse(myUrl)). I don't know how robust this is because I had to @ts-ignore the call, but it works for my use case and my url no longer gets double encoded.

@brpaz
Copy link

brpaz commented Feb 20, 2023

Hello. Any chance this can be fixed? an extension that I am building relies on openExternal to open files with an external protocol, and it´s encoding the "=" in the query string, breaking the url handler.

@akosyakov hack worked for me, in the meanwhile.

@max-samusevich
Copy link

max-samusevich commented Mar 13, 2023

Hello. Any chance this can be fixed? an extension that I am building relies on openExternal to open files with an external protocol, and it´s encoding the "=" in the query string, breaking the url handler.

@akosyakov hack worked for me, in the meanwhile.

Same for me. I'm trying to open an external app with a link in an .md file: [test link](obsidian://open?vault=Obsidian%20Sandbox&file=Adventurer%2FNo%20prior%20experience), but I get an error alert if I click the link in the file itself and get no response in a default md preview, same with a preview from the Markdown preview enhanced extension.

VS Code encodes "=" signs

A also tried to add the "obsidian://" protocol to accepted protocols for links that are processed by the Markdown preview enhanced extension but still nothing happens in the preview mode of this extension.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api feature-request Request for new features or functionality uri
Projects
None yet
Development

No branches or pull requests

10 participants