You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We categorise UTDs (unable to decrypt messages) in both Element Web + matrix-js-sdk and Element X + matrix-rust-sdk. In both cases, this categorisation has 2 uses: showing a message to the user, and reporting stats to PostHog.
We should use the same categories and handle them the same on both platforms. This task is to figure out:
one correct list of enum values that cover all the cases we need,
one mapping of those enum values to user messages displayed on a timeline item, and
one mapping of those enum values to PostHog keys to report UTDs
and then to implement those things in PostHog, matrix-js-sdk, matrix-rust-sdk, Element Web, Element X iOS and Element X Android.
As far as possible given the platform constraints, the enum values, localisation keys and posthog keys should be identical on all platforms.
In addition, we should check that what we're doing makes sense, especially when a UTD is UNexpected, but we still understand it. Currently, we seem to be grouping all unexpected UTDs into one category, when it could definitely help us (and maybe the user too) to expose the information we have. For example, a UTD because a message is historical, but our backup is working, so the key should have been found there, is very different from a UTD from a recent message.
We categorise UTDs (unable to decrypt messages) in both Element Web + matrix-js-sdk and Element X + matrix-rust-sdk. In both cases, this categorisation has 2 uses: showing a message to the user, and reporting stats to PostHog.
We should use the same categories and handle them the same on both platforms. This task is to figure out:
and then to implement those things in PostHog, matrix-js-sdk, matrix-rust-sdk, Element Web, Element X iOS and Element X Android.
As far as possible given the platform constraints, the enum values, localisation keys and posthog keys should be identical on all platforms.
In addition, we should check that what we're doing makes sense, especially when a UTD is UNexpected, but we still understand it. Currently, we seem to be grouping all unexpected UTDs into one category, when it could definitely help us (and maybe the user too) to expose the information we have. For example, a UTD because a message is historical, but our backup is working, so the key should have been found there, is very different from a UTD from a recent message.
Current state: Element Web
The main enum is
DecryptionFailureCode
:(Plus these deprecated values, only used in legacy crypto:
MEGOLM_BAD_ROOM
,MEGOLM_MISSING_FIELDS
,OLM_DECRYPT_GROUP_MESSAGE_ERROR
,OLM_BAD_ENCRYPTED_MESSAGE
,OLM_BAD_RECIPIENT
,OLM_BAD_RECIPIENT_KEY
,OLM_BAD_ROOM
,OLM_BAD_SENDER_CHECK_FAILED
,OLM_BAD_SENDER
,OLM_FORWARDED_MESSAGE
,OLM_MISSING_CIPHERTEXT
,OLM_NOT_INCLUDED_IN_RECIPIENTS
,UNKNOWN_ENCRYPTION_ALGORITHM
.)We interpret these for the user in
DecryptionFailureBody.getErrorMessage
:We report them to PostHog in
DecryptionFailureTracker
's global instance:Current state: Element X
The main enum is
UtdCause
:On iOS we interpret these for the user in
RoomTimelineItemFactory
:On iOS we report them to PostHog in
UserSessionFlowCoordinator.setupObservers
:On Android we interpret these for the user in
TimelineItemEncryptedView
:On iOS we report them to PostHog in
UtdTracker
:The text was updated successfully, but these errors were encountered: