element-hq / element-x-ios

Next generation Matrix client for iOS built with SwiftUI on top of matrix-rust-sdk.
https://element.io/labs/element-x
GNU Affero General Public License v3.0
423 stars 101 forks source link

Invites in room membership list don't local echo (or remote echo). #1189

Open ara4n opened 1 year ago

ara4n commented 1 year ago

Steps to reproduce

  1. Go to a room
  2. Invite a user to it
  3. See absolutely no evidence in the member list that you've invited a user (especially if messages are delayed due to #1105 or bad network connectivity)
  4. Feel completely disoriented

Outcome

What did you expect?

You should see a local echo of the invite in the membership list, even if you haven't seen the remote echo of the invite yet. It could have a spinner or be greyed out or something to show that it's still sending.

What happened instead?

A feeling of extreme flakiness and nausea.

Your phone model

No response

Operating system version

No response

Application version

254

Homeserver

No response

Will you send logs?

No

kittykat commented 1 year ago

@ara4n can you reproduce it after clearing cache?

I had a similar issue two weeks ago which was caused by https://github.com/matrix-org/matrix-rust-sdk/issues/2078

ara4n commented 1 year ago

I cleared cache, and can still repro it when inviting a new user.

ara4n commented 1 year ago

after clearing cache, the "Pending" user turns up in the membership list though.

This is pretty horrid UX...

pixlwave commented 1 year ago

With the network link conditioner set to 100% loss, sending an invite and returning to the timeline has no indication in the timeline that the invite was sent (or is pending to be sent). Turning off the conditioner gave me a error, followed by the invite appearing in the timeline.

Even without the network link conditioner, the membership list doesn't show the invited member even with the remote echo it seems, I needed to pop to the room details and push it back in again.

jplatte commented 1 year ago

I don't think this is actually possible. EleWeb doesn't seem to create a local echo either. The invite endpoint does not have a transaction ID parameter that could be used to identify the event as belonging to the invite request (also, the invite response does not contain the event ID either).

manuroe commented 1 year ago

I am deprioritising this feature because 1/ it would require specific work if we do not change the backend API and 2/ it does not exist elsewhere yet.

manuroe commented 3 months ago

Tested it today. The member list refreshes at some point after, I guess, the backend acknowledges the request. The refresh can be instant or multi seconds according to network or matrix.org conditions.

Managing a local echo with all the retry mechanisms behind to make it reliable is a significant amount of work.

Why not displaying a banner like the one when the user is removing another member?

Image

ara4n commented 2 months ago

also, the problem isn't just lack of local echo - but remote echo too