* install react-native-mmkv-storage
* wip ios migration
* change all js rn-user-defaults -> react-native-mmkv-storage
* remove all rn-user-defaults native references (iOS)
* android migration from rn-user-defaults to react-native-mmkv-storage
* ios app group accessible mmkv
* handle get errors
* remove access of credentials from legacy native apps
* remove data of user defaults
* remove no longer necessary import
* js mmkv encryption
* run migration only once
* reply from notification android
* fix app group key access at native level ios
* encrypt user credentials using a specific key
* ios encrypt with random key
* use a random key at the first encryption
* encrypt migrated data on js land
* remove unused function
* reply notifications ios should be working
* use fix instanceID
* android ejson retrieve encrypted data
* remove encryption migrated data for a while
* encryption working between app and share extension
* fix patch react-native-notifications
* ssl pinning working using mmkv encrypted data
* improve react-native-notifications
* run encrypt migration data only once
* fix build
* fix patches magic string
* fix mmkv id
* mmkv -> userPreferences
* fix instance id on android migration
* cast our oldest sharedPreferences string into an object
* revert log remove
* create currentServer Rocket.Chat key
* wrap mmkv api class
* change the get logic
* move userPreferences to lib
* move encrypt migrated data to userPreferences class
* check if the new object is new before insert
* invalidate ci yarn cache
* fix sort migration from android shared preferences
* fix splashscreen forever
* invalidate yarn cache
* invalidate yarn cache
* fix patch
* Minor change
* fix android notifications looking for wrong mmkv instance
* Fix some issues on iOS mmkv native access
* Remove unnecessary code
* Fix notification reply and ssl pinning
* WIP NotificationService use MMKV credentials
* Add KeychainGroup
* Notification idOnly get credentials from mmkv
* Some fixes
* Invalidate yarn cache
* Pods
* Use MMKVAppExtension on NotificationService
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* [WIP] Notification Service
* [WIP] Android push notification privacy
* [WIP] Retry request when it fails (iOS)
* [WIP] Override notification bundle
* [CHORE] Remove unnecessary import
* [WIP] Check notification Type (iOS)
* [WIP] Change to notification endpoint
* eof
* fix unwrap conditional value
* turn run request synchronous
* fix bundle info
* eof
* remove extra tab
* undo unnecessary change
* remove not working code for a while
* fix notification title
* change endpoint and received/sent data
* message-id-only working properly on android
* notification privacy working on ios
* invalidate circleCI yarn cache
* Fix provisioning profiles
* fix notification service version
* fix unwrap nil
* compatibility older servers android
* show received notification when cant fetch content from server
* undo some android changes
* prevent group & reply fallback notifications
* dont show more than one fallback notification by server
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Idempotence for Assorted
* Idempotence for Onboarding
* Idempotence for Rooms
* Remove redundant expects
* Fixes and improvements
* Remove unneeded sleeps
* Make stable following merge
* Try solving early taps without long sleep
Try solving early taps without long sleep (cont)
Temporary CircleCI hack for quicker testing
Add screenshots to CircleCI for failed tests
Try solving early taps without long sleep (cont. 2)
Revert "Temporary CircleCI hack for quicker testing"
This reverts commit 4abef3a5827910c05b12ac8b8380275b60e8af4f.
* Fix flaky test with a fluent wait on the tap
* Add some new sleeps to workaround #2324
* Add test artifacts to gitignore
* More longpress for dodgy taps, wait for pin response
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Add docker env with orchestration
* Update detox, update mocha config format
* One simulator at a time - mocha won't run parallel
* Docker runner, with test changes to match RC data
* Better error trapping in infrastructure control script
* Swap user provisioning from Mongo to RC API to work against existing servers
* Add docker to e2e readme
* Stop using example.com for emails
* Default detox to the tests directory
* Add working configs for both run scenarios
* Add some optional forcing of data.js version for Docker
* Add expo-apple-authentication
* Button
* Create new provisioning profiles
* Login with Apple
* Change provisioning profile
* Button color based on theme
Co-authored-by: Djorkaeff Alexandre <djorkaeff.unb@gmail.com>
* [NEW] MessageBox: Expo-av audio recorder
* Refactor MessageBox to accommodate recording button even when recording
* Rename Recording.js -> RecordAudio.js as we could implement video recording in the future
* RecordAudio: Introduce cancel and send buttons
* RecordAudio: Introduce recorderBusy state, refactor MessageBox, remove useless SafeAreaView
* RecordAudio: Better audio quality 🎉, stop recording on unmount
* RecordAudio: Use FileSystem from expo-file-system instead of RNFetchBlob
* chore: flush out react-native-audio
* fix(MessageBox): bring back some missed styles during refactor
* refactor(RecordAudio): use class component
* refactor(RecordAudio): recorder busy to class property, styling changes
* recorder initialisation changes
* fix(RecordAudio): missing await in isRecordingPermissionGranted
* fix(RecordAudio): set isRecording = false on cancel/finish, refactor perms
Co-authored-by: Diego Mello <diegolmello@gmail.com>
* Update expo libs
* Configure expo-local-authentication
* ScreenLockedView
* Authenticate server change
* Auth on app resume
* localAuthentication util
* Add servers.lastLocalAuthenticatedSession column
* Save last session date on background
* Use our own version of app state redux
* Fix libs
* Remove inactive
* ScreenLockConfigView
* Apply on saved data
* Auto lock option label
* Starting passcode
* Basic passcode flow working
* Change passcode
* Check if biometry is enrolled
* Use fork
* Migration
* Patch expo-local-authentication
* Use async storage
* Styling
* Timer
* Refactor
* Lock orientation portrait when not on tablet
* share extension
* Deep linking
* Share extension
* Refactoring passcode
* use state
* Stash
* Refactor
* Change passcode
* Animate dots on error
* Matching passcodes
* Shake
* Remove lib
* Delete button
* Fade animation on modal
* Refactoring
* ItemInfo
* I18n
* I18n
* Remove unnecessary prop
* Save biometry column
* Raise time to lock to 30 seconds
* Vibrate on wrong confirmation passcode
* Reset attempts and save last authentication on local passcode confirmation
* Remove inline style
* Save last auth
* Fix header blink
* Change function name
* Fix android modal
* Fix vibration permission
* PasscodeEnter calls biometry
* Passcode on the state
* Biometry button on PasscodeEnter
* Show whole passcode
* Secure passcode
* Save passcode with promise to prevent empty passcodes and immediately lock
* Patch expo-local-authentication
* I18n
* Fix biometry being called every time
* Blur screen on app inactive
* Revert "Blur screen on app inactive"
This reverts commit a4ce812934adcf6cf87eb1a92aec9283e2f26753.
* Remove immediately because of how Activities work on Android
* Pods
* New layout
* stash
* Layout refactored
* Fix icons
* Force set passcode from server
* Lint
* Improve permission message
* Forced passcode subtitle
* Disable based on admin's choice
* Require local authentication on login success
* Refactor
* Update tests
* Update react-native-device-info to fix notch
* Lint
* Fix modal
* Fix icons
* Fix min auto lock time
* Review
* keep enabled on mobile
* fix forced by admin when enable unlock with passcode
* use DEFAULT_AUTO_LOCK when manual enable screenLock
* fix check has passcode
* request biometry on first password
* reset auto time lock when disabled on server
Co-authored-by: Djorkaeff Alexandre <djorkaeff.unb@gmail.com>
* [IMPROVEMENT] Change server while connecting
* [FIX] Not login/reconnect to previous server
* [FIX] Abort all fetch while connecting
* [FIX] Abort sdk fetch
* [FIX] Patch-package
* Add comments
Co-authored-by: Diego Mello <diegolmello@gmail.com>