element-hq / element-meta

Shared/meta documentation and project artefacts for Element clients
68 stars 11 forks source link

[Story] Setting: Disable sending typing notifications and read receipts #2203

Closed VolkerJunginger closed 6 months ago

VolkerJunginger commented 9 months ago

Story

As a user of the EX client I do not want to expose to other user that I am active in the app and therefor be able to not send read receipts or typing notifications.

Add a setting to disable user-presence:

If the user enabled the setting do the following in the timeline:

Dependencies

Sign-offs

Android

iOS

Web

Scope

### Android
- [ ] https://github.com/element-hq/element-x-android/issues/2241
### iOS
- [ ] https://github.com/element-hq/element-x-ios/issues/2348

Out of scope

manuroe commented 9 months ago

@VolkerJunginger: the app does not support typing notification at all. It is weird to add a settings about them.

jmartinesp commented 9 months ago

@manuroe @VolkerJunginger : there is some code for sending typing notification in the Rust SDK, it's not exposed to the apps though. Should we create the bindings, send the typing notifications and add this option to disable them?

VolkerJunginger commented 9 months ago

yes, please.

jmartinesp commented 9 months ago

We'll also need some designs for displaying the typing notifications on the timeline. I guess we'll use more or less the same designs and animations that we had in the legacy apps, but it would still be good to confirm this.

bmarty commented 7 months ago

FTR this is the current design for this setting in Element Android, in Settings/Preferences section Message editor:

image
amshakal commented 6 months ago

Here is a suggestion for what copy can be

Screenshot 2024-02-01 at 12 37 37 pm
bmarty commented 6 months ago

@amshakal the wording looks good, but I would replace all the or by and. Note that I am not a native English speaker, so you may just ignore me :)

Also, just to confirm, the toggle will be enabled by default.

bmarty commented 6 months ago

Regarding the implementation, we will keep separate booleans internally, like:

To complete this, these settings will be lost when the user logs out, so they are stored in a store scoped to the session. This store is named SessionPreferencesStore on Android.