* Remove watermelondb limitation on updating an already updated model
* Add logic to handle different prepare states and improve logging
* fix tests
---------
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Init
* Test fix
* New sync implementation
* misc
* Includes migration and other servers sync
* Misc
* Migration fix
* Migration is done version 7
* Update app/queries/servers/thread.ts
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Update app/database/operator/server_data_operator/handlers/team_threads_sync.ts
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Feedback changes
* Fixes when old thread gets a reply
* Fix
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Add terms of service
* Add i18n
* Fix test
* Address feedback
* Address ux feedback
* Update texts
* Avoid Review to show on top of ToS
Co-authored-by: Daniel Espino <danielespino@MacBook-Pro-de-Daniel.local>
* Fix crash on Android when session expired notification is presented
* react-native-notification patch for schedule fix on android and open local notification on iOS
* Fix android scheduled session notification crash
* patch react-native-navigation to support blur/focus AppState on Android
* remove schedule session expired notification from login entry point
* schedule session expired notification actions
* add session manager
* Handle open session expired notification
* Ensure no unresolved types in the definition files
* Address feedback and general cleanup
* Move import from @constants/x to @constants where relevant
* Remove unneeded "import as"
* WIP
* Actions updated to fetch remote first, and local on error
* Groups fetch and save
* PR Feedback: prepare vs store and undefined fix
* Forgot to add file
* Groups Mention WIP
* Groups highlight!
* Merge, PR Feedback
* PR Feedback
* PR Feedback: Try/Catch blocks
* PR Feedback
* Rebased with PR feedback
* Exclusion fix, plus id order
* Tidies up iterations
* Loops updated
* Update app/database/operator/server_data_operator/handlers/group.ts
Co-authored-by: Avinash Lingaloo <avinashlng1080@gmail.com>
* PR Feedback: Remove unnecessary prepare/store methods
* Newline ESLint error
* Extracts out id generation for group-associations
* Batches if not fetchOnly
Co-authored-by: Avinash Lingaloo <avinashlng1080@gmail.com>
* Add column last_fetched_at to MyChannel & Thread tables and the migration
* Fix schema tests
* Handle lastFetchAt, retrieve threads on init and properly observe thread unreads (#6436)
* [Gekidou] Set lastFetchAt when fetching posts for a channel (#6437)
* Set lastFetchAt when fetching posts for a channel
* When resetting _preparedState set always to null
* Revert changes in WS
* Handle and set lastFetchedAt for MyChannel in iOS push notification
* feedback review
* iOS fallback to last post createAt if no lastFetchAt set
* Handle lastFetchAt on Android push notifications
* create storePostsForChannel local action
* Fix iOS fallback to last post create_at
Co-authored-by: Daniel Espino García <larkox@gmail.com>
* WIP
* Actions updated to fetch remote first, and local on error
* Groups fetch and save
* PR Feedback: prepare vs store and undefined fix
* Forgot to add file
* Update database to hold if a user is a team or channel admin
* TeamMembership identifier
* Fix handleTeamMembership test
* Update server.md
Co-authored-by: Avinash Lingaloo <avinashlng1080@gmail.com>
* Improve loading display name of direct channels
* Improve team switching
* Improve perceived performance when opening the app with an active session
* Fix upgrade path from v1
* Set moment locale while formatting date
* feedback review
* Add try again functionality to failed posts
* Fix attach files on Android
* feedback review
* Prevent android crash when uploading files for the first time
* Update the timestamp for updateAt when retrying to post
* Add POST TIME TO FAIL
* use function isPostFailed
* CRT fixes for MM-44210 & MM-44156
* Covered other conditions and renamed variables to be consistent
Co-authored-by: Anurag Shivarathri <anurag6713@gmail.com>
* First pass at adding groups to mobile
* Reverts back and updates the group vars
* Cleans tests
* Missing created/updated/deleted fields in types, many-many ref fix
* Adds to manager
* PR Feedback
* Failing test
* Move FK out of comment, add indexes
* updated docs/database/server artefacts
Co-authored-by: Avinash Lingaloo <avinashlng1080@gmail.com>
* Preparing thread data as well with prepareDeletePost
* observing the post directly to prevent the crash until the data issue is found
* mark as read, delete threeds fix
* Update thread.ts
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* started with the diagrams
* removed redundant tables
next step:
1. reconstruct id ( local id vs server id )
2. annotate fields with examples
3. recreate relationship
* work in progress
* work in progress
* fix association
* update postsInChannel
* removed SlashCommands from the Server database schema
* added missing associations in the models and updated docs/database
* exported server database
* update test
* code corrections following review
* update relationship
* update docs
* removed cyclic relationship
* Revert "removed cyclic relationship"
This reverts commit 4d784efb81.
* removed isOptional from Draft
* linked myChannelSettings to myChannel instead of Channel
* update diagrams
* store null instead of empty string
* update thread association
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* [Gekidou HOTFIX] fixes saving threads in the DB
`loadedInGlobalThreads` cannot be a property of the thread, the DB will
fail with unknown column upon saving.
This commit makes it an argument of handleThreads and
handleThreadInTeam.
Fixes wrong foreignKey in THREAD table associations.
* Fixes errors
* Fixes error
* Fix search bar style
* MM-42983 Align mention badge on channel list item
* MM-42985 polish channel intro UI
* MM-42984 update fonts on 'Show' bottom sheet
* MM-42982 Increase tap area of back button on channel view
* Set StatusBar style based on theme sidebarBg
* Reconnect other WS after 20 seconds insted of 5
* Only fetch missing profiles for DM/GMs
* Database prepare records optimization
* Do not use fallbackUsername for storing GM/DM in the database
* fix filter for fetching missing dm/gm
* remove use of indexOf inside another loop
* remove use of includes inside another loop
* remove use of find inside another loop
* Add missing translations
* disable Flipper on iOS
* Remove Flipper code from AppDelegate
* feedback review
* trim DM display name to make sure is not empty
* fixing missing direct channels display name
* UI/UX feedback
* fix WS channel viewed and mark as unread
* Remove duplicate emojis from reaction bar
* wip checkin
* wip checkin because my system is messed up again
* correct the add user and remove user from channel functions. THe user and channel ids sometimes come from the broudcast field, not the data object
* remove old comments
* remove old comments
* remove old comments
* add back in unarchive handler. handleChannelUpdateEvent will also update the deleteAt value for a channel, but does not get called when unarchive from the channel view, only through the system console.
* nit remove empty line
* wip
* wip
* remove handleChannelConvertedEvent
* remove handleChannelDirectAddedEvent
* wip
* wip
* wip
* Fix websockets events
* Address feedback
* Ensure categories and some refactoring
* Self review fixes
* Fix category creation bug
* Address feedback and minor improvements
* Address feedback
* Fix lint
Co-authored-by: Daniel Espino García <larkox@gmail.com>
* WS Events, Actions, Queries, Thread Follow, Post Query
* i18n changes
* Misc
* Only unread threads are marked as read
* Mark threads from WS even as visible in Global threads
* Merge fixes
* Update thread_post_list.tsx
* Merge fix
* Feedback fix
* Make teamId in handleThreads optional for unfollowed threads
* Removed unwated type and return
* Review changes
* Removing unused model
* Merge fix
* Misc fixes
* Following button query change
* Add performance and code improvements around post_list
* Fix test
* Move observers from utils to queries
* remove Flipper on iOS to fix CI build
* Fix observePermissionForChannel for DM/GM
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Refactors thread and threads_in_team tables
The convention is that only threads being in the ThreadsInTeam will be shown in a thread list,
and that only threads marked as loaded_in_global_threads are being shown
in the All threads tab in the list.
So when a thread arrives through different means, whether it's a WS event,
or just fetching a (*new) thread by opening it in a channel, etc...
we'll need to check if it's newer than any of the existing threads in the all threads list.
If it is it will be added in the ThreadsInTeam and will be marked as loaded_in_global_threads: true.
If it's not newer but it is an unread thread it will still be added in the ThreadsInTeam
but marked as loaded_in_global_threads: false.
This commit refactors `loaded_in_global_threads` field from the Thread table
to the ThreadsInTeam table so that the above is possible.
* Update tests
* Addresses review comments
* added remote_id to user table schema
* update user model to accomodate for remote_id field
* transform - reaction - split into its own file
* update user transformer
* update isShared function
* Fix typescript
* make remote_id field optional
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Adds threads in team database table and handlers
DM/GM channels have no team ID. This makes it troublesome to paginate
threads in a team. The issue is that whenever a DM/GM thread is fetched
from pagination it will be added in all teams in that server,
potentially creating gaps in between threads for those teams.
This PR inserts a new table in the DB ThreadsInTeam which will hold
references of threads loaded in which server.
Thread lists then would have to rely on that table to show threads.
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
Co-authored-by: Avinash Lingaloo <avinashlng1080@gmail.com>
* Extract common observers to queries
* Separate also queries and more agressive refactoring
* Use query to avoid throws from findAndObserve
* Fix minor error
* Address feedback
* Address feedback
* Address feedback
* Fix model types
* Address feedback
* Database init
* Naming fix
* naming misc
* Fix test
* Added Thread Tab columns, Team Threads Count table and other changes
* Test case fix
* Test cases fix ...... AGAIN
* TS fix
* Removed loaded_in_all_threads_tab, loaded_in_unreads_tab
* Removed TeamThreadsCount table, mention & message root counts & added loadedInGlobalThreads flag
* Type changes, added delete thread with post
* Removed unused type
* Reverted relationshio of post with thread
* Calling thread destroyPermanently from post
* Removed unused table name variables
* added THREAD constant table in post model and fixed a few comments
* Misc typo fix and code clean up
* Added test case and related to participant in user model
* test cases fix
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* remove empty roles before fetching
* Fix prepare delete teams, channels and posts so they don't throw
* Fix reaction operator and moved some handlers to their correct file
* include delete categories when teams or channels are deleted
* Remove unused array in fetchRoles
* fix param comment for reactions handler
* don't sync preferences when getting the WS event
* Gallery screen (ground work)
* Open the gallery from posts
* Open the gallery from post draft
* feedback review
* Feedback review 2
* do not remove dm channel names and localization fix
* update to the latest network-client
* do not override file width, height and imageThumbail if received file does not have it set
* bring back ScrollView wrapper for message component
* Remove Text wrapper for markdown paragraph
* Fix YouTube play icon placeholder
* Make video file play button container round
* Add gif image placeholder
* Save images & videos to camera roll
* Feedback review 3
* load video thumbnail when post is in viewport
* simplify prefix
* Wip
* update name so it references changing the reaction on a post
* handleAddEmoji -> handleAddCustomEmoji
* add remove reaction logic
* sanitizeReactions
* use skipSync to return early if not deleting any records that are
not in the server db
* return the filtered delete results and have the handler destroy the
records
* fix lint
* use forEach instead of map.
* PR feedback
* PR feedback
* Update app/actions/websocket/reactions.ts
* remove console.log
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Manage user websocket events
* Revert ChannelMembership -> MyChannelMembership
* Address feedback
* Update channel display name when the user changes
* Minor name and refactoring changes from feedback
* Address feedback
* Address feedback
* Add line breaks for readability