* refactor: implement custom ExpoImage wrapper for cache control
Add ExpoImage component with automatic cacheKey/cachePath management and replace all expo-image imports across the app
* refactor(ios): convert Gekidou to CocoaPods
Migrate from Swift Package Manager to CocoaPods, add Keychain write operations, refactor notification handler to remove react-native-notifications headers, and upgrade Swift to 5.0
* npm audit
* update fastlane
* feat(ci): integrate Intune MAM for enterprise builds with strict OSS protection
Add Intune submodule, CI actions, Fastlane configuration, developer scripts, pre-commit hooks, and validation workflows to enable internal MAM builds while protecting OSS repository
* fix tests by mocking @mattermost/intune
* feat: implement Intune MAM integration with comprehensive security enforcement
Add IntuneManager, refactor SecurityManager/SessionManager for MAM policies, implement native OIDC auth flow, add biometric enforcement, conditional launch blocking, and file protection controls
* fix alerts when no server database is present
* Unify cache strategy
* fix emit config changed after it was stored in the db
* Handle Mid-Session Enrollment Detection
* fix ADALLogOverrideDisabled missing in Fastfile
* fix flow for initial enrollment
* fix and add unit tests
* enable Intune configuration for PR and beta builds, CLIENT_ID should be changed before actual release
* Update intune submodule with addressed feedback
* fix validate-intune-clean workflow
* feat(intune): add comprehensive error handling and SAML+Entra support
Add production-ready error handling for native Entra authentication with
user-friendly i18n messages, comprehensive test coverage, and support for
Entra login when server requires SAML.
* update i18n
* update intune submodule
* update build-pr token
* fix race condition between server auth and intune enrollment
* fix CI workflow to build with intune
* use deploy key for intune submodule
* set the config directly in the submodule .git
* debug injection
* try setting GIT_SSH_COMMAND
* remove action debug
* fix server url input
* match pod cache with intune hash
* Fastfile and envs
* have workflows check for intune/.git
* have ci cache intune frameworks as well
* update Fastlane to set no-cache to artifacts uploaded
* fix s3 upload
* fix pblist template
* Attempt to remove the cache control for PR uploads to s3
* use hash from commit for S3 path
* Implement crash-resilient selective wipe with automatic retry and add removeInternetPassword to Gekidou Keychain
* Fix surface errors from intune login
* fix postinstall scripts
* use cacheKey for draft md images
* remove unnecessary double await during test
* Have isMinimumLicenseTier accept valid license sku tier as target
* Add missing Auth error messages
* remove the last period for intune errors in i18n
* do not call unenroll with wipe on manual logout
* Fix tests and Intune error messages
* do not filter any SSO type regardless of which is used for Intune
* fix 412 to not retry
* fix tests, app logs sharing and share_extension avatar cache
* apply setScreenCapturePolicy on license change
Co-authored-by: Eva Sarafianou <eva.sarafianou@mattermost.com>
* re-apply screen capture on enrollment
Co-authored-by: Eva Sarafianou <eva.sarafianou@mattermost.com>
* use userData from intunr login and prevent getMe
Co-authored-by: Eva Sarafianou <eva.sarafianou@mattermost.com>
* Check for Biometrics and Jailbreak as we used to
---------
Co-authored-by: Eva Sarafianou <eva.sarafianou@mattermost.com>
* feat: add support for reduced motion in BottomSheet and TabBar components
* fix: remove reduceMotion option from animation timing in login, onboarding, and server screens
* feat: integrate reduced motion support to the entire app and switch accordingly
* feat: positions the Login screen differently if animations are disabled
* fix: remove mock implementation of useReducedMotion in react-native-reanimated
* revert login screen
* fix: remove unused effect that resets translateX value in LoginOptions
* feat: add reduced motion support to ForgotPassword screen and reset translateX on LoginOptions mount
* feat: integrate reduced motion support in Onboarding and Slide components
* feat: add reduced motion support to MFA and SSO screens
* feat: update ReducedMotionConfig to use system preference in withServerDatabase
* refactor: remove ReducedMotionConfig from withServerDatabase component
* feat: remove reduced motion configuration from screens and adjust animations accordingly
* feat: integrate reduced motion handling in Server component animations
* feat: enhance BottomSheet animation with reduced motion support and update test setup for react-native-reanimated
* fix: update channel list row snapshots with collapsable and animated props
* test: update react-native-reanimated mock setup for improved testing
* fix: enhance react-native-reanimated mock to support reduced motion and prevent default call
* fix: refactor animationConfigs to use useMemo for improved performance and clarity
* feat: implement screen transition animation hook and integrate it into ForgotPassword screen
* fix: refactor LoginOptions to utilize useScreenTransitionAnimation for improved animation handling
* refactor: streamline MFA component by removing unused imports and integrating useScreenTransitionAnimation for enhanced transitions
* refactor: simplify Onboarding component by removing unused imports and integrating useScreenTransitionAnimation for smoother transitions
* refactor: enhance useScreenTransitionAnimation hook to support animated transitions and integrate it into Server component
* refactor: replace custom animation logic with useScreenTransitionAnimation in SSO component for improved transition handling
* Add Report a Problem functionality
* update cache pinned SHA version from 4.0.2 to 4.2.0
* Address feedback
* Fix tests
* Fix some issues and update kotlin coroutines version
* Fix delete file for iOS
* Bump 1 more version for coroutines
* Use rxjava instead of kotlin coroutines to avoid security issue
* Move path prefix to avoid test error
* Address feedback
* Address feedback
* Address feedback
* Use mailto on iOS
* Fix tests related to button changes
* Address feedback
* Update icon and fix onboarding buttons
* Fix test
---------
Co-authored-by: Angelos Kyratzakos <angelos.kyratzakos@mattermost.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* Handle biometric authentication
* jailbreak/root detection and biometric small fixes
* remove server from initializeSecurityManager and fix loginEntry
* Add screen capture prevention and other small fixes
* added unit tests to SecurityManager
* added shielded nativeID to protect views
* use MobilePreventScreenCapture instead of MobileAllowScreenshots in config type definition
* Apply Swizzle for screen capture on iOS
* Apply patch to bottom sheet to prevent screen captures
* fix ios sendReply
* Fix SDWebImage swizzle to use the correct session
* Fix potential crash on Android when using hardware keyboard
* rename patch for network library to remove warning
* add temp emm reference
* fix initializeSecurityManager tests
* fix translations
* use siteName for jailbreak detection when connecting to a new server
* fix i18n typo
* do not query the entire config from the db only the required fields
* migrate manage_apps to use defineMessages
* use TestHelper.wait in tests
* use defineMessages for security manager
* fix missing else statement for gm_to_channel
* created a TestHelper function to mockQuery and replace as jest.Mock with jest.mocked
* fix unit tests
* fix unit tests (again) and include setting the test environment to UTC
* Fix keyboard disappearing on iOS
* update react-native-emm
* WIP
* fix keyboard blocking text input for interactive dialog
* do not use extra keyboard and windowSoftInputMode:adjustNothing on Android 10 and under
---------
Co-authored-by: Devin Binnie <devin.binnie@mattermost.com>
* Add support to use the keyboard area with a component
* fix import
* add missing providers to involved screens
* Change the way we handle the keyboard to allow using custom components in that area
* review feedback
* 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>
* captions on videos from posts and searches
* add the patch for react-native-video which fixes subtitle downloading
* improve spacing
* fix patch file
* upgrade compass-icons; use cc icon
* revert patch overwrite
* fix patch
* use useMemo
* fix hitslops on pressables
* use new Caption format; refactor for clarity
* simplify tracks creation and use
* MM-54499 Downgrade react-native-navigation to fix button text wrapping
* Revert "MM-54499 Downgrade react-native-navigation to fix button text wrapping"
This reverts commit b8f65cda426bb02d26fd85d8b8436597b2ae1722.
* MM-54499 Patch react-native-navigation to fix button text wrapping
* MM-53989 Upgrade to Node 18 and NPM 9 and match platform versions
* fix iPad OS 17 magic keyboard loop
* add engine-strict=true to npmrc
* use node version from nvmrc in action
* MM-53107 Add limit to Markdown nodes
* Update commonmark to published version
* Rename field to camel case for consistency
* Update Markdown tests for removed children