Skip to content

Conversation

@ganfra
Copy link
Member

@ganfra ganfra commented Jan 8, 2026

Content

This PR allows to change the room access of a room/space to SpaceMembers, aka Restricted.
It also supports the knockRestricted feature.

Motivation and context

Closes #5650

Screenshots / GIFs

See recorded screenshots.

Tests

  • Create a room and add it to 2 spaces using EW
  • Makes sure you have space settings and ask to join enabled in dev settings
  • Open Securty&Privacy screen on EXA
  • Check you have all the room access options defined
  • Play with the options.

Tested devices

  • Physical
  • Emulator
  • OS version(s):

Checklist

  • Changes have been tested on an Android device or Android emulator with API 24
  • UI change has been tested on both light and dark themes
  • Accessibility has been taken into account. See https://github.com/element-hq/element-x-android/blob/develop/CONTRIBUTING.md#accessibility
  • Pull request is based on the develop branch
  • Pull request title will be used in the release note, it clearly define what will change for the user
  • Pull request includes screenshots or videos if containing UI changes
  • You've made a self review of your PR

@ganfra ganfra added Record-Screenshots Runs the 'Record Screenshots' CI job and adds a commit with any new screenshots found. PR-Feature For a new feature labels Jan 8, 2026
@github-actions github-actions bot removed the Record-Screenshots Runs the 'Record Screenshots' CI job and adds a commit with any new screenshots found. label Jan 8, 2026
@ElementBot
Copy link
Collaborator

ElementBot commented Jan 8, 2026

Warnings
⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L7 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L35 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L242 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L246 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L277 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L292 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L304 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L333 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-fr/translations.xml#L441 - For locale "fr" (French) the following quantity should also be defined: many (e.g. "1000000 de jours")

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L7 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L35 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L241 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L245 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L276 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L291 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L303 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L332 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-pt-rBR/translations.xml#L440 - For locale "pt" (Portuguese) the following quantity should also be defined: many

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L7 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L36 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L242 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L247 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L278 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L294 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L307 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L336 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

⚠️

libraries/ui-strings/src/main/res/values-sk/translations.xml#L445 - For locale "sk" (Slovak) the following quantity should also be defined: many (e.g. "10.0 dňa")

Generated by 🚫 dangerJS against 9a30e4d

@github-actions
Copy link
Contributor

github-actions bot commented Jan 8, 2026

📱 Scan the QR code below to install the build (arm64 only) for this PR.
QR code
If you can't scan the QR code you can install the build via this link: https://i.diawi.com/yMxuxJ

@ganfra ganfra added the Record-Screenshots Runs the 'Record Screenshots' CI job and adds a commit with any new screenshots found. label Jan 8, 2026
@github-actions github-actions bot removed the Record-Screenshots Runs the 'Record Screenshots' CI job and adds a commit with any new screenshots found. label Jan 8, 2026
@ganfra ganfra marked this pull request as ready for review January 8, 2026 16:42
@ganfra ganfra requested a review from a team as a code owner January 8, 2026 16:42
@ganfra ganfra removed the request for review from a team January 8, 2026 16:42
@ganfra ganfra requested a review from bmarty January 8, 2026 16:42
@codecov
Copy link

codecov bot commented Jan 8, 2026

Codecov Report

❌ Patch coverage is 83.14286% with 59 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.41%. Comparing base (9878e8b) to head (9a30e4d).
⚠️ Report is 7 commits behind head on develop.

Files with missing lines Patch % Lines
...ndprivacy/impl/root/SecurityAndPrivacyPresenter.kt 78.04% 8 Missing and 10 partials ⚠️
...nageauthorizedspaces/ManageAuthorizedSpacesView.kt 78.08% 9 Missing and 7 partials ⚠️
...d/libraries/matrix/impl/spaces/RustSpaceService.kt 0.00% 13 Missing ⚠️
...ityandprivacy/impl/root/SecurityAndPrivacyState.kt 78.43% 5 Missing and 6 partials ⚠️
...rityandprivacy/impl/root/SecurityAndPrivacyView.kt 96.77% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #5979      +/-   ##
===========================================
+ Coverage    81.34%   81.41%   +0.06%     
===========================================
  Files         2545     2551       +6     
  Lines        67792    68119     +327     
  Branches      8683     8740      +57     
===========================================
+ Hits         55146    55458     +312     
+ Misses        9426     9417       -9     
- Partials      3220     3244      +24     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ganfra ganfra removed the request for review from bmarty January 8, 2026 22:45
Move authorized space selection state to a shared StateHolder scoped
to RoomScope. This simplifies communication between SecurityAndPrivacy
and ManageAuthorizedSpaces nodes by replacing the complex coroutine-based
parent-child coordination with a reactive state flow pattern.
@ganfra ganfra requested a review from bmarty January 9, 2026 11:01
@sonarqubecloud
Copy link

sonarqubecloud bot commented Jan 9, 2026

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

Labels

PR-Feature For a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Task] Update the Security & Privacy screen to work with Spaces.

3 participants