mattermost-mobile/app/client/rest
Rahim Rahman 597e03d7d8
feat(MM-65145): Network connectivity/performance observer (#9173)
* feat: implement floating banner system

- Add FloatingBanner component with gesture support and keyboard awareness
- Implement BannerManager singleton for banner lifecycle management
- Create floating banner screen with SafeAreaProvider integration
- Add comprehensive banner configuration types and positioning
- Update Banner component to use modern gesture handling
- Enhance BannerItem with improved typography and spacing (40px height)
- Add ConnectionBanner improvements with better sizing
- Remove ConnectionBanner from channel list (moved to floating system)
- Update screens constants (remove FLOATING_BANNER - handled as overlay)
- Add i18n support for limited network connection message

The system provides:
- Auto-hide functionality with customizable duration
- Position-aware rendering (top/bottom with keyboard adjustment)
- Tablet-specific offset handling
- Swipe-to-dismiss with configurable thresholds
- Custom component support alongside default banner items
- Comprehensive test coverage with device-specific scenarios

* docs: add floating banner system documentation and cleanup

- Add comprehensive floating-banner.md with architecture diagrams
- Remove incompatible connection_banner/index.ts file
- Update device.ts hooks for better keyboard handling
- Simplify screens/index.tsx floating banner registration
- Update test/setup.ts to remove deprecated keyboard mocks
- Clean up keyboard height logic and ESLint issues

The documentation covers:
- System architecture and component relationships
- API reference and usage patterns
- Performance considerations and best practices
- Integration points and troubleshooting guide
- Comprehensive testing strategy

All tests now pass with the updated setup.

* fix issue with translation file

* some self cleanup.

* renamed index.tsx => Banner.tsx

* creaete meaningful tests for Banner component and all the hooks.

* fix tests

* cleanup based on initial review by AI

* dismissible was set to true, changing to what was configured.

* making title and message optional

* feat(MM-65145): Network connectivity/performance observer

* add MONITOR_NETWORK_PERFORMANCE

* i18n stuff

* remove unused props

* Undo some AI changes that caught by another AI

* network connectivity observation md

* addressed some comments in PR

* more fixes based on PR review.

* added future enhancement

* dismissOverlay will be awaited
* delay dismissing overlay so we don't have to show a new one all the time

* make the banner stackable

* Fix issue with last banner dismissal delayed by 2s

* update floating-banner test

* put back an extra space

* add a todo to use namespace
* add comment on priority order for connectivity performance
* use static const vs magic number

* add a guard against adding performanceSubject when server has been removed
* fix failing tests

* clean-up based on review by @enahum

* fix failing test

* fix failiing tests

* rename confusing var

* update changes to types

* fixed issue with swipe not working on android

* performance and connectivity use the same id so that 2 banners won't appear

* fix issue w/ android not registering touch events behind the overlay

* fix failing test

* hideBanner now needs id.

* Connection status unknown added in en.json

* update the doc

* animate the banner moving up when bottom banner first appear.

* removed unused functions and update tests

* add useMemo and useCallback

* update jsdoc to say dismissable is default true

* fix failing test
2025-10-12 10:10:05 -06:00
..
apps.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
base.ts MM-65085: Support Pre Shared Password on server connect (#9082) 2025-09-01 11:24:15 +02:00
categories.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
categories.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
channel_bookmark.test.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
channel_bookmark.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
channels.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
channels.ts Mm 63935 abac end user indicators (#8848) 2025-05-19 15:34:03 +02:00
constants.ts MM-65085: Support Pre Shared Password on server connect (#9082) 2025-09-01 11:24:15 +02:00
custom_profile_attributes.test.ts [MM-62701] [MM-62176]Edit custom profile attributes in user profile (#8557) 2025-02-19 15:51:59 +01:00
custom_profile_attributes.ts [MM-62565] DB only custom profile attributes and fields (#8739) 2025-04-09 15:35:27 +02:00
emojis.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
emojis.ts Remove watermelondb limitation on updating an already updated model (#7067) 2023-02-03 17:11:57 +02:00
error.ts feat: show pre-auth secret error on field on server create (#9102) 2025-09-17 08:04:28 +02:00
files.test.ts [GH-8911] Fix file upload request when CSRF protection is enabled (#8912) 2025-10-01 11:00:55 -03:00
files.ts [GH-8911] Fix file upload request when CSRF protection is enabled (#8912) 2025-10-01 11:00:55 -03:00
general.test.ts [MM-63728] Add license load metric to About screen (#8769) 2025-04-17 17:29:47 -03:00
general.ts [MM-63728] Add license load metric to About screen (#8769) 2025-04-17 17:29:47 -03:00
groups.test.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
groups.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
index.test.js [Gekidou] Fix & small refactor to the app entry logic and WS reconnection (#5937) 2022-02-09 12:49:37 -03:00
index.ts Mobile-side for MM-65084 (#9115) 2025-09-29 14:29:37 -07:00
integrations.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
integrations.ts Upgrade RN as well as update or replace other dependencies (#8011) 2024-06-19 09:33:45 +08:00
nps.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
nps.ts Remove watermelondb limitation on updating an already updated model (#7067) 2023-02-03 17:11:57 +02:00
plugins.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
plugins.ts Remove watermelondb limitation on updating an already updated model (#7067) 2023-02-03 17:11:57 +02:00
posts.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
posts.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
preferences.test.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
preferences.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
scheduled_post.test.ts Feature schedule posts (#8509) 2025-04-14 22:08:59 +05:30
scheduled_post.ts Feature schedule posts (#8509) 2025-04-14 22:08:59 +05:30
teams.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
teams.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
threads.test.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
threads.ts Request metrics improvements (#8420) 2025-01-16 13:55:29 -07:00
tos.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
tos.ts Remove watermelondb limitation on updating an already updated model (#7067) 2023-02-03 17:11:57 +02:00
tracking.test.ts feat(MM-65145): Network connectivity/performance observer (#9173) 2025-10-12 10:10:05 -06:00
tracking.ts feat(MM-65145): Network connectivity/performance observer (#9173) 2025-10-12 10:10:05 -06:00
users.test.ts MM-59683 + more - Add tests to client/rest (#8447) 2025-01-07 08:23:28 -05:00
users.ts Mobile-side for MM-65084 (#9115) 2025-09-29 14:29:37 -07:00