7 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
44eb76bed7
|
feat(iOS): Add Microsoft Intune MAM integration with multi-server support (#9312)
* 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> |
||
|
|
1d8568ade8
|
Improve markdown code (#9164)
* Improve markdown code * Add missing changes * Simplify style composition * Address feedback * Fix color issue introduced by channel banner |
||
|
|
b8c088cc70
|
Upgrade RN as well as update or replace other dependencies (#8011)
* start upgrade to RN 74 * migrate react-native-fs to expo-file-system * exclude expo-asset module * fix database manager remove directory * fix: android network helper * include expo on android * temporarily disable android dep lock * replace react-native-create-thumbnail with expo-video-thumnails * update patches file version * fix android build on 74 * create local library to replace MattermostManaged, Notifications and SplitView modules with new arch support * migrate app to use new mattermost-rnutils library * remove unused flipper class for android unsigned * fix mattermost-rnutils android foldedObserver lifecycle * use mattermost-rnutils on Android * use mattermost-rnutils on iOS * path react-native-navigation to not crash when activity is not NavigationActivity * create local library for android share extension with new arch support * Replace ShareModule with @mattermost/rnshare library * remove ShareModule from android native code * update react-intl * update nodejs to 20.x.x npm to 10.x.x and dev deps * update @gorhom/bottom-sheet * use MattermostShare conditionally based on the platform * update @react-native-camera-roll/camera-roll * remove unused react-native-calendars * fix metro config * fix terminate session race condition * remove unused analytics * replace react-native-device-info with expo-application and expo-device * update @react-native-clipboard/clipboard * update @react-native-community/datetimepicker * update @react-native-community/netinfo * update @sentry/react-native * update react-native-document-picker * update react-native-gesture-handler * update react-native-share * update react-native-svg and react-native-svg-transformer * update react-native-vector-icons * update babel * update react-native-shadow-2 * update semver * remove react-native-svg-transformer and convert svg files to svg components * fix @mattermost/rnshare new-arch build on android * remove react-native-create-thumbnail resolution in build.gradle * create @mattermost/hardware-keyboard library to replace hw-keyboard-events * fix hardware-keyboard library * fix rnutils library * create @mattermost/keyboard-tracker library * replace react-native-keyboard-tracking-view with @mattermost/keyboard-tracker * fix: rnutils to not crash on lateinit context * fix: rnutils delete database * revert changes to session_manager * Removed react-native-webview and added expo-web-browser instead With expo-web-browser we no longer need the webview for SSO login the SSO login is now done by using "custom Chrome tabs" on Android and ASWebAuthenticationSession on iOS * remove patch for react-native-keyboard-tracking-view * replace react-native-linear-gradient with expo-linear-gradient * replace react-native-in-app-review with expo-store-review * fix: shared group database directory on ios * replace react-native-fast-image with expo-image * remove unusued type def for react-native-keyboard-tracking-view * replace react-native-elements and react-native-button with @rneui * node version * update sizzling methods * fix tests using jest-expo * replace jail-monkey with expo-device * update babel deps * update typescript eslint * update rn and expo * react-native-document-picker @react-native-camera-roll/camera-roll @react-native-community/datetimepicker react-native-reanimated react-native-safe-area-context * update patches * update @sentry/react-native * upgrade react-native-navigation * update expo & expo-image * upgrade to working version of @sentry/react-native * update node, cocoapods, bundler, fastlane versions * @testing-library/react-native and eslint-plugin-jest * fix: FloatingTextInput causing a crash with reanimated * update sentry, localize, @types/lodash and uuid * fix floating text input label * update react-native-video * fix: cannot calculate shadow efficiently on some components * fix: reduce motion warning for bottomSheet * fix: shadow on YouTube component * update react-native-webrtc expo and @typescript-eslint * audit fix * fix swizzling bad merge * temp use of github dependency for @mattermost libraries * feedback review * feedback review * npm audit fix * update bundle deps * update @mattermost/react-native-turbo-log * update deps |
||
|
|
ca1f6df1c6
|
Generate video thumb from file url instead of public url (#6922) | ||
|
|
88fde2cc5e
|
Restyle video playback error (#6871)
* Restyle video playback error * video not shown when attached with multiple files and thumb fails * update local path when saving and sharing a file * feedback review |
||
|
|
e5273fc43b
|
[Gekidou - MM-44939] Search Screen - Add File Options Bottom Sheet (#6420)
* add observables for search component add loader screen add file client searches for files * hook up loader component for loading state * search results with found posts now working * get and store files when searching * query file results from the database display dummy file text for now * add filter screen and icon to the results header * needs some cleanup but functionally works - applied filters reduce files to subset of selectd types - no filters will show all files * update number files in parenthesis to match the filtered number of files (if filtered) * added the missing file extensions found in webapp added document_types which is a superset of other types * remove clear all text from filter and from bottom_sheet component * checkin before merge latest gekidou branch - change filters to use latest figma design - from multiselect to single select - revert changes to bottom sheet content that allowed adding a RHS title button - start of the file attachement cards show in file results * Cleanup and fixes * Remove nested scroll views * Address feedback * Address feedback * extract the fileInfos from the results object, from an array * add translations for filters * add translations * use Object values to determine if has file info results * Combine fetch recent mentions and search for posts * add search icon back to home screen * remove unused function import * fix formatting and add 3 dot onPress option * don't show search button * Add touchable opacity for pressing the card Add function for opening gallery Fix `...` so only clicking directly over it calls it's function. Everywhere else calls open gallery * place compassIcon in a touchable and add hitslop create individual objects for flex column and row * use one-liner for text move constant outside of the component * truncate filename if over max filename lenght and append ... fix style for filename * remove all commented filetype code. This will not be added to the card because of added length to second row. Feedback from UX discussion * remove trimFileName function and MAX_FILENAME_LENGTH constant make the textContainer grow in width. The other flex boxes are constant width align main container center and remove vertical margins * create TabTypes contant and TabType Type to replace all uses of 'messages' and 'files' * make padding adjustments based on the selected tab and if there are results. When no results are shown, we want the 'Check the spelling or try another search' text to not move or flicker when switching between files and messages * put the margin on the touchable container, not the compassicon so the hitslop is relative to the compassicon. * Add the channel name to the filecard. each fileInfo from the server contain a channel_id. Add to the reponse type * Move the channel name to a separate line * implement changes from PR. Shrink channel name when it doesn't fit * use a useMemo instead of useCallback * initial implementation * keep the bottomsheet open until successful download * remove comment * initial commit * don't use raw object values * channel_id will be defined * remove shadows update channel name text * move file_options to it's own folder add checks for enabled downloading and public links * - when touching each menu item, extend the area horizontally so the edge of the icon has space between it and the touchable area. - don't dismiss the modal. allow the user to dismiss or choose another option. - adjust the horizontal spacing of the toast origin/MM-44939-file-options * adjust margin so holding down on a menuItem spans the width of the bottom sheet * working copy using the File component instead of creating a new FileCard component * add styhling for long channel name * update styling for info text * update styling * disable lint check for console statement until function is hooked up * fixt linting errors caused by api including channel_id. It needs to be optional or the model will complain * when a file is an image, show the image or video as an image instead of the generic file icon * make `asCard` File Prop optional * shift the image icon over 4px * tweaked styles * tweaked styles for file info * move files directory from inside the post_list/post/body/ folder to its own component because is it referenced from other screens and components including: app/components/post_draft/uploads/upload_item/index.tsx app/components/post_list/post/body/content/image_preview/image_preview.tsx app/components/post_list/post/body/content/message_attachments/attachment_image/index.tsx app/components/post_list/post/body/index.tsx app/screens/gallery/document_renderer/document_renderer.tsx app/screens/home/search/results/results.tsx * create useImageAttachments hook and share with files component and results * rename all renderXXXFile useMemo options to xxxFile. These return the actual component * use explicit Boolean(onOptionsPress) * isSingleInput does not need to be a function * use find instead of filter().map() * add dependencies and refactor to reduce some file dependency arrays * order files by reverse create_at date * remove console.log and leave as a comment for now * update styling so that the view wrapper has the borderRadius. Now android and ios get the correct borderRadius surrounding the channel name * initial implementation * keep the bottomsheet open until successful download * remove comment * move file_options to it's own folder add checks for enabled downloading and public links * remove shadows update channel name text * - when touching each menu item, extend the area horizontally so the edge of the icon has space between it and the touchable area. - don't dismiss the modal. allow the user to dismiss or choose another option. - adjust the horizontal spacing of the toast origin/MM-44939-file-options * adjust margin so holding down on a menuItem spans the width of the bottom sheet * delete file * - use OptionItem instead of MenuItem - show the actual image for images and video * update results to use sorted filesForGallery file_options click gets the correct file * use the results of the ordered useImageAttachements results as data for File and Gallery * remove unnecessary View * - create snappoints based on number of OptionItems and the header height - adjust the toast according to the number of items shown - show and hide items when canDownload and publicLinksEnabled - bottom sheet will not resize because it is a function, but will show and hide items when enabled/disabled * results does not need to know about the toast margin in FileOption * extend optionItem to extende to edges of the bottom screen * When canDownloadFiles or publicLinksEnabled, reopen the bottom sheet with the correct options available * initialize lastViewedIndex to undefined with FileOptions first opens * remove extra empty line * open the permalink view when select Open in Channel * PR feedback - rename capitalize const - add several useCallbacks - use typescript optional parareter instead of if statement * - remove useMemos that only return a component - fix bug - when channel name is not present, don't show the channel component. This happened when looking at posts in a channel because post comes from the model, which does not include the channelName. This is because in the channel view all images are in a specific channel and no need to store it * remove useMemo import * remove callback * - remote unused operator - nothing needed outside of try catch * remove unused Client import * s/xxxFile/renderXxxFile/ because theare are a function that returns a component * move constant above component * default to 0 instead of forcing to be defined * - remove useMemo for renderIcon. It only returns a component - remove async from useCallback for handle functions * - do not modify the file value directly - handle the case where the only open the bottom sheet if it was open at the time of the dependencies changing * use optional operator * convert to switch statement * let the parmalink handle what to do when called. * just use the post id from fileInfo * use observerConfigBoolean * import as type because not useing to construct as models * add links to Jira ticket and github PR * add line breaks and sort alphabetically * use ternary operator to reduce number of lines * move up as far as possible * remove unused style * sort props and input vars alphabetically * move higher in the component * return ealier * no need for useDerivedValue. useMemo instead * use useCallback * remove unused constant * replace any with type * use more specific dependency * remove memoization. fileInfo will not change because it is passed from a server call and will not update unless a new search is created (with this modal closed) * no need to memoize. SetValue is already memoized because of useState * use observeConfigBooleanValue to get config values * add comment explaining the purpose of the useEffect * Merge fixes and minor tweaks Co-authored-by: Daniel Espino García <larkox@gmail.com> Co-authored-by: Elias Nahum <nahumhbl@gmail.com> Co-authored-by: Matthew Birtch <mattbirtch@gmail.com> |
||
|
|
97b5e75e5f
|
[Gekidou - MM-44930] Use File component for showing files in search. (#6425)
* add observables for search component add loader screen add file client searches for files * hook up loader component for loading state * search results with found posts now working * get and store files when searching * query file results from the database display dummy file text for now * add filter screen and icon to the results header * needs some cleanup but functionally works - applied filters reduce files to subset of selectd types - no filters will show all files * update number files in parenthesis to match the filtered number of files (if filtered) * added the missing file extensions found in webapp added document_types which is a superset of other types * remove clear all text from filter and from bottom_sheet component * checkin before merge latest gekidou branch - change filters to use latest figma design - from multiselect to single select - revert changes to bottom sheet content that allowed adding a RHS title button - start of the file attachement cards show in file results * Cleanup and fixes * Remove nested scroll views * Address feedback * Address feedback * extract the fileInfos from the results object, from an array * add translations for filters * add translations * use Object values to determine if has file info results * Combine fetch recent mentions and search for posts * add search icon back to home screen * remove unused function import * fix formatting and add 3 dot onPress option * don't show search button * Add touchable opacity for pressing the card Add function for opening gallery Fix `...` so only clicking directly over it calls it's function. Everywhere else calls open gallery * place compassIcon in a touchable and add hitslop create individual objects for flex column and row * use one-liner for text move constant outside of the component * truncate filename if over max filename lenght and append ... fix style for filename * remove all commented filetype code. This will not be added to the card because of added length to second row. Feedback from UX discussion * remove trimFileName function and MAX_FILENAME_LENGTH constant make the textContainer grow in width. The other flex boxes are constant width align main container center and remove vertical margins * create TabTypes contant and TabType Type to replace all uses of 'messages' and 'files' * make padding adjustments based on the selected tab and if there are results. When no results are shown, we want the 'Check the spelling or try another search' text to not move or flicker when switching between files and messages * put the margin on the touchable container, not the compassicon so the hitslop is relative to the compassicon. * Add the channel name to the filecard. each fileInfo from the server contain a channel_id. Add to the reponse type * Move the channel name to a separate line * implement changes from PR. Shrink channel name when it doesn't fit * use a useMemo instead of useCallback * initial commit * working copy using the File component instead of creating a new FileCard component * add styhling for long channel name * update styling for info text * update styling * disable lint check for console statement until function is hooked up * fixt linting errors caused by api including channel_id. It needs to be optional or the model will complain * when a file is an image, show the image or video as an image instead of the generic file icon * make `asCard` File Prop optional * shift the image icon over 4px * tweaked styles * tweaked styles for file info * move files directory from inside the post_list/post/body/ folder to its own component because is it referenced from other screens and components including: app/components/post_draft/uploads/upload_item/index.tsx app/components/post_list/post/body/content/image_preview/image_preview.tsx app/components/post_list/post/body/content/message_attachments/attachment_image/index.tsx app/components/post_list/post/body/index.tsx app/screens/gallery/document_renderer/document_renderer.tsx app/screens/home/search/results/results.tsx * create useImageAttachments hook and share with files component and results * rename all renderXXXFile useMemo options to xxxFile. These return the actual component * use explicit Boolean(onOptionsPress) * isSingleInput does not need to be a function * use find instead of filter().map() * add dependencies and refactor to reduce some file dependency arrays * order files by reverse create_at date * remove console.log and leave as a comment for now * update styling so that the view wrapper has the borderRadius. Now android and ios get the correct borderRadius surrounding the channel name * use the results of the ordered useImageAttachements results as data for File and Gallery * remove extra empty line * PR feedback - rename capitalize const - add several useCallbacks - use typescript optional parareter instead of if statement * - remove useMemos that only return a component - fix bug - when channel name is not present, don't show the channel component. This happened when looking at posts in a channel because post comes from the model, which does not include the channelName. This is because in the channel view all images are in a specific channel and no need to store it * remove useMemo import * remove callback * - remote unused operator - nothing needed outside of try catch * remove unused Client import * s/xxxFile/renderXxxFile/ because theare are a function that returns a component * move constant above component * default to 0 instead of forcing to be defined * use observerConfigBoolean * import as type because not useing to construct as models * add links to Jira ticket and github PR * add line breaks and sort alphabetically * use ternary operator to reduce number of lines * move up as far as possible * remove unused style * sort props and input vars alphabetically * move higher in the component * return ealier * no need for useDerivedValue. useMemo instead * use useCallback * Minor tweaks and fixes * Remove floats from style Co-authored-by: Daniel Espino García <larkox@gmail.com> Co-authored-by: Elias Nahum <nahumhbl@gmail.com> Co-authored-by: Matthew Birtch <mattbirtch@gmail.com> |
Renamed from app/components/post_list/post/body/files/video_file.tsx (Browse further)