* Add AppsForm and Interactive Dialogs
* Add the missing plumbing for Interactive Dialogs and minor fixes
* Remove widgets subfolder
* Fix paths
* Address feedback
* Address feedback
* i18n extract
* Only set the dialog if we are in the same server
* Global threads
* Added translations
* User avatar stack
* In-Channel experience
* Misc Fixes
* Fixed fetchPostThread & added observer
* using the observable for participants & check fix
* Test case fix
* Fix tablet view thread screen switching
* No back button for tablets
* folders for thread options only if needed
* Using the existing observable
* Users stack refactor fix
* Reusing the user component
* Refactor fix
* Fixes double loaders when empty threads
* Feedback
* Moved some post options to common post options
* Combined follow/unfollow functions
* Feedback fixes
* Addressing Feedback
* Merge fix
* Threads button component moved
* Addressing feedbackk
* Not rendering message when it's empty, removed unwanted Props exports
* Addressing feedbac
* Updated snapshot
* Added emoji to removemarkdown component
* Moved MD rendering into the component
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: koox00 <3829551+koox00@users.noreply.github.com>
* Sets values on my_channel according to CRT
* Team counts with regard to CRT
* Fixes myChannel.is_unread with regard to CRT
* Include DM/GMs for thread counts on demand
* Incorporate thread mention counts in server/channel
* Channel updates in regard to CRT
* 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
* Use localPath when available
* Revert changes to replace space for dash in the filename
* Rename other action to external and always call onDownloadSuccess if defined
* add missing localization strings
* Add User Mention to autocomplete
* Minor fixes
* Fix at_mention (you) alignment
* Add missing translation strings
* Make it more parallel to channel mentions
* Fix bot tag
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* MM-39710: saved posts screen and DB
- Adds ids of saved posts to the systems table, as we do with recent
mentions.
- Adds a new remote action to fetch saved posts (getFlaggedPosts).
- Adds a new screen to display those in a mobile.
- Displays saved posts in the tablet view next to profile card.
* Uses Preferences instead of System table
Renames to saved posts wherever possible
* Adds text to localization file
* Fixes fetching/saving saved posts
* Refactor mini post to components folder
* Fixes hooks dependencies according to review
* Removes unnecessary 'withObservables'
* Small refactor
* Satisfies linter
* Adds empty state
And fixes empty state icon to be theme sensitive.
Both recent_mentions and saved_posts.
* Fixes empty screen's alignment
* Add missing preference
* add missing translation strings
* remove unused database type definition
* Fetch newly saved post
* Fix return type for client.getSavedPosts
* Remove usage of lodash compose
* Rename get remote actions to fetch
* Include close button for savedPost modal
* fix tablet view for SavePosts and use lottie loading indicator
* Render post with content for save posts and recent mentions
* post list viewable items type definition
* Add layout width to post content for saved post screen
* Use PostWithChannel and viewableItems for saved posts and recent mentions
* Layout margin of 20
* openGraphImage margin
* Fix openGraphImage display
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Add Create DM screen
* Add channel toggle and minor improvements
* Fix tests and apply new UI
* Address feedback UX feedback and fix missing menu item by adding another item height
* Add display name to channels and piggyback improvement on fetchUserByIds action and translations fix
* Address feedback
* Fix hardcoded colors
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Support Markdown svg and custom size inline images
* remove commonmark patches
* move getMarkdownImageSize to @utils/markdown
* Fix worklet not present while running unit tests that use calculateDimensions
* Set max size for SVG
* Set svg dimensions based on calculated size
* feedback review
* 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
* Edit Server display name
* Lock iPhone to portrait and iPad to landscape
* Create actions for app global to store device token and multi server tutorial
* Add MutliServer tutorial on first use
* WebSocket reconnection priority
* have isRecordGlobalEqualToRaw to not check for value
* Return early on edit server if error is found
* Prepopulate server screen with last logged out server address and name
* Add CompassIcon to circleCI asset generation
* Servers logout and websocket state
* addNewServer uility and rename file
* add LaunchType for add new server
* added time to LaunchProps type
* Remove unnecessary props for launchToHome
* Fix local action updateLastPostAt
* Batch fetchProfilesPerChannels requests in chunks of 50
* WS handleUserAddedToChannelEvent to return early if no channelId is set
* WS handleNewPostEvent to batch update last_post_at
* add common actions to sync other servers
* Entry actions to sync other servers data
* Do not attempt to fetch notification data if payload does not contain a channelId
* Set database as default at the end of the login flow
* Handle logout when other servers remain
* Handle Server options
* Show alert when logging out from the account screen
* Add workaround to have Lottie animate the loading component
* Fix badge position in ServerIcon component
* Server screen to support adding new server
* Fix login screen to display error when credentials do not match
* add localization strings
* fix DatabaseProvider to update on server switch
* Fix home icon and server icon subscriptions and badge display
* Add dependencies to onLogout callback
* feedback
* Only updateLastPostAt if needed
* Specify the screen to be dismissed from the bottom sheet on tablets
* reposition unread badge on server icon
* Skip setNavigatorStyles and set correct theme for login flow screens
* Fetch current user status with fetchMe and when the WS connects
* switchToChannel skip setting current channel if id is the same
* ChannelMention component to use switchToChannelById instead of switchToChannel
* loginEntry only set initialChannel if isTablet
* deferredAppEntryActions mark channel as read and fetch channel stats if initialChannel is set
* feedback review
* feedback review
* Add Channel Browser screen
* Fix tests
* Fix lint
* Address feedback
* Fix test
* Remove cancel and fix bottom sheet size
* Address feedback
* Address feedback
* Keep loading when not many items are visible.
* Separate search_handler from browse channels
* Search channels directly instead of filtering from the loaded
* Address feeback
* Reduce the size of search_handler.tsx
* Add title and closeButtonId to bottomSheet
* Let the default value be public and set it before the if
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Initial commit post input
* Fix message posting, add create direct channel and minor fixes
* Fix "is typing" and "react to last post" behaviour
* Some reordering, better handling of upload error, properly clear draft on send message, and fix minor progress bar misbehavior
* Add keyboard listener for shift-enter, add selection between video or photo while attaching, add alert when trying to attach more than you are allowed, add paste functionality, minor fixes and reordering
* Add library patch
* Fix lint
* Address feedback
* Address feedback
* Add missing negation
* Check for group name and fix typo on draft comparisons
* Address feedback
* Address feedback
* Address feedback
* Address feedback
* Fix several bugs
* Remove @app imports
* Address feedback
* fix post list & post draft layout on iOS
* Fix post draft cursor position
* Fix file upload route
* Allow to pick multiple images using the image picker
* accurately get the channel member count
* remove android cursor workaround
* Remove local const INPUT_LINE_HEIGHT
* move getPlaceHolder out of the component
* use substring instead of legacy substr for hardward keyboard
* Move onAppStateChange above the effects
* Fix camera action bottom sheet
* no need to memo SendButton
* properly use memberCount in sender handler
* Refactor how to get memberCount
* Fix queryRecentPostsInThread
* Remove unused isDirectChannelVisible && isGroupChannelVisible util functions
* rename errorBadUser to errorUnkownUser
* extract localized strings
* use ClientErrorProps instead of ClientError
* Minor improvements
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* 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>
* feature edit profile screen
* minor refactoring
* Apply suggestions from code review
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* ts fixes
* revert floatingTextInput label
This reverts commit a778e1f761.
* code clean up
* Apply suggestions from code review
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* code fix
* code fix
* Adding preventDoubleTap
* rename id to fieldKey
* Update edit_profile.tsx
* wip
* navigating through fields; partly done
* navigating through fields - partly done
* navigating through fields; partly done
* completed field navigation
* added theme into dependency array
* code clean up
* revert conditions for disabling fields
* Added colorFilters prop to Loading component
* Completed loading feature on Edit Profile screen
* code clean up
* Add profile_error
* renamed valid_mime_types to valid_image_mime_types
* added props isDisabled to email field
* refactored next field logic
* fix
* fix
* code clean up
* code clean up
* Updated ESLINT hook rules to warning instead of disabled
* code fix
* code fix
* new line within your_profile component
* added memo for Field component
* added canSave to dependency array
* update loading component - color filter
* Update app/screens/edit_profile/edit_profile.tsx
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* dependency fix
* fix to fetch my latest status
* fix to remove unnecessary user id for local action updateLocalUser
* prevents bouncing for iOS
* code revert
* Adding textInputStyle and animatedTextStyle to FloatingTextInput component
* correction after dev session
* adding changes as per new ux
* Update edit_profile.tsx
* corrections after ux review
* ux review
* ux review
* code clean up
* Adding userProfileFields into useMemo
* Add enableSaveButton to dependency of submitUser
* Added react-native-image-picker
* fix picker util
* Added action for setDefaultProfileImage
* account outline on remove picture
* Update edit_profile.tsx
* fix image picker
* style fix
* fix image picker
* removed unused types
* mmjstool issue with integrity checksum
* perform camera permission check for Android
* fix to pull latest status
* updated ChangeProfilePicture to EditProfilePciture
* removed integrity key for mmjstool in package-lock.json
* corrections from pr review
* bumping react-native-image-picker to v4.7.1
* pod install
* update to hooks dependency
* fix profile picture component
* added event emitter from edit_profile_picture
* made hitslop a constant
* code clean up
* uploadProfilePicture as a remote action
* else if profileImage removed
* removed check on isBot
* update renderProfilePicture dependencies
* extractFileInfo with try catch
* updated snappoints
* Revert "updated snappoints"
This reverts commit 6d16d480a1.
* profile picture size
* refactored renderProfilePicture into its own component
* change to if else
* platform select for hasPermissions
* unneeded comment removed
* else if on prefix in edit profile picture
* track has update user info now
* moved image_picker under edit_screen and increased actionSheets item height
* added preventDoubleTap for imagePicker
* multiple uploads
* switch the conditions
* added alert box as requested by Marina
* Revert "added alert box as requested by Marina"
This reverts commit 20735c17a8.
* Apply suggestions from code review
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* removed userInfos constant
* added useMemo for certain components on profile_picture
* converting account-outline into a constant
* added panelItem component
* adding return instead of making the function return
* eslint fix
* update i18n desc
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* hasPictureUrl transferred to file utils
* removing excess mediaType prop
* add USER_PROFILE_PICTURE_SIZE into constant/profile
* relocate hasPictureUrl method
* relocate hasPictureUrl
* rename ImagePicker to ProfileImagePicker
* removing isDestructive property from panelTypes.
* update sectionLimit for attachFileFromPhotoGallery
* Change animation for showModalOverCurrentContext to a quick alpha on iOS
* re-create PickerUtil if intl changes
* Combine styles in edit_profile_picture component
* Split profile image component into smaller components
* useCallback for showFileAttachmentOptions
* split comment into multiple lines
* edit_profile group refs
* remove unnecessary casting
* add new line to file.d.ts
* remove extra space for utils/index.d.ts
* allowMultiSelection for attachFilesFromFiles, default is false
* Split edit profile screen into smaller components
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Handle post related websocket events
* Address feedback and several fixes
* Fix lint
* Address feedback
* LastPostAt as latest post create_at, and lastViewedAt as date.now()
* Address feedback
* Change database for operator and add type imports
* 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