* Serialize/Deserialize state as string in store, instead of map
To see if this positively impacts performance lag issues (channel sidebar opening, etc.)
* Update app/store/mmkv_adapter.ts
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Update app/store/mmkv_adapter.ts
* Typescript fixes
Co-authored-by: Miguel Alatzar <migbot@users.noreply.github.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
Co-authored-by: Miguel Alatzar <this.migbot@gmail.com>
* Enable ESLint no-unused-vars
* Use FastImage instead of Image
* Update fast-image patch to support multiple cookies
* Fix ESLint errors
* Have jest run timers for post_textbox tests
* Feedback review
* Update snapshots
* MM-24463 Run message retention cleanup off of pre-existing state
Instead of a reconstructed "zero" state.
Only posts in channels, searched posts and flag posts are recalculated (as per data retention policy, if applicable). The rest of state is cloned from existing state.
* Mark hydrationComplete only if _persist state is undefined
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* MM-22089 set default prevent double tap to 1s
* Increase tap debounce delay for ChannelInfo modal action
Co-authored-by: Amit Uttam <changingrainbows@gmail.com>
* Set previous app version in redux store
* Handle setting previousVersion on login and clearing data
* Set previous version on logout instead
* Remove action arg
* Fix infinite loop retrieving post files
Right now if all the attachments of a post are removed the component
update code enters into an infinite loop because the comparison between
arrays always return false.
* Fix isDateLine function to check for null and undefined
* use optional chaining instead
Co-Authored-By: Amit Uttam <changingrainbows@gmail.com>
Co-authored-by: Amit Uttam <changingrainbows@gmail.com>
* Remove redux-offline and configure redux-persist
* Fix typo
* Fix configure store
* Upgrade to redux-persist 6.0.0
* Add migration from redux-persist v4 to v6
* Replace AsyncStorage with MMKVStorage to boost storage speed
* Mock RNFastStorage
* Fix reactions test
* Fix clearing the store on logout
* Remove the need for LOGOUT_SUCCESS
* No need to pass persistConfig to middlewares()
* Remove unused imports
* Export connection
Accidentally removed this export.
* Add batch action name
Co-Authored-By: Elias Nahum <nahumhbl@gmail.com>
* Add batch action name
Co-Authored-By: Elias Nahum <nahumhbl@gmail.com>
* Add batch action name
Co-Authored-By: Elias Nahum <nahumhbl@gmail.com>
* Add batch action name
Co-Authored-By: Elias Nahum <nahumhbl@gmail.com>
* Fix delete post
* Fix leave channel
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Add nickname search functionality
* Add username property to test
* Fix parentheses out of place
* Add nickname property to additional tests
* Added ability to truncate long names
* Minor clean up
* More minor clean up
* WIP: Implementing quick reaction functionality
* Making closing animations smoother
- Added haptic feedback + timeouts for a smooth flow
* Fixing clipping of post options on android
* updating snapshots
* Refactoring code & fixing styles
- Fixed paddings element sizes to comply with design specs
- Replaced reaction image to one with a higher resolution
- Made sizes of emojis to be conditional on deviceWidth
* Apply suggestions from code review
* Adding component to avoid extra re-renders
* Refactoring function call in reaction_button
Am ashamed i didn't catch this before pushing the rest
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* MM-23490 Save state to file via async middleware vs store subscription
Currently for iOS, a subset of store state is saved to an on-device file, so that the Share Extension can have access to information it needs (teams and channels) to function.
This file saving would happen via a store subscription which triggers a file save for every dispatched action. By moving this logic to a middleware function, when this function gets invoked is now limited to a configurable set of action dispatches. (e.g. `LOGIN`, `CONNECTION_CHANGED`, `WEBSOCKET_SUCCESS`), etc.
* MM-23493 Move app cache purge from store subscription to middleware (#4069)
* MM-23493 Move app cache purge from store subscription to middleware
This commit exposes persistence configuration as a static reference, so that cache purging can be invoked on demand anywhere else in the codebase.
While middleware still may not be the best spot for this singular "action", existing functionality (reacting to `OFFLINE_STORE_PURGE`) is maintained.
The change also removes the need for `state.views.root.purge` to exist in the state tree.
* PR feedback: Inject config dependency for purging app cache
Previously, `middleware` imported the config back from `store` (i.e. cyclic import).
* PR feedback: No need to export config, now that it's passed as argument
* Fix tests after refactoring middleware call from array -> function
* PR feedback: Let parent continue to pass down initial store state