mattermost-mobile-upstream/app/components
Guillermo Vayá cdc2bf7c97 fix: address review of the viewability driven read
Five separate problems, all in how the separator report was produced and
interpreted.

VirtualizedList copies onViewableItemsChanged in its constructor and calls that
reference forever, so recreating the callback when the channel or the boundary
changed did nothing. The captured closure kept the first render's channelId and
initialIndex, which silently broke reporting for every later boundary and could
attribute a report to the previous channel. The callback is stable now and reads
current values from a ref. The earlier test could not see any of this because it
called the latest prop rather than the reference the list holds; it now captures
the callback once and reuses it, and it requires the separator index to actually
move so a stale index fails.

Deciding what a report means has moved to the screen, which is the only place
that knows about app state and navigation:

- Resume no longer counts as having read the channel. If the user had already
  reached the current boundary we view it again to register the channel as
  active, otherwise we re-arm and wait for the separator to be reported again.
- The report is ignored unless the channel screen is actually visible. It stays
  mounted underneath threads and modals and viewability is layout based, so a
  covered separator could clear unreads for a channel nobody was looking at.
- The boundary is recorded only once the server has accepted the read, so a
  failed request can be retried while the separator is still on screen.

The immediate view for channels with nothing unread now keys off isUnread rather
than the message count, because resetMessageCount zeroes that count locally when
the more messages button is dismissed or while it auto scrolls, which says
nothing about the channel having been read.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 20:00:49 +02:00
..
animated_number Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
announcement_banner Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
app_version Enable exhaustive deps in the repo (#9508) 2026-02-18 11:56:16 +01:00
autocomplete Revert "e2e(detox): Rainforest to Detox migration (#9790)" (#9834) 2026-06-15 17:57:01 +02:00
autocomplete_selector Mattermost Blocks (#9764) 2026-06-29 18:42:16 +02:00
badge feat:proper badge theme use for server list (#8313) 2024-11-05 07:11:17 -07:00
block_renderer [MM-70023] Consider attachment fields with no title for block translation (#9981) 2026-07-30 17:51:32 +02:00
burn_on_read_label Revert "e2e(detox): Rainforest to Detox migration (#9790)" (#9834) 2026-06-15 17:57:01 +02:00
button Mattermost Blocks (#9764) 2026-06-29 18:42:16 +02:00
channel_actions Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
channel_banner MM-68208 Implementing global and channel-level banners on mobile (#9752) 2026-07-08 12:47:01 +03:00
channel_bookmarks fix(e2e): Quarantine proven flakes and harden Detox harness (#9971) 2026-07-30 02:40:23 +05:30
channel_icon Enable exhaustive deps in the repo (#9508) 2026-02-18 11:56:16 +01:00
channel_item Revert "e2e(detox): Rainforest to Detox migration (#9790)" (#9834) 2026-06-15 17:57:01 +02:00
channel_list_row Mattermost Blocks (#9764) 2026-06-29 18:42:16 +02:00
chips Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
common_post_options fix(e2e): Quarantine proven flakes and harden Detox harness (#9971) 2026-07-30 02:40:23 +05:30
compass_icon Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
connection_banner Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
copy_text_option Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
custom_status Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
date_time_selector Add date/datetime field support with timezone features for Apps Forms (#9521) 2026-07-16 08:09:47 -06:00
document use alertOnlyPDFSupported for document files (#9023) 2025-07-27 18:05:49 +08:00
draft_scheduled_post Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
draft_scheduled_post_header feat(iOS): Add Microsoft Intune MAM integration with multi-server support (#9312) 2025-12-10 13:07:28 +02:00
drafts_buttton Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
edited_indicator Fix the Edited post incorrect line spacing on Android (#9170) 2025-10-01 21:26:57 +08:00
emoji feat(iOS): Add Microsoft Intune MAM integration with multi-server support (#9312) 2025-12-10 13:07:28 +02:00
emoji_category_bar Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
error_text Update dependencies and upgrade to RN 0.76.5 (#8421) 2025-01-16 07:11:32 -07:00
expo_image Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
external_image Fix link to image proxy and correct padding in image sizing on blocks (#9976) 2026-07-30 13:41:26 +02:00
files test(detox): re-submit RF→Detox migration without unintended UI changes (#9847) 2026-06-19 22:44:02 +05:30
files_search Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
floating_input Fix/detox recovery hardening cluster (#10022) 2026-08-10 21:33:53 +00:00
formatted_date Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
formatted_markdown_text Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
formatted_relative_time Agents "RHS" view (#9318) 2026-03-16 09:48:32 -07:00
formatted_text Standardize tabs across different components (#8691) 2025-05-28 16:23:37 +02:00
formatted_time Feature schedule posts (#8509) 2025-04-14 22:08:59 +05:30
friendly_date Make relatives times coherent with web (#9062) 2025-08-12 14:28:25 +02:00
global_classification_banner Classification Markings: Cached request timer and PSv2 Implementation (#9926) 2026-08-13 15:24:07 +03:00
illustrations Update additional images branding (#8672) 2025-06-20 11:41:26 -04:00
jumbo_emoji Typescript support and view component for permalink with user and message (#9052) 2025-09-10 17:12:16 +05:30
loading Unify buttons (#8865) 2025-05-30 15:59:15 +02:00
loading_error Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
markdown [MM-69457] Stop logging PII in exportable app logs (#9884) 2026-07-02 12:19:04 +02:00
math_view Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
menu_divider Add Report a Problem functionality (#8605) 2025-04-24 11:12:55 +02:00
navigation_button Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
navigation_header MM-68208 Implementing global and channel-level banners on mobile (#9752) 2026-07-08 12:47:01 +03:00
navigation_header_title Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
no_results_with_term Remove tand prevent double tap (#9078) 2025-08-25 12:03:01 +02:00
option_box Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
option_item Revert "e2e(detox): Rainforest to Detox migration (#9790)" (#9834) 2026-06-15 17:57:01 +02:00
other_mentions_badge Enable exhaustive deps in the repo (#9508) 2026-02-18 11:56:16 +01:00
post_draft fix: hardware Enter key not sending messages in channel on iPad (#9965) 2026-07-24 19:16:08 +00:00
post_list fix: address review of the viewability driven read 2026-08-20 20:00:49 +02:00
post_priority Standardize tags and chips through the app (#8856) 2025-06-11 10:11:05 +02:00
post_with_channel_info fix: app bugs surfaced by Detox RF migration (#9789) 2026-06-09 13:25:42 +05:30
pressable_opacity test(detox): re-submit RF→Detox migration without unintended UI changes (#9847) 2026-06-19 22:44:02 +05:30
profile_picture Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
progress_bar Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
progressive_image feat(iOS): Add Microsoft Intune MAM integration with multi-server support (#9312) 2025-12-10 13:07:28 +02:00
remove_markdown MM-56577 Fixing font display issues on thread items (#9630) 2026-05-28 15:11:52 +03:00
rounded_header_context [Gekidou] Navigation bar refactored (#6319) 2022-06-01 17:07:54 -04:00
scheduled_post_indicator Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
search Mattermost Blocks (#9764) 2026-06-29 18:42:16 +02:00
section_notice Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
selected_users Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
server_icon Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
server_user_list Mattermost Blocks (#9764) 2026-06-29 18:42:16 +02:00
server_version Enable exhaustive deps in the repo (#9508) 2026-02-18 11:56:16 +01:00
settings Add date/datetime field support with timezone features for Apps Forms (#9521) 2026-07-16 08:09:47 -06:00
slide_up_panel_item Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
status_label Remove tand prevent double tap (#9078) 2025-08-25 12:03:01 +02:00
syntax_highlight Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
system_avatar [Gekidou] post list (#5893) 2022-01-17 07:06:26 -03:00
system_header feat: Add visible to you text on ephemeral posts (#8245) 2024-10-30 10:01:49 +01:00
tablet_title Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
tag Revert "e2e(detox): Rainforest to Detox migration (#9790)" (#9834) 2026-06-15 17:57:01 +02:00
team_list Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
team_sidebar Multiple Fixes (#9767) 2026-05-19 16:35:20 +08:00
threads_button Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
toast Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
touchable_emoji New keyboard library Setup (#9278) 2026-01-13 22:38:35 +05:30
touchable_with_feedback Upgrade Dependencies (#7299) 2023-04-21 12:16:54 -04:00
tutorial_highlight Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
upload_item_shared Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
user_avatars_stack Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
user_item feat(e2e): Integrate TSIO reporting (#9925) 2026-07-23 06:43:28 +00:00
user_list feat(e2e): Integrate TSIO reporting (#9925) 2026-07-23 06:43:28 +00:00
user_list_row Mattermost Blocks (#9764) 2026-06-29 18:42:16 +02:00
user_status Migrate from RNN to Expo router (#9402) 2026-05-13 17:44:55 +08:00
keyboard_aware_post_draft_container.tsx resumes slide animation after stopping due to modal system dialog showing (#9792) 2026-05-29 06:50:57 +08:00