element-hq / element-desktop

A glossy Matrix collaboration client for desktop.
https://element.io
Apache License 2.0
1.13k stars 257 forks source link

Repeated occurrences of riot-desktop not taking the configured integration manager #905

Open turt2live opened 4 years ago

turt2live commented 4 years ago

Web appears unaffected

luilegeant commented 4 years ago

The logs look like this on riot-desktop:

Updating homeserver-configured integration managers...
Homeserver has no integration managers

Although the riot-web finds the integration manager.

t3chguy commented 4 years ago

@luilegeant

Well in your case it simply looks like the well-known isn't being observed.

Are there no other instances of Updating homeserver-configured integration managers... in the logs?

If you could; open the Javascript Console (Ctrl Shift I / Cmd Optn I) and type mxMatrixClientPeg.matrixClient.getClientWellKnown() posting the result here.

Thanks

luilegeant commented 4 years ago

Hello @t3chguy, when I read your answer, this is my first thought: how is the .well-known related to this ? I haven't seen (yet) any reference to the integration server in the well-known for matrix/client and matrix/server. If my .well-known needs to be updated, could you point me towards the documentation.

Second, no, there is no other occurences of the message Updating homeserver-configured integration managers... in the logs (I killed the app: only single occurrence in logs & rebooted my laptop to be sure: same result).

Lastly, here is what is returned by mxMatrixClientPeg.matrixClient.getClientWellKnown():

{"m.homeserver":{"base_url":"https://matrix.luilegeant.com"},"m.identity_server":{"base_url":"https://vector.im"}}

I did a json.stringify on the result to be able to copy paste it.

t3chguy commented 4 years ago

Where did you specify your integrations manager then? If config.json then where did you put the config.json?

luilegeant commented 4 years ago

:bulb: only in the riot-web configuration...

Because the dimension homepage doesn't mention it, or not clearly enough for me. It just says: Here's the configuration options you'll need to update in your Riot config.json to me it was saying "update the riot-web config.json" because I never touched the riot-deskopt config.json file.

t3chguy commented 4 years ago

update the riot-web config.json

Well as you have found, if you don't equally update the config for riot-desktop it will not work. https://github.com/vector-im/riot-desktop#user-specified-configjson has the docs on riot-desktop's config.json - however you might be better served by well-known: https://github.com/matrix-org/matrix-doc/blob/master/proposals/1957-integrations-discovery.md

If you want it documented in Dimension's docs then you should open an issue there.

luilegeant commented 4 years ago

Hello, Sorry for the long delay.

Here are my findings:

  1. How to force re-downloading the .well-known/matrix/client info (I don't want to wait for the x hours before the lifetime expires or the app decides to re-download the client info):
    • open dev tools, go to network tabs, check box "disable cache"
    • force re-load ctrl+f5 (if doesn't work put your cursor in active mode (blinking) in the dev tools and retry)
    • Then you can use the mxMatrixClientPeg.matrixClient.getClientWellKnown() rerturning updated data.

Disconnect & relog into the riot-desktop doesn't seem to do the trick (for me anyway during these tests).

  1. Reading the MSC1957: Via domain.tld/.well-known/matrix/integrations doesn't seem to do anything
  2. Reading the MSC1957: Via domain.tld/.well-known/matrix/client 2 cases tried: A. Adding this section in the .well-known/matrix/client doesn't change anything "m.integrations_widget": { "url": "https://dimension.luilegeant.com/riot", "data": { "api_url": "https://dimension.luilegeant.com/api/v1/scalar" } }

    B. Adding this section in the .well-known/matrix/client doesn't change anything "m.integrations": { "managers": [ { "api_url": "https://dimension.luilegeant.com/api/v1/scalar", "ui_url": "https://dimension.luilegeant.com/riot" } ] }

    C. And putting both inside doesn't change anything either.

Bubu commented 4 years ago

Hm, my dimension setup in riot-desktop via .well-known was working until this morning, when I upgraded from 1.6.4 to 1.6.8 (archlinux package). Now I'm back to scalar. :-/

This is what it looks like when typing thing into the console:

image

TheTimeWalker commented 4 years ago

Yup, this is the same case for me. Interestingly enough my local Laptop does it correctly but another user from the same home server has issues accessing the integration manager even though the sticker picker is pointing to the right direction. This persists in 1.7.0

image image

Metzlmane commented 4 years ago

For me it's the same Problem as above... The well-known record was working fine until 1.6.8 And as far as i understand: scalar.vector.im is now stuck there since the desktop app basically never updates those settings via well-known once logged in?

betimi91 commented 4 years ago

I am having same problems even in dev tools it shows the correct url etc -> dimension works over chrome web ( new elementor previously riot ) but not in desktop app instead of our dimension it shows scalar.vector.im

image

auscompgeek commented 4 years ago

I'm hitting this in Firefox with Radical and riot.im/develop too.


Uncaught (in promise) TypeError: this._managers is undefined
    _setupHomeserverManagers webpack-internal:///559:123
    emit webpack-internal:///28:157
    _fetchClientWellKnown webpack-internal:///458:4844
t3chguy commented 4 years ago

aha, I think thats the problem!

ctwelve commented 4 years ago

Not to resurrect anything, but this problem persists in Element Desktop. Do we know if the upstream fix has made it into a release yet?

t3chguy commented 4 years ago

https://github.com/matrix-org/matrix-react-sdk/pull/5010/commits/7453f8dd071b525b522bca525bc331d26866849b says it has been included in 2 releases so far. So if you are on 1.7.2 or 1.7.3 and it still doesn't work then send logs from Settings.

Bubu commented 4 years ago

This seems to have regressed again.

@t3chguy debug logs sent with refenrence to this issue.

t3chguy commented 4 years ago
2020-08-23T11:42:40.850Z I Updating homeserver-configured integration managers...
2020-08-23T11:42:40.850Z I Homeserver has 1 integration managers
...
2020-08-23T11:49:13.082Z I Updating homeserver-configured integration managers...
2020-08-23T11:49:13.083Z I Homeserver has no integration managers

It seems like it gets set and then later cleared in your logs @Bubu, very strange

Bubu commented 4 years ago

I believe the second entry was me calling setupHomeserverManagers() manually after noticing it didn't work.

I've resent the logs after a restart without fiddling with the dev-tools this time.

t3chguy commented 4 years ago

Hmm, those logs correctly show Homeserver has 1 integration managers which is strange, do you have an integrations manager in your account data? Did you ever use the multiple integrations manager feature?

Bubu commented 4 years ago

I have this in my account data, but I don't think that is what you are looking for?

{
  "type": "im.vector.setting.integration_provisioning",
  "content": {
    "enabled": true
  }
}

Did you ever use the multiple integrations manager feature?

No.

Bubu commented 4 years ago

This is getting interesting... :thinking:

Right now I had dimension back without a restart since reporting the issue yesterday. I just went ahead and restarted element-desktop again. And I'm back on scalar.

Mikaela commented 3 years ago

I think I am having this issue on develop.element.io with it saying that my integration server is dimension.aragon.sh. How can I change it back to Scalar to manage integrations made with it?

GeoBSI commented 3 years ago

Same issue with riot-desktop here: Homeserver has 1 integration managers appeared in console but the only available integration was still Scalar. I got a .well-known/matrix/client defined as luilegeant's one and have no issue with riot-web.

Managed to get my Dimension integration on riot-desktop by manually updating the mxIntegrationManagers. A bit annoying but it's working. In the DevTools console:

ctwelve commented 3 years ago

Yeah. I can report that this issue continually appears no matter the version of client. It's hard to pin down exactly what's driving it but I have multiple users on my homeserver who cannot get a reliable integration experience because of this. my .well-known is properly configured, I personally get it to work somehow on my desktop and web clients...

I am testing with a smart user right now, so we'll see.

xelantro commented 3 years ago

Same issue with riot-desktop here: Homeserver has 1 integration managers appeared in console but the only available integration was still Scalar. I got a .well-known/matrix/client defined as luilegeant's one and have no issue with riot-web.

Managed to get my Dimension integration on riot-desktop by manually updating the mxIntegrationManagers. A bit annoying but it's working. In the DevTools console:

* get the current state with `this.mxIntegrationManagers.sharedInstance()`

* execute `this.mxIntegrationManagers.instance.setupHomeserverManagers(this.mxIntegrationManagers.sharedInstance().client.getClientWellKnown())` to update the manager with the data from your `.well-known/matrix/client`

* restart the riot-desktop client

I tried this - my .well-known/matrix/client should be as in described in the linked post but CORS happens - could that be the problem or am I not allowed to call that funktion directly? grafik

aaronraimist commented 3 years ago

@xelantro you have not configured your .well-known/matrix/client file correctly. You need to add an Access-Control-Allow-Origin header so that Element can access the file. https://matrix-org.github.io/synapse/develop/setup/installation.html#client-well-known-uri

xelantro commented 3 years ago

thanks a lot - I actually did that but since my .well-known file is handelt by a seperate server behind a reverse proxy I tryed to set the header twice (so I had to remove the heady from my outer server)

davidmehren commented 3 years ago

I also have to report that Element Desktop (nightly and stable) does not reliably use the integration manager configured via .well-known. It worked at first, but a restart later it used Scalar again. I had to restart a few times to get Element to use my Dimension again. In all cases Homeserver has 1 integration managers appeared in the log. Anything I can do to help debug this?

ctwelve commented 3 years ago

I have verified that CORS is properly set and that the return body is correct, and all headers are correct. Still manifests this errors, and its super frustrating as it outright cripples a major set of functionality.

v411e commented 2 years ago

My Element Desktop also does not use the integration manager which I have specified using the client-wellknown. I have doublechecked the CORS configuration. Although it worked once after restarting Element-Desktop the first time. Now not even a restart brings dimension back :/

Element version: 1.10.4

Wouldn't it be easier to just let the user define a preferred integration manager via a textbox? Just like it is already done for identity servers?

image

v411e commented 2 years ago

This is so random... I bet it's changing to scalar again on the next restart

image

bonobo7 commented 2 years ago

I've setted up my own matrix server with the ansible playbook and experiencing the same problem, very frustrating 😅

joecool1029 commented 2 years ago

I'm an ansible playbook user too. I figured out a workaround to get this to work, rather... I can tell what the cause of this issue is and maybe a dev can fix it.

https://github.com/vector-im/element-desktop/issues/905 < this comment was helpful.

Basically, if you're sure your instance is serving .well-known (probably is if iOS/Android/Web was working like it was for me), you need to clear Electron's cache because the clear cache button won't work inside element-desktop, nor will blowing out the entire config directory for element-desktop. Nope, electron wants to cache the wrong .well-known until whenever it feels like. Only way to stop it being stupid is to fire up inspector, tick the disable cache box, and force reload the app.

tommy2d commented 2 years ago

We facing very similar issues with all-latest versions of Element Desktop, Synaps and Dimension. Even though everything is configured the right way using the .well-known client configuration, the integration manager is being reverted back to scalar after a little while. Executing the following in the debug console reverses this in the preference panel (but doesn't fix the broken tokens, so sticker picking etc is not actually working):

this.mxIntegrationManagers.instance.setupHomeserverManagers(this.mxIntegrationManagers.sharedInstance().client.getClientWellKnown())

It happens for existing and new users, and disabling the cache does not prevent this form happening.