-
Notifications
You must be signed in to change notification settings - Fork 12
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
Fallback for incomplete threads #1925
Comments
@janogarcia Assigning you and tagging X-Needs-Design as you will need to provide designs to help with this use case. Please add any details that I might have missed following our conversation this afternoon :) |
This was discussed a bit in chat, but this doesn't have to do with restricted rooms (which manage who can join a room), but with who has access to the history of a room. Technically this concept is referred to as "history visibility" in the spec and has three options:
For the specific questions above:
I would recommend re-using language from a quote reply from a message which you do not have access to. It is a similar concept.
I wonder if it makes sense for it to show up in the thread pane or if they should just be in the timeline? This isn't ideal, but might simplify some of this. It would give different users different views of the room though, which isn't great.
When trying to access an event that does not exist or is not visible the server returns a Note that the server will currently not respond to requests for the full thread in this case either, as the root message is not visible. I'm not sure if this is good or bad, but it fits the currently specced behavior of how relations work. |
The content in this error message in other parts of the app is :
|
James' document regarding all Federation concerns: https://docs.google.com/document/d/12LDwoQ2xQDpZBW52bHMw6U7MLg4jcjw5By480QXxpzU/edit?usp=sharing |
Although federation might cause similar symptoms, this ticket isn't related to federation, its related to history visibility. We should probably keep it that way, and have a separate ticket for dealing with federation issues. |
@daniellekirkwood @novocaine @gsouquet I put together some mockups for dealing with this specific issue. You can find my notes on the relevant section on Figma: I'm copying below a snapshot of those notes for convenience. As for other particular issues introduced by federation, I agree with James that those should be discussed in a separate issue. Note: Today's a national holiday in Spain, and then I'll be on vacation the next two days. I won't be able to follow up on this until next week. Copied from Figma: Restricted History ThreadsEdge case: The user can’t view messages in a thread prior to her join or invite date, due to room permissions. In the thread list, we’ll show a notice for restricted history threads, telling the user about that limitation. As we can’t fetch the actual content for the thread’s root message, we’ll append the message event ID, as a way to differentiate between restricted history threads. It’s far from optimal, but there’s no other useful data we can rely on. Any thread that is getting new replies since the user joined or was invited (depending on room’s permissions) should appear in the user’s thread list. Threads in which the latest reply happened before that point in time shouldn’t be visible to the user, as there wouldn’t be any viewable content for them. We should also consider — post P0 milestone and if technically doable, and performant — replacing the original root message with the first reply viewable by the user, and somehow communicating that condition properly to the user. In the thread view, we’ll show a notice before the first message that is viewable to the user. https://www.figma.com/file/T309ztx0sNyOOK6NKVLHsK/Threads?node-id=2761%3A308969 |
@daniellekirkwood We'll also need a similar issue to be created for Android and iOS. Android: Restricted history threads iOS: Restricted history threads |
Notes from Standup
Next steps
Goal
Other solutions
|
I've made a few improvements to the first iteration. I've revisited the icons, copy, as well as some design details. The approach/fallback remains unaltered, though. Also, I've added a mockup for the improved, post-P0 proposal where we replace the original root message with the first message viewable by the user — as long as that can be implemented in a performant way. |
Note that Element Web doesn't otherwise explain a room's history being hidden on join - see element-hq/element-web#16074 I feel like whatever we do here should be consistent with any improvement made to that? |
Great point - it would be great to apply at least the same content to both instances so users know why it's blank... |
As discussed today in the Threads standup, multiple reasons can cause a root message to be missing. At least, to my knowledge, these two:
The thing is that we can't tell between one or the other (or maybe the root message couldn't even exist at all because the event was crafted manually). So, are we OK prioritizing the most likely scenario — that is, room's history permissions — and show an error message that makes most sense in that case at the expense or not being accurate for the other scenarios (federation, or crafted stuff)? Or, should we tweak the copy to make it more generic/encompassing? |
I've only skimmed all the content in this issue, but one thing that may want be considered at the same time is encryption issues, the root thread event may be undecryptable as even though the room's history permissions allow you to download it, you may not have keys if it was sent prior to your join. |
@t3chguy Thanks for pointing that out. 👍 |
I would rather make it generic for now |
The more generic messages should now cover all the scenarios that we identified for causing incomplete threads, and it should hopefully be simple enough to implement for P0:
We're not disclosing if the root message actually exists, nor stating the specific reason (cause we can't know it for sure). @daniellekirkwood What do you think? Also, I'd appreciate a review from you as a native speaker! → Figma Snapshot |
@daniellekirkwood We should consider renaming this issue to something that better reflects its actual/current scope. "Fallback for incomplete threads" or something along the lines. |
@daniellekirkwood is this done? It is marked as Shipped yet still open |
@gsouquet where is this at? |
I'm not entirely sure why this ended up on the "Shipped" column. As there's no UI built for this, looks like this fell through the cracks, sorry about that. However the code has already a way to detect that the root message is missing. In that case the thread will have the |
Which also means it won't be shown in the Threads list because the code doesn't know how to handle mixing degraded and API-ful modes. Especially once that list is a paginated serverside list. element-hq/element-web#21877 |
When a user is invited to a restricted room that already has threads and messages, what should their experience be?
Discussion:
Needs:
The user has access to the Thread messages (they have access to) from the Thread list view;
When the user has clicked to view a thread that they only have rights to see part of;
Design
Figma: Restricted History Threads.
The text was updated successfully, but these errors were encountered: