matrix-org / matrix.to

A simple stateless privacy-protecting URL redirecting service for Matrix
http://matrix.to
Apache License 2.0
893 stars 189 forks source link

Open matrix.to link in existing browser tab I already have open with Element #198

Closed MadLittleMods closed 3 years ago

MadLittleMods commented 3 years ago

Is your feature request related to a problem? Please describe.

When I go through the matrix.to link flow for a permalink, it asks me whether I want to continue via browser or desktop app. I use Element in my browser and already have a tab open. When I press Continue in browser, it opens yet another tab of Element to show the message.

Describe the solution you'd like

Open the permalink in my existing tab of Element instead of a new one which takes forever to load.

When Matrix.to sends you off to app.element.io, we could use some of the cross-tab communication in browsers and have a script run at the very beginning of page-load which would communicate the permalink location to the other tab instance and close itself.

Describe alternatives you've considered

Copy paste the permalink and use the /goto https://matrix.to/#/!xxx:matrix.org/$oIfQnLVKFwRE_Rme0Z5AvqzaYvHTuTtxqBYnnbR1yN8 slash command in your Element instance.

You can also just give in and use the desktop app which will always point to one instance.

t3chguy commented 3 years ago

Cross-origin cross-tab communication only works when one tab opens the other

MadLittleMods commented 3 years ago

@t3chguy I think there are multiple ways we can communicate but I was thinking of using broadcast channels. Here is a nice concise video where I was introduced to it: https://www.youtube.com/watch?v=kBut8LqVgYE. To be clear, I was thinking of doing the communication on the app.element.io side. Matrix.to -> New app.element.io page that posts to the broadcast channel (BC) right when it starts up(before the main app loads at all) of where we need to go and closes -> my existing Element tab picks up that information from the BC goes to the place.

Other ways from a quick Google: https://blog.bitsrc.io/4-ways-to-communicate-across-browser-tabs-in-realtime-e4f5f6cbedca

t3chguy commented 3 years ago

Interesting solution

bwindels commented 3 years ago

@MadLittleMods this could work indeed, but the issue belongs more in the element repo, as this would need to be implemented there. I'll transfer the issue.

bwindels commented 3 years ago

Hmm, for some reason I can't transfer it. Would you mind filing it again in https://github.com/vector-im/element-web ?

MadLittleMods commented 3 years ago

Created https://github.com/vector-im/element-web/issues/16899 :tada: