Skip to content

Enhancement: Implement support for Classified Conversations (Fixes #6414) - #6424

Open
thirumani-vihaan wants to merge 2 commits into
nextcloud:masterfrom
thirumani-vihaan:feature/classified-conversations
Open

Enhancement: Implement support for Classified Conversations (Fixes #6414)#6424
thirumani-vihaan wants to merge 2 commits into
nextcloud:masterfrom
thirumani-vihaan:feature/classified-conversations

Conversation

@thirumani-vihaan

Copy link
Copy Markdown

Resolves #6414

This PR implements client-side support for "Classified Conversations", matching the behavior implemented in the Nextcloud backend and web frontend. Classified conversations are highly restricted rooms where data-leaking features are strictly prohibited.

📝 Key Changes:

  • Detection & Core Logic: Added SpreedFeatures.CLASSIFIED_CONVERSATIONS capability check and bitwise masking (TalkRoom.attributes & 4) through a unified ConversationUtils.isClassified(...) method.
  • Message Restrictions: Hidden "Forward", "Forward to note to self", "Reply privately", and "Translate" actions in the MessageActionsBottomSheet.
  • Media Protection: Forced image loadedImage to null for classified messages in Jetpack Compose to naturally trigger the server-provided Blurhash fallback, preventing full image downloads.
  • Conversation Settings Restricted: Locked "Sensitive conversation" to true. Hidden SIP dial-in/out, guests allowed, webinar settings, share link, and recording consent toggles.
  • Call Recording Disabled: Bypassed the moderator check in CallActivity to completely disable the call recording button in classified rooms.
  • Retention & Data Modeling: Added CLASSIFIED to ConversationEnums.ObjectType and hooked up retentionOfClassifiedRoom to properly display the auto-deletion warning banner.
  • UI Banner: Added a blinking, Material Theme compliant 🛡️ Classified conversation banner to the ChatToolbar.

🖼️ Screenshots

🏚️ Before 🏡 After
(Upload a screenshot of a standard conversation here) (Upload a screenshot showing the blinking 🛡️ Classified conversation banner and disabled settings here)

🚧 TODO

  • Plumb isClassified through UI state
  • Restrict message actions
  • Implement Blurhash rendering
  • Restrict Call Recording and Conversation Settings

🏁 Checklist

  • ⛑️ Tests (unit and/or integration) are included or not needed
  • 🔖 Capability is checked or not needed
  • 🔙 Backport requests are created or not needed: /backport to stable-xx.x
  • 📅 Milestone is set
  • 🌸 PR title is meaningful (if it should be in the changelog: is it meaningful to users?)

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI

Signed-off-by: thirumani-vihaan <arjunthirumani02@gmail.com>
Signed-off-by: thirumani-vihaan <arjunthirumani02@gmail.com>
@thirumani-vihaan
thirumani-vihaan force-pushed the feature/classified-conversations branch from b73037c to 775bfa0 Compare July 27, 2026 19:12
@mahibi

mahibi commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Hi @thirumani-vihaan thank you for contributing 👍 . We will review soon

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🛡️ Android: Classified conversations

2 participants