mattermost-mobile-upstream/app/utils
Harshil Sharma 4e2a508774
Some checks are pending
ci / lint-typecheck (push) Waiting to run
ci / detox-lint-typecheck (push) Waiting to run
ci / test (push) Waiting to run
Access channel action (#10223)
* MM-68219 - Add redacted files placeholder and related functionality

* add feature flag control and e2e tests

* adjust placeholder design, polish code, fix permalink preview issue

* polish code and add missing test

* use import path with right path

* gate post refetch behind the feature flag, refetch the open thread and avoid observeCount

* restore filesInfo for the permalink files prop added upstream

* fix stale redaction on background servers, consume the flag on every fetch path and share the viewport emitter

* replace the in-memory redaction flag with a persisted per-post epoch so ABAC file decisions survive restarts and stale posts stay hidden

* raise the redaction epoch on every resync, capture the epoch counter, only invalidate channels on role changes, and store the newer epoch when a re-verified post is otherwise unchanged

* store superseded responses unverified instead of dropping them, keep the since-fetch when re-verifying, verify permalink embeds against the linked channel, and capture the websocket epoch on arrival

* nvalidate file decisions when a user attribute field changes or all its values are cleared

* batch channel invalidations, close file viewers only when affected, reset the epoch on unstamped redaction changes, and only  re-verify the newest page's attachment posts

* re-check older channel posts a page at a time instead of one request per post

* skip the unstamped epoch lookup for posts with no files, redacted count or permalink

* MM-70905 - disable and grey out the attachment button when an ABAC permission policy denies uploads in the channel

* First draft of updated read permission handling

* keep the attribute-view retry after later invalidations, retry linked posts unless refused for the current epoch, and stop older payloads from rolling back edits via the redaction check

* improved Data fetches

* fixes

* Fixed test

* Fixed archived channel issue

* Removed re-sync on team switch

* Define message enhancement

* Coderabbit fixes

* React to permission_policy_updated only for the actions it touched

The server now lists the rule actions a permission policy change touched.
Every connected client gets this event, so each step runs only when an
action it depends on changed:

- download_file_attachment raises the redaction epoch, which also
  revalidates the render decisions
- any other cached render-decision action only expires the decisions
- channel_read_access reconciles the channel list

An empty list (an auto-add toggle) does nothing, and a server that
predates the list is treated as having changed every action.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FvkCrND4n9oyehQUa9V5QH

* Handled empty channel list

* Fixed channel access races and tablet kick fallback

Read stored channel IDs before the team channel list request so channels joined or left mid-request are not wrongly purged or restored, and set the fallback channel instead of the kicked one as current on a tablet when the server is not active.

* Minor fix

* Moved pending channel access checks to EphemeralStore

* Moved channel access revoked sheet helpers to navigation utils

* Gated channel access enforcement on the ChannelPermissionActions feature flag

* Reported a channel lost to read access on reconnect as revoked access

* Addressed review comments on channel read access

Jittered the channel list reconcile after a permission policy update, logged
non-request failures in channel access checks as errors, and set the channel
read access version to 12.2.0.

* Implemented write actions (#10224)

* Implemented write actions

* Lint fix

* Test that write and management policy changes only revalidate decisions

A permission_policy_updated event naming channel_write_access or
channel_management_access expires the cached render decisions those gates
read, without raising the redaction epoch or reconciling the channel list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FvkCrND4n9oyehQUa9V5QH

* Shared the channel access enforcement check

* Addressed review comments on channel write access

Hid pinning and the acknowledge button while a write access policy denies
the channel, as the server refuses both, and moved the read-only notice to
app/components since two screens share it.

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Expect no Manage button on archived channel members

The members screen now renders the Manage header button only when the
user can manage and remove members, which is never the case for an
archived channel. MM-T1719_1 still expected the button to render and
failed on detox-ios and detox-android with "Got: was null". Assert that
neither the Manage button nor the remove controls exist instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Fj5x2Znwhwx94X9g76Hny

---------

Co-authored-by: Pablo Andrés Vélez Vidal <pablovv2012@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-11-05 17:56:33 +05:30
..
alerts On iOS, resuming after the 5-minute window showed no biometric prompt — (#10102) 2026-09-02 15:03:13 +08:00
channel [MM-69735] Improve DM call user experience (#10017) 2026-09-03 19:44:10 +00:00
deep_link [MM-66560] Fix channel links ending in channel IDs (#10158) 2026-09-15 11:28:03 -04:00
document Secure Files and preview PDF inline (#8844) 2025-06-19 15:30:56 +08:00
draft Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
emoji Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
file Mm 68219 show placeholder for redacted files (#9719) 2026-10-15 15:59:13 -07:00
gallery Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
general Channel banner display (#8735) 2025-04-08 11:15:18 +05:30
images Fix gallery image dimensions (#9247) 2025-11-10 19:18:27 +08:00
markdown Improve markdown code (#9164) 2025-11-04 10:05:56 +01:00
navigation Access channel action (#10223) 2026-11-05 17:56:33 +05:30
notification Access channel action (#10223) 2026-11-05 17:56:33 +05:30
performance Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
permalink Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
post Mm 68219 show placeholder for redacted files (#9719) 2026-10-15 15:59:13 -07:00
post_list Mm 68219 show placeholder for redacted files (#9719) 2026-10-15 15:59:13 -07:00
role Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
scheduled_post Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
search Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
security On iOS, resuming after the 5-minute window showed no biometric prompt — (#10102) 2026-09-02 15:03:13 +08:00
server [MM-70605][MM-70607] Scope pre-auth secret storage per server (#10149) 2026-10-23 12:02:41 +02:00
snack_bar Mm 68293 ephemeral mode warnings (#10140) 2026-10-01 18:13:22 +02:00
svg
tap Remove tand prevent double tap (#9078) 2025-08-25 12:03:01 +02:00
theme Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
thread Better handle threads sync (#8641) 2025-03-19 09:23:22 +01:00
url MM-70606: Fix Edit Server pre-auth secret save on HTTPS-redirecting servers (#10252) 2026-10-30 12:54:39 +01:00
user [MM-71167] Disable admin-managed profile attributes (#10244) 2026-11-02 10:12:02 -05:00
apps.test.ts Add collapsible sections to mobile (#10189) 2026-10-23 09:11:52 -07:00
apps.ts Add collapsible sections to mobile (#10189) 2026-10-23 09:11:52 -07:00
bor.test.ts Ensured BoR post actions matches those in webapp (#9362) 2026-02-04 12:18:35 +05:30
bor.ts Ensured BoR post actions matches those in webapp (#9362) 2026-02-04 12:18:35 +05:30
buttonStyles.test.ts Add Report a Problem functionality (#8605) 2025-04-24 11:12:55 +02:00
buttonStyles.ts Standardize tags and chips through the app (#8856) 2025-06-11 10:11:05 +02:00
categories.test.ts Add model mocks to TestHelper (#8715) 2025-03-28 09:40:08 +01:00
categories.ts Add unit tests to Utils buttonStyles and categories (#8015) 2024-06-14 17:11:36 +08:00
channel_attributes.test.ts Mm 70564 channel labels use in channel creation (#10146) 2026-10-30 15:03:55 +01:00
channel_attributes.ts Mm 70564 channel labels use in channel creation (#10146) 2026-10-30 15:03:55 +01:00
channel_bookmark.test.ts Limit bookmark names to the server's 64 characters (#10211) 2026-10-04 10:23:59 +05:30
channel_bookmark.ts Limit bookmark names to the server's 64 characters (#10211) 2026-10-04 10:23:59 +05:30
channel_policy.test.ts Access channel action (#10223) 2026-11-05 17:56:33 +05:30
channel_policy.ts Access channel action (#10223) 2026-11-05 17:56:33 +05:30
classification.test.ts Mm 70299 channel labels display phase 1 (#10113) 2026-09-17 21:37:43 +02:00
classification.ts Mm 70299 channel labels display phase 1 (#10113) 2026-09-17 21:37:43 +02:00
config.test.ts Mm 68767 zero persistence (#9803) 2026-07-16 13:55:45 +02:00
config.ts Mm 68293 ephemeral mode warnings (#10140) 2026-10-01 18:13:22 +02:00
custom_profile_attribute.ts [MM-62565] DB only custom profile attributes and fields (#8739) 2025-04-09 15:35:27 +02:00
database_errors.test.ts [MM-68315] Add autorecovery for database corruptions (#9900) 2026-07-13 18:02:35 +02:00
database_errors.ts [MM-68315] Add autorecovery for database corruptions (#9900) 2026-07-13 18:02:35 +02:00
date_utils.test.ts Add date/datetime field support with timezone features for Apps Forms (#9521) 2026-07-16 08:09:47 -06:00
date_utils.ts Add date/datetime field support with timezone features for Apps Forms (#9521) 2026-07-16 08:09:47 -06:00
datetime.test.ts FIX: Correct Android minute interval and UTC+offset date display in datetime fields (#10202) 2026-10-22 15:12:27 -05:00
datetime.ts FIX: Correct Android minute interval and UTC+offset date display in datetime fields (#10202) 2026-10-22 15:12:27 -05:00
dialog_conversion.test.ts Add collapsible sections to mobile (#10189) 2026-10-23 09:11:52 -07:00
dialog_conversion.ts Add collapsible sections to mobile (#10189) 2026-10-23 09:11:52 -07:00
dialog_utils.test.ts Add collapsible sections to mobile (#10189) 2026-10-23 09:11:52 -07:00
dialog_utils.ts Add collapsible sections to mobile (#10189) 2026-10-23 09:11:52 -07:00
error_handling.test.ts On iOS, resuming after the 5-minute window showed no biometric prompt — (#10102) 2026-09-02 15:03:13 +08:00
error_handling.ts Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
errors.test.ts [MM-62777] Fix errors being nested. Make MFA code more resilient to this situation (#8531) 2025-01-31 08:31:15 +02:00
errors.ts [MM-70605][MM-70607] Scope pre-auth secret storage per server (#10149) 2026-10-23 12:02:41 +02:00
files.test.ts Secure Files and preview PDF inline (#8844) 2025-06-19 15:30:56 +08:00
files.tsx feat(iOS): Add Microsoft Intune MAM integration with multi-server support (#9312) 2025-12-10 13:07:28 +02:00
grapheme.test.ts New keyboard library Setup (#9278) 2026-01-13 22:38:35 +05:30
grapheme.ts New keyboard library Setup (#9278) 2026-01-13 22:38:35 +05:30
groups.test.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00
groups.ts
headers.test.ts Fix case-insensitive pre-auth header check in doPing (#9577) 2026-03-17 12:07:07 +01:00
headers.ts [MM-70605][MM-70607] Scope pre-auth secret storage per server (#10149) 2026-10-23 12:02:41 +02:00
helpers.test.ts Classification Markings: Cached request timer and PSv2 Implementation (#9926) 2026-08-13 15:24:07 +03:00
helpers.ts Classification Markings: Cached request timer and PSv2 Implementation (#9926) 2026-08-13 15:24:07 +03:00
integrations.test.ts MM-69122: Add file element support to interactive dialogs (#9898) 2026-10-07 14:43:26 -05:00
integrations.ts MM-69122: Add file element support to interactive dialogs (#9898) 2026-10-07 14:43:26 -05:00
interactive_dialog_adapter.test.ts Add collapsible sections to mobile (#10189) 2026-10-23 09:11:52 -07:00
interactive_dialog_adapter.ts Add collapsible sections to mobile (#10189) 2026-10-23 09:11:52 -07:00
intune_errors.test.ts add support on iOS for Intune Conditional Access (#9660) 2026-04-09 17:46:52 +03:00
intune_errors.ts add support on iOS for Intune Conditional Access (#9660) 2026-04-09 17:46:52 +03:00
key_mirror.test.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00
key_mirror.ts
keyboard.test.ts Mm 67525 bump min version (#9640) 2026-09-16 10:53:06 +00:00
keyboard.ts Mm 67525 bump min version (#9640) 2026-09-16 10:53:06 +00:00
log.test.ts Add Report a Problem functionality (#8605) 2025-04-24 11:12:55 +02:00
log.ts Update dependencies (#8721) 2025-04-07 09:30:06 +08:00
mattermost_managed.test.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00
mattermost_managed.ts Upgrade RN as well as update or replace other dependencies (#8011) 2024-06-19 09:33:45 +08:00
message_attachment.test.ts Make attachments and app bindings more robust yet secure (#8570) 2025-03-14 12:02:32 +01:00
message_attachment.ts Make attachments and app bindings more robust yet secure (#8570) 2025-03-14 12:02:32 +01:00
mix.test.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00
mix.ts Remove watermelondb limitation on updating an already updated model (#7067) 2023-02-03 17:11:57 +02:00
opengraph.test.ts fix: Product fixes to run e2e tests (#10081) 2026-08-26 16:12:37 +05:30
opengraph.ts fix: Product fixes to run e2e tests (#10081) 2026-08-26 16:12:37 +05:30
permalink_sync.test.ts Ability to show attachment if the permalink post contains attachments. (#9101) 2025-09-12 13:44:54 +05:30
permalink_sync.ts Ability to show attachment if the permalink post contains attachments. (#9101) 2025-09-12 13:44:54 +05:30
phone_number.test.ts MM-70688 Autolink phone numbers in posts as tel: links (#10143) 2026-09-14 14:32:17 -04:00
phone_number.ts MM-70688 Autolink phone numbers in posts as tel: links (#10143) 2026-09-14 14:32:17 -04:00
push_proxy.test.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00
push_proxy.ts capitalize back the alert text 2023-10-18 21:06:12 +02:00
remote_cluster_connection.test.ts [MM-67923] Add channel settings for shared channels (#9591) 2026-04-14 11:43:44 +02:00
remote_cluster_connection.ts [MM-67923] Add channel settings for shared channels (#9591) 2026-04-14 11:43:44 +02:00
render_permissions.test.ts MM-70693: Hide burn-on-read quick action when ABAC policy denies it (#10239) 2026-10-16 15:13:04 -07:00
render_permissions.ts MM-70693: Hide burn-on-read quick action when ABAC policy denies it (#10239) 2026-10-16 15:13:04 -07:00
reviews.test.ts Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
reviews.ts Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
saml_challenge.ts Mobile-side for MM-65084 (#9115) 2025-09-29 14:29:37 -07:00
sentry.test.ts Fix Regressions (#9808) 2026-06-04 06:54:40 +08:00
sentry.ts Fix Regressions (#9808) 2026-06-04 06:54:40 +08:00
share_logs.test.ts Report a problem not redirect to default email application (#9703) 2026-05-14 09:10:39 -04:00
share_logs.ts Report a problem not redirect to default email application (#9703) 2026-05-14 09:10:39 -04:00
strings.test.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00
strings.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00
subscription.test.ts Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
subscription.ts Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
team_menu.test.ts Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
team_menu.ts Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
time.test.ts [MM-71006] Update timezone data to 2026d (#10201) 2026-10-05 19:10:40 +08:00
time.ts Feature schedule posts (#8509) 2025-04-14 22:08:59 +05:30
timezone.test.ts FIX: Correct Android minute interval and UTC+offset date display in datetime fields (#10202) 2026-10-22 15:12:27 -05:00
timezone.ts FIX: Correct Android minute interval and UTC+offset date display in datetime fields (#10202) 2026-10-22 15:12:27 -05:00
types.ts Add model mocks to TestHelper (#8715) 2025-03-28 09:40:08 +01:00
typography.test.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00
typography.ts added utils unit tests (#8040) 2024-07-05 07:17:09 +08:00