-
Notifications
You must be signed in to change notification settings - Fork 14
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
Expected UTDs: Hide device-relative historical UTDs #2313
Comments
Probably requires a fix to element-hq/element-web#27009? Edit: not really. The two are orthogonal. |
This is somewhat related to #2314, and dealing with the race condition might have a similar solution. |
As a first step, we will not hide the events altogether, but display a placeholder. |
Note: we should ensure that it's also hiding historical UTDs in thread view. |
Rough idea for approach here:
More detailed work:
|
Turns out this is useful for element-hq/element-meta#2313.
Turns out this is useful for element-hq/element-meta#2313.
Decision tree for the text to be displayed: flowchart TD
A{Timestamp on the message postdates the creation of our device}
A -- Yes --> X
A -- No --> B
B{Is there a backup}
B -- No --> Y
B -- Yes --> C
C{Is the device verified}
C -- No --> Z
C -- Yes --> X
X([Normal UTD error])
Y([History is not available on this device])
Z([You need to verify this device])
|
Discussion today suggests the full flow diagram implemented looks like this: flowchart TD
A{Is the message newer than the device?}
A -- No --> B
A -- Yes --> X
B{Is there a backup on the server?}
B -- No --> Y
B -- Yes --> C
C{Is backup working on this device?}
C -- No --> D
C -- Yes --> X
D{Is this device verified?}
D -- No --> Z
D -- Yes --> X
X([Normal UTD error])
Y([History is not available on this device])
Z([You need to verify this device])
In matrix-js-sdk most of this is implemented when we choose a I am looking at this as I am implementing similar logic in matrix-rust-sdk, probably in UtdCause::determine. |
(I am working on #2638 ) |
A freshly logged in session will have access to event in the joined rooms, but not to the keys for the messages as the device didn't exist when the event were sent.
The new device has to go through the verification process in order to get access to the keys and properly display history.
We are talking here about
Device-Relative
history:Currently EIX is hiding such history until the device has access to backup:
Technical Inputs
How to detect when an event is historical to the current device?
Currently EIX is using events
origin_server_ts
of events (isItemInEncryptionHistory). It's comparing the local creation date of the device ( since the unix epoch) to the eventorigin_server_ts
(Timestamp in milliseconds since the unix epoch on originating homeserver when this event was sent.)Some downside on this approach is that if the device local time or server local time is wrong it could messed up things.
Another approach could be to use the API end-point used to get the messages?
It's anyhow hard to see if something is really device relative history, as the process of sending is inherently racy.
There might be some events that are shown were they shouldn't (sent around the same time the device is logged in but before propagated to anyone)
Proposal
If an UTD has not be displayed on screen, it should not be reported to analytics.
Tasks
Tasks
Known possible issues
The text was updated successfully, but these errors were encountered: