Skip to content

🛡️ Android: Classified conversations #6414

Description

@nickvergessen

Classified conversations

Backend support for "classified" conversations is implemented server-side. The web frontend and mobile clients need to hide/adapt settings and options. A conversation is classified when TalkRoom.attributes & 4 (the CLASSIFIED bit) is set. Gate all of this behind the classified-conversations capability.

Detection

  • Detect classified conversations via TalkRoom.attributes & 4 (CLASSIFIED bit); only apply this behavior when the classified-conversations capability is present.

Hide / disable settings & actions in classified conversations

  • Hide "Message forwarding" action (forward-to-conversation / forward-to-note-to-self) on all messages. (frontend-only, no backend block)
  • Hide "Reply privately" action on messages. (backend returns 403, but hide the action)
  • Render image/file messages as blurhash placeholder only; do not auto-load the inline preview — clicking still opens the preview/viewer. (frontend-only)
  • Hide/lock the "Sensitive conversation" toggle and show it as permanently on (backend rejects un-marking with 400). (forced sensitive for everyone)
  • Hide SIP dial-in/out settings (backend rejects enabling with 400).
  • Hide "Allow guests" / make-conversation-public / share-link options (backend blocks public type).
  • Hide federation and email options
  • Hide breakout rooms feature
  • Hide "Open conversation" (listable/joinable) settings (backend rejects with 400).
  • Hide the call-recording start button / recording-consent option (backend rejects with 400).
  • Hide the "Start live transcription" action (backend rejects with 400 classified).
  • Hide the live-translation / target-language picker (backend rejects with 400 classified).
  • Hide the "Download participants list" action (backend returns 403).
  • Hide the "Summarize chat" / unread-summary action (backend rejects with 400 classified).
  • Hide Bots and Matterbridge settings (backend rejects with 400 classified).
  • Add a "🛡️ Classified conversation" (Shield icon + text) red button in the top bar similar to the "Meeting 16. July" meeting hint. *In the planning meeting it was said it's okay if this button is also blink-fading similar to the recording icon to create awareness.

Auto-delete-after-call ("keep" action)

  • Add OBJECT_TYPE_CLASSIFIED ('classified') to the hasRetentionPeriod() check so the "Keep conversation" shortcut shows on the call_ended system message in classified conversations.
  • Wire that shortcut to the existing DELETE /room/{token}/object (unbind) call — it flips the room to classified_persist and stops auto-deletion permanently.
  • Treat objectType === 'classified' as "pending auto-deletion" and 'classified_persist' as "kept" for any retention/expiry UI hints (optional: surface the config.conversations.retention-classified seconds value).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    1. to developAccepted and waiting to be taken care of (should be only set by nextcloud employees)enhancementNew feature or requestfeature: conversations 📄

    Projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions