* Add license load metric to About screen
- Add REST endpoint to fetch license load percentage
- Display load metric in About screen next to server version
Fixes: https://mattermost.atlassian.net/browse/MM-63728
* MM-63728: Address PR feedback from enahum
- Move license load metric fetch to a remote action
- Use isMinimumServerVersion to check for server 10.8.0 or higher
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* MM-63728: Simplify getLicenseLoadMetric to directly return number
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* MM-63728: Move getLicenseLoadMetric to dedicated license.ts file
- Create new remote action file specifically for license-related functions
- Add test file for the license actions
- Update imports in about.tsx
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* MM-63728: Remove redundant license check in about.tsx
- Rely on getLicenseLoadMetric to handle the license check
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* MM-63728: Update E2E tests for license load metric
- Add license load metric test IDs to about screen
- Update E2E test to check for load metric when license is enabled
- Handle cases where server might not support the feature
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* recover app/actions/remote/general.ts
* MM-63728: Return error from getLicenseLoadMetric instead of silent failure
- Remove silent failure and debug logging
- Return the error object when API call fails
- Update the About component to handle possible error responses
- Update tests to verify error handling
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* MM-63728: Remove groupLabel parameter from getLicenseLoadMetric
- Remove groupLabel parameter from client getLicenseLoadMetric method in interface and implementation
- Update client tests to reflect the parameter removal
- Update license action test to verify no parameter is passed
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* simplify about screen checks
* MM-63728: Use jest.mocked and real version checks in license tests
- Removed isMinimumServerVersion mock, letting tests use real version checking
- Used proper type casting for mock Client
- Added comprehensive version compatibility test cases
- Simplified test setup
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* MM-63728: Remove redundant server version test
- Removed redundant test for different server versions
- Existing tests already cover the necessary version compatibility cases
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* MM-63728: Refactor license test to use better mocking pattern
- Refactored the test file to use a better mocking pattern similar to custom_emoji.test.ts
- Simplified mock declarations using jest.mock()
- Added type import for Client for better readability
- Improved type casting for mock objects
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* npm run fix
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Only set the height on the message component if it ends up being greater than the maxHeight to avoid re-renders
* Cache the teams theme to avoid unnecessary computation and re-renders
* useDidUpdate instead of useEffect to avoid setting the theme preference without need
* add comment on clear cache
* Add test notification menu
* Reduce the minimum version for testing purposes
* Address feedback
* Add missing strings
* Address feedback
* Fix snapshots
* Bump version limit and use correct link
* Fix tests
* Fix URL issues
* notification ringing, settings screen, native code patch, ringing mp3s
* i18n
* play preview on first press
* prevent playing from background (only affects Android) to match iOS beh
* stop ringing/vibration on entering background
* ring when coming back from background and new incoming call is present
* no push notification sound when it's a call; improve ringing
* move sounds to asset folder; copy on postinstall for android bundling
* make Ringtone type a string enum
* make Android ring async + await ring and stop; changes from PR comments
* missing fields after merge
* release lock on an exception
* cancel sample ringing when turning notifications off
* copy sound files for android build
* typo
* update snapshots
* testing if the problem is copying the mp3 files
* fix android mp3 assets when building for non-release
* add sounds to .gitignore
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* feat: add copy to clip board button in about page
* add intl format text
* make suggested changes.
- fix: wrap copyToClipBoard function in useCallBack
- remove annonymous function onPress, provide function pointer
- make code readable in copyToClipBoard function
* formatting
* small fix
* change copy to clipboard position
- created a custom button eith icon and text
- usd button theme color
* button styling
* divider color
* use predefined btn element
* Add e2e test for copy info button
* feat: refactor the styles for thin lines
- fix: change touchable opacity to view
- add margin top to footer text
* change icon size to 15
* remove unnecessary view
* add config to dependency of callback
* suggeste changes on onClick func
* modified en.json file after running i18-extract
* Improve translations
* Address feedback
* Fix non updated default messages
---------
Co-authored-by: Daniel Espino García <larkox@gmail.com>
* Save message draft when post input is unmounted
* Fix switch CRT on/off
* Handle iPad on Stage Manager
* iOS Share Extension to use LRU cache instead of file cache
* Support building android as aab
* use handleReconnect instead of appEntry on handleCRTToggled
* show skin tone selector tutorial after running all interactions
* Update app/actions/remote/preference.ts
Co-authored-by: Daniel Espino García <larkox@gmail.com>
* fix lint
---------
Co-authored-by: Daniel Espino García <larkox@gmail.com>
* placement of 'report a problem'
* installed react-native-mail
* settings/report_problem
- Opens on Email App on Android
- Crashes on iOS if no account signed in the mail app
* new wiring
* new wiring
* tried first strategy for attachment
* tried second strategy for attachment
* Update report_problem.tsx
* revert changes to package.json
* removes unused supportEmail
* install @mattermost/react-native-turbo-mailer
* update import
* Update Podfile.lock
* added MENU_ITEM_HEIGHT to constant/view
* fix user presence and your profile
* added MENU_ITEM_HEIGHT to constant/view
* fix user presence and your profile
* UI Polish - Custom Status
* UI Polish - Settings
* UI Polish - logout
* refactored styles
* removed 'throws DataOperatorException' from './database/`
* fix for copy link option
* fix autoresponder
1. user should be allowed to enter paragraph
2. the OOO was not immediately being updated on the notification main screen. The fix is to cal fetchStatusInBatch after the updateMe operation
* About Screen - code clean up
* removed MenuItem component from common_post_options
* removed MenuItem from Settings
* refactored show_more and recent_item
* removed menu_item component
* Update setting_container.tsx
* PR review correction
* Update setting_container.tsx
* Update recent_item.tsx
* Timezone search results not updating on term edit MM-45621
* Fix update theme MM-45604 / MM-45591
* Prevent channel items from stacking when collapse/expand category MM-45590
* Remove current channel from unread section MM-45589
* Latex code block style MM-45572
* Update Post input style when theme update
* Show tutorial only for the first item in the first section MM-45549
* Fix close user profile modal on iPad
* Move style out of component
Co-authored-by: Daniel Espino García <larkox@gmail.com>
* refactoring code to use useAndroidBackHandler hook - part 1
* useNavButtonPressed - part 2
* useNavButtonPressed hook - part 3
* Apply suggestions from code review
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* PR review corrections
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* adding nav hooks
* added save button
* capturing value from OptionItem
* notification - saving in progress
* tested API
* corrections after review
* Update en.json
* Update notification_push.tsx
* ts fixes
* minor improvement
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>