* 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 |
||
|---|---|---|
| .github | ||
| .husky | ||
| android | ||
| app | ||
| assets | ||
| build/notice-file | ||
| detox | ||
| docs | ||
| eslint | ||
| fastlane | ||
| ios | ||
| libraries/@mattermost | ||
| patches | ||
| scripts | ||
| share_extension | ||
| test | ||
| types | ||
| .buckconfig | ||
| .editorconfig | ||
| .flowconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .node-version | ||
| .npmrc | ||
| .nvmrc | ||
| .ruby-version | ||
| .solidarity | ||
| .watchmanconfig | ||
| app.json | ||
| babel.config.js | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| env.d.ts | ||
| eslint.config.mjs | ||
| eslint.precommit.config.mjs | ||
| floating-banner.md | ||
| Gemfile | ||
| Gemfile.lock | ||
| index.ts | ||
| ISSUE_TEMPLATE.md | ||
| jest.config.js | ||
| jsconfig.json | ||
| LICENSE.txt | ||
| metro.config.js | ||
| NOTICE.txt | ||
| package-lock.json | ||
| package.json | ||
| PULL_REQUEST_TEMPLATE.md | ||
| react-native.config.js | ||
| README.md | ||
| SECURITY.md | ||
| tsconfig.json | ||
| tsconfig.test.json | ||
Mattermost Mobile v2
- Minimum Server versions: Current ESR version (10.5.0+)
- Supported iOS versions: 15.1+
- Supported Android versions: 7.0+
Mattermost is an open source Slack-alternative used by thousands of companies around the world in 21 languages. Learn more at https://mattermost.com.
You can download our apps from the App Store or Google Play Store, or build them yourself.
We plan on releasing monthly updates with new features - check the changelog for what features are currently supported!
Important: If you self-compile the Mattermost Mobile apps you also need to deploy your own Mattermost Push Notification Service.
How to Contribute
Testing
To help with testing app updates before they're released, you can:
- Sign up to be a beta tester
- Install the
Mattermost Betaapp. New updates in the Beta app are released periodically. You will receive a notification when the new updates are available. - File any bugs you find by filing a GitHub issue with:
- Device information
- Repro steps
- Observed behavior (including screenshot / video when possible)
- Expected behavior
- (Optional) Sign up for our team site
- Join the Native Mobile Apps channel to see what's new and discuss feedback with other contributors and the core team
You can leave the Beta testing program at any time:
- On Android, click this link while logged in with your Google Play email address used to opt-in for the Beta program, then click Leave the program.
- On iOS, access the
Mattermost Betaapp page in TestFlight and click Stop Testing.
Contribute Code
- Look in GitHub issues for issues marked as [Help Wanted]
- Comment to let people know you’re working on it
- Follow these instructions to set up your developer environment
- Join the Native Mobile Apps channel on our team site to ask questions
Frequently Asked Questions
How is data handled on mobile devices after a user account is deactivated?
App data is wiped from the device when a user logs out of the app. If the user is logged in when the account is deactivated, then within one minute the system logs the user out, and as a result all app data is wiped from the device.
I need the code for the v1 version
You can still access it! We have moved the code from master to the v1 branch. Be aware that we will not be providing any more v1 versions or updates in the public stores.
Troubleshooting
I keep getting a message "Cannot connect to the server. Please check your server URL and internet connection."
This sometimes appears when there is an issue with the SSL certificate configuration.
To check that your SSL certificate is set up correctly, test the SSL certificate by visiting a site such as https://www.ssllabs.com/ssltest/index.html. If there’s an error about the missing chain or certificate path, there is likely an intermediate certificate missing that needs to be included.
Please note that the apps cannot connect to servers with self-signed certificates, consider using Let's Encrypt instead.
I see a “Connecting…” bar that does not go away
If your app is working properly, you should see a grey “Connecting…” bar that clears or says “Connected” after the app reconnects.
If you are seeing this message all the time, and your internet connection seems fine:
Ask your server administrator if the server uses NGINX or another webserver as a reverse proxy. If so, they should check that it is configured correctly for supporting the websocket connection for APIv4 endpoints.