Skip to content

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

Merged
mahibi merged 5 commits into
nextcloud:masterfrom
thirumani-vihaan:feature/classified-conversations
Aug 4, 2026
Merged

Enhancement: Implement support for Classified Conversations (Fixes #6414)#6424
mahibi merged 5 commits into
nextcloud:masterfrom
thirumani-vihaan:feature/classified-conversations

Conversation

@thirumani-vihaan

@thirumani-vihaan thirumani-vihaan commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

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

@thirumani-vihaan
thirumani-vihaan force-pushed the feature/classified-conversations branch 2 times, most recently 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

@nickvergessen

Copy link
Copy Markdown
Member

The API was merged, so this can now be properly tested

@mahibi

mahibi commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

review is planned for tuesday/wednesday

thirumani-vihaan and others added 5 commits August 4, 2026 16:58
Signed-off-by: thirumani-vihaan <arjunthirumani02@gmail.com>
Signed-off-by: thirumani-vihaan <arjunthirumani02@gmail.com>
this is not the live translation that should be disabled

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
rely on actual call system messages in the chatlist instead of lastMessage in conversation (which was errorprone)

Assisted-by: Claude Code 2.1.199:claude-sonnet-5

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
the blinking was too much..

Also extract the string to strings.xml and separate the icon from it

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
@mahibi
mahibi force-pushed the feature/classified-conversations branch from 4f20f42 to 6de39a4 Compare August 4, 2026 14:58
@mahibi

mahibi commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Thank you for contributing @thirumani-vihaan 👍
I added some commits on top that will fix and change some things, hope thats ok for you in this branch.
With these changes it should be fine to merge soon.

@mahibi mahibi added the enhancement New feature or request label Aug 4, 2026
@mahibi mahibi added this to the 25.0.0 milestone Aug 4, 2026
@mahibi
mahibi merged commit b4395a6 into nextcloud:master Aug 4, 2026
12 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🛡️ Android: Classified conversations

3 participants