Commit graph

376 commits

Author SHA1 Message Date
Elias Nahum
de57c343f0
MM-55621 fix layout for tablets and foldables (#7697)
* MM-55621 fix layout for tablets and foldables

* feedback review
2023-12-05 11:08:43 +08:00
Harshil Sharma
9ff24a8551
Merge pull request #7682 from mattermost/gm_conversion_on_reconnect_handler
[MM-55463] GM conversion reconnect handler
2023-11-29 09:25:02 +05:30
Caleb Roseland
79d7c628e4 Merge branch 'main' into MM-53902-cont 2023-11-27 15:09:55 -06:00
harshil Sharma
3c6638f474 Optimized the number of calls to fetchMyChannelsForTeam 2023-11-27 15:22:50 +05:30
harshil Sharma
878ed5673c nit fix 2023-11-24 11:17:12 +05:30
harshil Sharma
28949d5605 Merge branch 'main' into gm_conversion_on_reconnect_handler 2023-11-23 11:17:30 +05:30
harshil Sharma
58fc869d70 Added onReconnect handling for converted GM 2023-11-23 10:40:49 +05:30
Caleb Roseland
a3b811dcfb refactor 2023-11-22 17:49:35 -06:00
KyeongSoo Kim
1a59bd9e0e
[MM-42586] Reaction toggle behavior (#7674) 2023-11-22 21:05:58 +08:00
harshil Sharma
72d513987c fixes 2023-11-16 13:20:41 +05:30
harshil Sharma
4af2ad2f69 review fixes 2023-11-15 14:13:55 +05:30
harshil Sharma
7106c1807b Somre review fixes 2023-11-10 16:14:11 +05:30
harshil Sharma
34567cb74e Cleanup 2023-11-09 17:23:48 +05:30
harshil Sharma
4138a202f2 removed debug logs 2023-11-07 13:10:22 +05:30
harshil Sharma
082b3c7f1e Handled websocket notification race condition 2023-11-07 11:39:16 +05:30
harshil Sharma
ea34873d5f Handled category updates 2023-11-03 15:46:52 +05:30
harshil Sharma
bf2fd6594d WIP 2023-11-01 18:15:05 +05:30
harshil Sharma
761fcc8ab5 WIP 2023-11-01 10:29:31 +05:30
harshil Sharma
67f6740be4 Making conversion API call 2023-10-30 18:33:19 +05:30
harshil Sharma
a717ea520f WIP 2023-10-20 15:57:00 +05:30
harshil Sharma
6b0de22824 Merge branch 'main' into gm_to_channel 2023-10-18 11:33:45 +05:30
harshil Sharma
a5039fccc8 Created screen 2023-10-16 16:05:59 +05:30
Daniel Espino García
a3eeb69277
Goodbye, GraphQL (#7597) 2023-10-16 10:13:16 +02:00
Caleb Roseland
5811b34b75 remove log 2023-10-04 15:35:14 -05:00
Caleb Roseland
cdbafea607 fix: editing DM/GM channel header 2023-10-04 11:22:58 -05:00
Daniel Espino García
0a78b1d804
Fix posts not showing on permalink view (#7531) 2023-09-04 09:52:12 +02:00
Daniel Espino García
4767c28ae4
Avoid unneeded group fetches (#7482) 2023-08-07 09:43:46 +02:00
Daniel Espino García
ff601982b9
Add some performance improvements (#7481)
* Add some performance improvements

* fix tests
2023-08-07 09:43:00 +02:00
Daniel Espino García
8a32588507
Fix DMs in sidebar (#7468)
* Fix DMs in sidebar

* Properly handle view, show and open preferences

* Refactor openChannel to keep similar logic together
2023-08-02 11:51:33 +02:00
Elias Nahum
3effecd6a4
match desktop search and highlight results (#7445) 2023-07-18 12:17:19 -04:00
Daniel Espino García
0a3f5e5914
Fix problems related to closing react but keeping other state (#7405) 2023-06-28 12:49:58 +02:00
Daniel Espino García
cffe80b442
Fix fetching unreads from archived channels, fetching groups on unlicensed servers and logs (#7406) 2023-06-20 13:52:05 -04:00
Daniel Espino García
21a4f606b4
Add badge to thread screen (#7404)
* Add mention badge to global threads and threads screens

* Tablet fix

* Remove changes on Thread screen
2023-06-20 09:37:24 +02:00
Daniel Espino García
8647d948db
Fix bad use of updatelocaluser on fetchChannelMember (#7381) 2023-06-02 15:30:36 +02:00
Elias Nahum
0d743bb286
conditionally set the current user status (#7383) 2023-06-01 12:40:33 -04:00
Daniel Espino García
5d20b26b73
Add license checks to several groups calls (#7369) 2023-05-24 12:29:48 +02:00
Daniel Espino García
c99861d728
Use message source on post edit (#7325)
* Use message source on post edit

* Fix tests and bugs
2023-05-11 14:18:07 +02:00
Daniel Espino García
162cdfb21d
Handle currentUser not available throught the app and refetch it (#7333)
* Handle currentUser not available throught the app and refetch it

* Address feedback
2023-05-05 15:40:59 -04:00
Elias Nahum
34df44ab53
Always let the server set the create_at timestamp (#7323) 2023-05-04 02:34:17 -04:00
Daniel Espino García
86658edc30
Refactor errors around the app (#7306)
* Refactor errors around the app

* Fix recursive function

* Fix tests
2023-05-03 13:08:55 +02:00
Daniel Espino García
30706382a0
Improve post chunk handling (#7309)
* Improve post chunk handling

* Remove unneeded merge and improve post list handling

* Fix unneeded requests

* Address feedback and fix lint
2023-04-27 16:04:46 +02:00
Kyriakos Z
ab4f65020a
[MM-49540] Message Priority Phase 3 (#7142)
* Init

* i18 and types

* Acknowledge button, api

* Ack button + display ackd users

* Saves priority on draft and addresses some comments

* Addresses review comments round 2

* Moves fetching userprofiles upon opening ACKs

* Adds metadata column in drafts table

+ Addresses some more review comments.

* Small refactor according to review comments

* Addresses some review comments

* Addresses some review comments

* Uses local action when ACKing

* Fixes first time selecting priority and other

* Updates snapshots

* Fixes i18n

* Fixes ts errors

---------

Co-authored-by: Anurag Shivarathri <anurag6713@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2023-04-27 11:22:03 +00:00
Elias Nahum
58d1b02d3a
Fix the query undefined comparison when threadId prop is not set by the navigation library (#7302) 2023-04-21 12:27:51 -04:00
Elias Nahum
784b05fe97
Upgrade Dependencies (#7299)
* upgrade reanimated

* update devDependencies

* upgrade react-intl

* update react-native and some dependencies

* update react-native-permissions

* update RN

* use Share sheet for Report a problem

* update Sentry

* remove step to downloadWebRTC

* update detox deps

* feedback review
2023-04-21 12:16:54 -04:00
Tanmay Vardhaman Thole
265c4fe8a6
[MM-42565] Toast - Follow/Unfollow thread with undo functionality (#7267) 2023-04-14 12:28:03 -04:00
Daniel Espino García
77095b1034
Add members (#7220)
* Add "Add members" modal

* Refactor into server user list

* Renaming and fixes

* Address feedback

* Add missing change

* Styling fixes for iOS
2023-03-30 11:58:50 -03:00
Ashish Dhama
d25e74bb49
Merge pull request #7227 from mattermost/MM-44655_add-files-count-column-in-channel-info-table
[MM-44655 ]: Add files_count column in ChannelInfo table and DB migration
2023-03-29 23:04:54 +05:30
Daniel Espino García
db18151a67
Add debug logs (#7225)
* Add debug logs

* Fix lint
2023-03-22 08:41:59 -03:00
Ashish Dhama
763df58ef8 add files count column in channel info table and db migration 2023-03-22 15:36:57 +05:30
Elias Nahum
ef4fb9c8e0
fix entry for tablets (#7179) 2023-03-02 16:52:54 +02:00
Elias Nahum
d61fbd3180
Various fixes (#7161)
* Save message draft when post input is unmounted

* Fix switch CRT on/off

* Handle iPad on Stage Manager

* iOS Share Extension to use LRU cache instead of file cache

* Support building android as aab

* use handleReconnect instead of appEntry on handleCRTToggled

* show skin tone selector tutorial after running all interactions

* Update app/actions/remote/preference.ts

Co-authored-by: Daniel Espino García <larkox@gmail.com>

* fix lint

---------

Co-authored-by: Daniel Espino García <larkox@gmail.com>
2023-02-24 13:02:05 +02:00
Daniel Espino García
9f84ab79ce
Only call app entry on websocket reconnect (#7065)
* Only call app entry on websocket reconnect

* Handle notification on its own entry and run app entry on websocket initialization

* Fix notification entry issues

* Fix login entry and add retry on entry failure

* feedback review

* Put back handleEntryAfterLoadNavigation before the batching

---------

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2023-02-23 10:11:34 +01:00
Daniel Espino García
5cdcbfb12a
Fix Group Message member count on GraphQL scenario (#7151)
* Fix Group Message member count on GraphQL scenario

* Fix lint

* Use fetchProfilesInGroupChannels instead of fetchMissingDirectChannelsInfo

* Use reduce instead of filter map

* Simplify using set in the reduce
2023-02-22 10:12:58 +01:00
Sudhanva-Nadiger
4416a61a77
fix: reset password bug (#7135)
* fix: reset password bug

* add suggested changes
2023-02-16 12:09:12 +02:00
Elias Nahum
6def5d9610
Process notifications when the app is in the background and other perf improvements (#7129) 2023-02-15 17:08:19 +02:00
Daniel Espino García
980c31f40f
Remove watermelondb limitation on updating an already updated model (#7067)
* 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>
2023-02-03 17:11:57 +02:00
Anurag Shivarathri
fab5665773
Fix (#7082) 2023-02-03 15:08:51 +05:30
Jason Frerich
218f98e3e0
[Gekidou - MM-47653] Implement Manage Members Screen (#6771)
* move user_list to component

* start the modal from create_direct_message

* initial commit

* Add managing options to user profile

* s/showManage/showManageMode/

* simplify

* use helper functions

* add dependency

* fix togglling manage/done button

* remove close button in navbar

* remove close button. The only exit from this screen is the back button

* utilize LeaveChannelLabel component actions

* nit

* nit

* slight refactor

* return earlier if not showManageMode

* use defineMessages

* don't modify leave channel component

* add manage_members_label component

* rename variables to imply manage actions

* remove user from channel on server and locally in channel membership

* prevent managing yourself. In V1, this is done by not allowing you to
select yourself for channel removal

* remove useReducer

* - fix typography
- fix icon size
- don't allow tapping on yourself in manage mode

* sort props

* sort props

* sort props

* - combine try blocks
- use getServerDatabaseAndOperator function to get the operator

* fetchChannelStats after removing users from a channel

* currently, the UI does not provide a need to remove multiple members
from a channel, only one member. modify the function to only accept and
remove one user

* no need to pass the entire channel object. only need the channelId which
is already passed into the screen

* do not pass the entire user model, only the userid and if user canManage
  (is sysadmin or channel admin)

* move members constants to its own file and out of general.ts file

* pass channel displayName instead of the entire channel object

* not need to store the user as it is already in the store from the
fetchProfilesInChannel call

* implement device emitter to notify the parent to remove to the user from
the user list

* rename constant in reveal removing a member from a channel.  Might need for another team removal later.

* add snackbar after user is removed

* remove unnessary filter

* remove paging. Server response is not paginated
deconstruct intl

* create EMPTY const

* simplify getProfiles function

* move constants to top of file

* add function to remove the user from the server

* clean up dependencies

* remove @app/ prefix from imports

* add comment describing reason for switch / case

* rename varaible to be more intention revealing

* calculate isDefaultChannel and pass in as prop so don't need to
query for each user

* if user cannot manage, do not show the manage nav button

* move options const into function that uses it

* have the caller of handeRemoveMemberFromChannel fetch channel stats, not
the action

* nit formatting

* s/canManage/canManageMembers/

* use existing observeCanManageChannelMembers function
function only requires channel id

* move userInfo and manage user options to their own components

* calculate bottom sheet snap points when in manage mode

* implement correct permissions for managing users.  For now, only channel
admins can manage users (including deleting members)

* working on section creation

* use map instead of arrays

* - handle user profile sections differently when in members are provided (manage mode)
- emit event when user role is changed
  - modify the channelMembers in manage members modal after changing
    user role

* remove commented code

* deconstruct options

* sort dependencies and add loading dependency

* - when removing a user, remove them from channelMembers state also
- don't add empty sections to the user list results

* user profile coming from ManageChannelMembers is UserProfile joined with
their ChannelMembership.  Can now check for scheme_admin to see if the
user is a channel admin

* deconstruct locale from intl and remove intl const

* Add SearchUserOptions type to provide type checking when creating options for searchProfile
action and searchUsers client api

* correct comment

* deconstruct MANAGE_OPTIONS

* Remove unused event constant

* nits

* Push header title in to the UserProfileTitle component

* Put constants back so Diff of file is smaller

* Combine switch statements
Remove isOptionItem.  These are always action items

* Wrap onAction in a usecallback

* Add help comments

* Add i18n to section titles

* Create RenderItemType for renderItem callback

* update testID
update snapshots

* CanManageMembers is deterimined by observeCanManageChannelMembers

* Add members chanenl option

* Update after merge

* Sort in order of options shown

* nit refactor

* Modify client getProfilesInChannel allow passing more options than sort.
- sort the profiles by admin
- do not show deactivated users in the manage members modal

* Profiles are now sorted by admin.  We can maintain the alphabetical sort
also by iterating over the profiles instead of members which are not alphabetical

* Type the get users Api object

* Add type.
Active option is a boolean, not a string

* only initialize if needed. Moved inside the check for members

* Create type for Manage Member Options

* Remove one liners and call directly in the switch block

* Keys to the map do not need to be translated. Only translate the title
Place the Admins section always on top

* Add removeFromChannel as a dependency

* Remove manageMode option from the title component
- add imageSize prop
- add headerText prop

* Do not show deactivated users in search

* When users are showing and not in manage mode, allow the user to tap and
open the profile for the user (in non-manage mode)

* Add fetchOnly to getMemberInChannel function
Add fetchOnly to updateChannelMembersSchemeRoles function
Remove getMemberInChannel from handleUserChangeRole in manage_channel_members because it is already called via updateChannelMembersSchemeRoles

* Remove todo from comment

* Don't use state for defining action text, icon, and isDestructive. just
set them based on the prop value manageOption

* Added correct permission check for can user manage member roles

* Add can manage member roles prop

* Calculate snap points based on manageMemberRoles prop

* Calculate snap point based on if user can remove other users

* Do not show options if you cannot remove or manage members

* Fix post merge issues

* No need to batch because only manipulating a single model

* Remove comment

* Rename variable

* Split and sort props into multiple lines for readability

* Nit

* Make dependency more specific

* Remove comment.  Doing this requires writing a custom search function in
the app that would need to guarantee the same results as a server call

* Add logError to functions with catch

* Add ticket reference

* Remove await from functions that are updating the database.  Components
that observe models these modify will get the update based from the
observable change.

* Keep track of which section is first so that the tutorial highlight
selects the first user profile of the first section

* Add a second user that creates a new section for testing tutorial

* Remove unused prop

* Update snapshot to include second user

* Use getServerDatabaseAndOperator

* remove testID change. Added a ticket to fix later

* Revert tests to only one user to test if previous tests worked

* Add new test that has 2 users

* Add ticket context as comment

* Add channelId as dependency

* Use useCallback for updateChannelMemberSchemeRole

* Remove async

* mounted.current should only be used in an effect that executes on the
first render

when user has permission to manage members changed, there is no need to
get the profiles again

* Add await for function

* Always reset loading to false after getting profiles

* use !text instead of const value using Boolean()

* add dependency

* Add manage members ids back

* When fetching users for the channel, always store them in the database.
Otherwise tapping a user might not be in the database and tapping on
them will cause a crash

* Fetch the user profile from the server when opening the user profile

* Checking management permissions should be based on the current user, not
the user of the profile being opened

---------

Co-authored-by: Avinash Lingaloo <avinashlng1080@gmail.com>
2023-02-03 10:42:12 +02:00
Elias Nahum
c9b56e55c4
Only fetchMissingDirectChannelsInfo when no display name is set (#7060) 2023-01-31 22:01:57 +02:00
Elias Nahum
64a59aad55
Filter unused preferences (#7015)
* small preferences refactor

* filter unused preferences and fix removal of preferences in the db

* Feedback review
2023-01-30 21:00:19 +02:00
Elias Nahum
7aa5bd0611
Update Dependencies and bug fixes (#7000)
* update dependencies

* update dependencies

* feedback review

* update @mattermost/react-native-turbo-mailer
2023-01-24 09:14:23 +02:00
Julian Mondragón
ba33f610c1
Merge pull request #6877 from julmondragon/MM-42835
MM-42835_Invite People - add email+user invites
2023-01-23 16:26:12 -05:00
Julian Mondragon
50200a0ce2 MM-42835_Invite People - add email+user invites 2023-01-23 14:40:33 -05:00
Anurag Shivarathri
eb46a6aeff
[MM-47548 Gekidou] Data Retention Implementation (#6732)
* Fetch & Save granular data retention policies through REST

* Init Data cleanup

* Run the clean up

* Deleting posts in patches and running across other servers

* fetch on graphql & refactor

* Feedback changes

* Added try catch for deletePosts function

* Feedback changes

* Changed to 'for of' loop

* Misc

* app/actions

* Date cutoff fox

* Prevent showing loading bar when request fails

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2023-01-21 16:04:19 +05:30
Julian Mondragon
3e4851e6fa MM-42835_Invite People - add email+user invites 2023-01-20 12:44:31 -05:00
Julian Mondragon
29a66bbc19 MM-42835_Invite People - add email+user invites 2023-01-19 17:18:51 -05:00
Julian Mondragon
5816406040 Merge branch 'main' of https://github.com/mattermost/mattermost-mobile into MM-42835 2023-01-15 16:40:21 -05:00
Elias Nahum
612fd5022f
New UI for Emoji picker (#6933)
* BottomSheet migration to react-native-bottom-sheet

* Refactor Emoji picker to use bottom sheet

* Add skin selector

* Add Emoji Skin Tone tutorial

* add selected indicator to tone selector

* feedback review

* show tooltip after 750ms

* ux feedback review

* ux feedback review #2

* Hide emoji picker scroll indicator
2023-01-12 13:38:44 +02:00
Elias Nahum
bb351c7376
Fix some issues found by Sentry (#6962) 2023-01-12 11:01:59 +02:00
Elias Nahum
4199b13843
Bump build number to 450 (#6950)
* Fix upgrade path

* Introduce Upgrade helper

* Reset server database schema version to 1

* Enable release builds on the CI

* Bump build number to 450
2023-01-11 21:40:49 +02:00
Julian Mondragon
a9a9c00860 MM-42835_Invite People - add email+user invites 2023-01-09 12:33:51 -05:00
Elias Nahum
977bcd2b42
Fix sentry inner crash and have watermelon report in which table it cannot update records with pending changes 2023-01-07 12:49:48 +02:00
Elias Nahum
0c4e554534
Use Promise.allSettle when fetching emojis (#6921) 2023-01-03 23:45:50 +02:00
Julian Mondragon
5bf0bbbea0 Merge branch 'main' of https://github.com/mattermost/mattermost-mobile into MM-42835 2023-01-03 09:24:09 -05:00
Elias Nahum
312c019841
Fix unarchive action (#6920) 2023-01-01 22:53:21 +02:00
Elias Nahum
3f90444698
Notifications profile images (#6904)
* Add profile images to ios notifications

* Avoid marking channel as viewed when tapping a notification
2022-12-24 00:21:08 +02:00
Daniel Espino García
b1e4403768
Fix several issues around team join (#6863)
* Fix several issues around team join

* Open in modal and fix channel list

* Add joining states and fix issues

* i18n-extract

* add specific message for group related failures on joining teams

* Address feedback

* Address feedback

* Use error from server response
2022-12-23 14:43:59 +02:00
Elias Nahum
b01a5bfab8
use matchDeepLink result for relative links (#6882) 2022-12-20 11:42:02 +02:00
Daniel Espino García
315e2c276f
Fix terms of service (#6879)
* Fix terms of service

* Close terms of service when they are accepted
2022-12-19 21:57:01 +02:00
Daniel Espino García
191a640007
Show loading only when team channels are being loaded (#6872)
* Show loading only when team channels are being loaded

* Fix tests

* Remove unneeded event

* Refactor into using hooks
2022-12-19 12:25:23 +01:00
Anurag Shivarathri
724d72d98a
[MM-47483] Activity Indicator while loading thread posts (#6865)
* Fix

* Addressing feedback

* Disabled pull to refresh when thread is being fetched

* Test fail fix

* Feedback changes
2022-12-17 01:15:22 +05:30
Elias Nahum
e294b07418
Add DeepLink support (#6869) 2022-12-16 18:57:15 +02:00
Julian Mondragon
a476b53d5f MM-42835_Invite People - add email+user invites 2022-12-16 10:45:48 -05:00
Daniel Espino García
8a8a888420
Fix issues when removing a user from a team (#6855) 2022-12-09 21:08:45 +02:00
Anurag Shivarathri
7f7bfd7b72
[MM-48926] Fetch new thread posts on websocket reconnect (#6844) 2022-12-09 20:17:34 +02:00
Anurag Shivarathri
d019f06c0b
CRT remove feature flag (#6848) 2022-12-09 15:31:31 +05:30
Elias Nahum
d676568c61
Refactor NavigationStore (#6842) 2022-12-07 16:44:21 +02:00
Daniel Espino García
fe4a0a28f4
Improve entry logic to manage user interaction while fetching (#6818)
* Improve entry logic to manage user interaction while fetching

* Cleanup and address feedback
2022-12-07 14:30:24 +01:00
Christopher Poile
eae0a15b16
MM-48753 - Calls: GA requirements (#6814)
* calls GA requirements

* clarifying comments; simplify ephemeral message (move it to the server)
2022-12-02 11:34:37 -05:00
Daniel Espino García
a3489d9674
Start spinner on websocket reconnect (#6815) 2022-12-02 15:18:02 +02:00
Daniel Espino García
33b2cb6623
Check if group exist before fetching the mention (#6816) 2022-12-02 15:15:23 +02:00
Anurag Shivarathri
0e5d63a7c3
[MM-48375 Gekidou] Threads Sync Fix (#6788)
* 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>
2022-12-01 21:38:27 +05:30
Elias Nahum
e6af1e116b
Fix categories where a previously deleted category was not removed (#6808) 2022-12-01 16:28:51 +02:00
Elias Nahum
6eadc527bb
Gekidou Android share extension (#6803)
* Refactor app database queries to not require the app database as argument

* Android Share Extension and fix notifications prompt

* feedback review
2022-11-30 23:18:56 +02:00
Michael Kochell
c1f480de31
App framework - Post menu and channel info bindings, App forms (#6735) 2022-11-30 21:25:08 +02:00
Daniel Espino García
fe52fcaab6
Add terms of service (#6777)
* 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>
2022-11-24 19:58:56 +01:00
Daniel Espino García
5fae120826
Add support for review app (#6772)
* Add app review

* Use overlay instead of modal

* Add fixes for ios

* i18n-extract

* Add to milliseconds function

* Address review feedback

* Add try to queryGlobalValue

* added app review illustration

* add feedback illustration

* Add animations and feedback bot message

* Restrict reviews to build environment variable

* Fix bug with "dont ask anymore"

* Add check for only supported servers

* Add missing change

* Use for await

Co-authored-by: Daniel Espino <danielespino@MacBook-Pro-de-Daniel.local>
Co-authored-by: Matthew Birtch <mattbirtch@gmail.com>
2022-11-24 18:52:15 +01:00
Elias Nahum
2a6bb1ddc1
[Gekidou] Show alert message when server is unsupported (#6764)
* Show alert message when server is unsupported

* set server min required version to 5.26.2
2022-11-18 12:18:11 +02:00
Daniel Espino García
1aa4188f8e
Move config to its own database table (#6744)
* Move config to its own database table

* Address feedback

* Fix test

* Revert minimum version related changes
2022-11-11 21:20:42 +04:00
Daniel Espino García
579eb2d4cd
Remove no longer needed todos (#6748) 2022-11-08 20:33:22 +02:00
Daniel Espino García
bb0322321e
Fetch and store bindings (#6660)
* Fetch and store bindings

* Fix navigate and form opening
2022-10-28 17:08:28 -04:00
Daniel Espino García
bb051b83b9
Use always first the local channels (#6594)
* Use always first the local channels

* Fix several race condition related issues

* Remove clean after cursor change

* Address feedback

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Daniel Espino <danielespino@MacBook-Pro-de-Daniel.local>
2022-10-24 10:55:31 +02:00
Elias Nahum
e5d2e1d364
auto update timezone when device changes its location (#6691) 2022-10-20 10:18:41 -03:00
Daniel Espino García
b90eaefcc0
Remove not member teams on startup (#6688) 2022-10-20 11:31:37 +02:00
Daniel Espino García
4f4f96ff24
Fix channel links when it implies joining a channel (#6686) 2022-10-18 16:16:06 +02:00
Daniel Espino García
e905f7df29
Fix login not showing the usernames (#6652) 2022-09-22 16:34:12 -04:00
Elias Nahum
4c389a49fa
Gekidou session expired notification (#6639)
* 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
2022-09-18 06:57:55 -04:00
Daniel Espino García
260e1cfde7
Refactor entry to better share between rest and GQL (#6638)
* Refactor entry to better share between rest and GQL

* Address feedback
2022-09-12 12:27:47 -03:00
Elias Nahum
b3ad01d374
disable push notification update post/thread since while in the background 2022-09-03 04:28:31 -04:00
Daniel Espino García
b42710759a
Fix notification entry on graphQL (#6608)
Co-authored-by: Daniel Espino <danielespino@MacBook-Pro-de-Daniel.local>
2022-09-02 07:57:47 -04:00
Daniel Espino García
5c061eac42
Fix loading unreads not stopping with GraphQL (#6601) 2022-08-29 08:52:25 -04:00
Elias Nahum
c2f5092678
[Gekidou] refactor clean notifications (#6566) 2022-08-19 16:29:15 -04:00
Daniel Espino García
ea595f1ced
Fix MM-46309 (#6567)
* Fix MM-46309

* Address feedback

* Update dbPath and rename server databas instead of deleting

* ios fixes

Co-authored-by: Daniel Espino <danielespino@MacBook-Pro-de-Daniel.local>
2022-08-15 10:55:54 -04:00
Jason Frerich
28a52d327f
correct spelling for log messages (#6551) 2022-08-08 10:59:36 +02:00
Daniel Espino García
f4e6917185
Ensure no unresolved types in the definition files (#6521)
* 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"
2022-08-05 14:36:19 +02:00
Jason Frerich
aec0ccb105
[Gekidou MM-44940] Add autocomplete to navigation search (#6516)
* implement so that autocomplete will track the collapsable header

* add search screen

* move autocomplete to it's own view and add zindex to the view so it sits
atop the modifiers and results

* remove unused imports

* - remove console.log
- paddingTop is optional

* remove comments

* remove commented code

* - use a more reasonable zindex value. On more than in Nav Header
- use consts for autocomplete padding top

* remvoe search screen button

* - add dependencies

* - remove search button

* - not needed

* move autocomplete zindex to constant

* - move autocomplete directly below NavigationHeader
- adjust distance from search box

* - remove setXX from dependencies
- remove useMemo because only returning the component

* remove these changes. after placing autocomplete correcting in the
search component, this works as expected

* without this setting, ios has the issue where autocomplete is open,
transparent, and has height.  The user cannot click any modifiers.

* - need usememot for autocomplete
- add isSearch to remote runSearch function as option to hit the search
  for autocomplete API option
- Initial component needs handleTextChange callback to set the
  cursorPosition correctly

* use ternary operator
2022-08-05 16:15:12 +04:00
Anurag Shivarathri
690dd1e66e
[Gekidou MM-42242 MM-46043] Paginating Threads (#6535)
* Pagination and bug

* Feedback and version update

* Making the args optional

* Code refactor
2022-08-04 17:19:55 +05:30
Shaz MJ
793b504b87
[Gekidou] Handle Group Received WebSocket Event (#6524)
* Handles group websocket event

* Fetches data on error
2022-08-01 17:42:49 -04:00
Shaz MJ
986b9b9f7a
[Gekidou] Autocomplete Group Member Count (#6460)
* Adds member_count to groups table

* Handles member count

* Adds elipsis

* UX Feedback, 2:1 displayName:name

* Removes space
2022-08-01 08:06:03 +10:00
Shaz MJ
4b698c7f41
[Gekidou] Saves groups + group-channel for constrained channels (#6358)
* Rebases and addresses PR feedback

* Rebased and addresses PR feedback

* Checks group constraint in action instead

* Update method docs, parallel promises

* Parallel promises, method docs

* Cleans up method docs

* Method docs cleanup

* Update app/database/operator/server_data_operator/handlers/group.ts

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2022-08-01 08:02:15 +10:00
Daniel Espino García
bae5477b35
Graph QL POC (#6024)
* First approach

* Lint

* Fixes and adding monitoring console statements (to be removed later)

* Add pagination and apply graphQL also to login

* Get all entry points to use the same GQL call

* Unify gql handling

* Use graphQL on websocket reconnect

* Handle latest changes regarding categories

* Use graphQL to properly fetch channel members on other servers

* Remove logs and fetch unreads from other teams

* Minor fixes

* Final fixes

* Address feedback, minor refactoring, and fixes around the refactor

* Fix custom status duration types

* Add missing fields and some reordering

* Add timeout to fetch posts for unread channels
2022-07-29 16:28:32 +02:00
Anurag Shivarathri
c4c89a8f05
[Gekidou MM-40096] Permalink view for replies when CRT is enabled (#6494)
* Permalink for CRT

* typo

* Condition refactor
2022-07-22 17:44:39 +05:30
Anurag Shivarathri
102789bbd9
[Gekidou MM-40089 MM-39318] CRT New Messages Line (#6489)
* New Messages Line + More Messages

* Misc

* Update app/actions/local/thread.ts

Co-authored-by: Avinash Lingaloo <avinashlng1080@gmail.com>

Co-authored-by: Avinash Lingaloo <avinashlng1080@gmail.com>
2022-07-22 17:28:14 +05:30
Daniel Espino García
3abaf8893d
Add minor fixes and performance improvements on channel switch (#6469)
* Add minor fixes and performance improvements

* Add comment
2022-07-15 16:04:58 +02:00
Jason Frerich
33d9e6257e
[Gekidou MM-44943] Add team picker to the search screen and results screens (#6455)
* initial check in

* add search value to memoized dependencies in modifier component

* ignore the back press

* UI adjustments from PR feedback

* initial commit

* recent search are getting rendered from WDB

* search terms from the search bar are getting added

* can delete recent searches from WDB from recent searches Options

* will now add new ters to the table and recreate existing terms with new
timestamp

* push for scrollview

* use flatlist instead of scrolview

* s/deleteRecentTeamSearchById/removeSearchFromTeamSearchHistory/

* s/addRecentTeamSearch/addSearchToTeamSearchHistory/

* Fix search to use a flatlist and remove douplicate reference

* fix eslint

* Fix android autoscroll search field to the top

* limit the number of saved searches to 20 for a team.
return the results a team Search History sorted by createdAt

* set display to term for now

* clean up

* clean up

* initial commit

* - From the search screen, you cna now set the team for the search
- Recent searches are saved for the specified team

* fix styling fo icon in modifiers

* - move team picker to its own component and call from modifiers
- will use for results header also

* - show team image if available
- pass optional size to TeamPickerIcon
- add TeamPickerIcon to Resuls Header
- styling fixes

* add team name to recent searches title

* parameter renaming

* fix lint

* fix callback bug that was calling itself

* when changing a team while showing search results:
  - update the search results with new selected team and current search
    term.
  - save the recent search the new selected team TeamSearchHistory for
    that team

* move to bottom for reduction of PR review lines and comparison to
changes in theh component logic

* - add dependencies
- rename function

* fix PR feedback

* - created helper function for bottom sheet with TeamList
  BottomSheetContent
- share the bottomScreen calls from AddTeam and TeamPickerIcon

* Add title back to renderContent of bottomSheet call.  This is needed for
tablets

* remove unnecessary check of selectTeamId.  it will be undefined and fail
the equality check

* - now all team_icons are all radius of 8. Includes the following icons:
  - team picker icon in in search screen
    - each team icon in the search screen bottom sheet team list
  - team picker icon in in search results screen
  - each team icon in the home screen team side bar list
    - each team icon in the join new team bottom sheet team list (from home screen)

* use padding in the width of the header so the margins are extended full
width, and dateline separator of post list does not creep into the
header region

* add smallText prop to team_icon.
- allows using 200 instead of default 400 value.
- 200 is used for the TeamPickerIcon used in the searcha nd results
  headers

* - add dependency back to handle renderItem and allow selecting files or
  messages view
- when handling the search, save the term to the correct team

* adjust styling so the rounded edges appear for the header. Use the
header container height to set the height of the header to 40 and then
set top and bottom margins for the rounded top edge and the bottom
margin to the divider

* use typography

* add title dependency

* update dependencies

* use bottomSheetSnapPoint to get the height of the total items

* rename variable

* Always use Metropolis-SemiBold for the team icon fallback

* use a fragment because there is not styling

* move title inside onPress function and can remove the title as a
dependency

* just use strings for testID

* calculate the observable inside the return object

* - remove const and use string
- correct the name of the testID

* - use more specific dependency value team.id
- add onPress dependency

* move to a constant

* move to a constant

* replace with logical AND

* add all logic for the style to textStyle

* remove the separate divider view and just use the outside container with
bottomBorder with and color

* extend the image vertically in the results

* Fix size of bottom sheet

* Refactor unneeded change

* Minor tweaks

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
Co-authored-by: Daniel Espino García <larkox@gmail.com>
2022-07-15 16:05:58 +04:00
Shaz MJ
f12be07df7
[Gekidou] Saves groups + groupTeams for constrained teams (#6357)
* Rebases and addresses PR feedback

* Update method docs, parallel promises

* Cleans up method docs
2022-07-15 11:02:29 +04:00
Jason Frerich
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>
2022-07-14 12:50:05 +02:00
Avinash Lingaloo
c6795e18fc
MM-45456 - Gekidou LoadingUnreads component keeps spinning (#6453)
* fix animation on LoadingUnreads component

* code clean up

* clean up

* revert change to action/websocket/index

* Update loading_unreads.tsx

* fix loader stop spinning on second server removal

* fix for stopping loader on addition of new server

* Update loading_unreads.tsx
2022-07-08 14:14:35 +04:00
Shaz MJ
dcfc6e7927
[Gekidou] Groups + group-memberships deferred fetch (#6370)
* 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>
2022-07-07 12:20:06 +02:00
Kyriakos Z
b2d838d3da
MM-37110: handle toggling of CRT feature (#6382)
* MM-37110: handle toggling of CRT feature

When a user toggles CRT on/off the app should truncate affected tables,
and re-fetch data.

Truncated tables:
- POST
- POSTS_IN_CHANNEL
- POSTS_IN_THREAD
- THREAD
- THREADS_IN_TEAM
- THREAD_PARTICIPANT
- MY_CHANNEL

After truncation `entry` is called again. We must make sure though that
we save the CRT change before calling `entry` again, or we end up with
infinite recursion.

PS the UI seems to handle the change rather good

* Fixes appEntry and popToRoot

* Small refactor

* Fixes since param on appEntry

* Further refactoring

* Delete unneeded return type

* Removes shouldPopToRoot from appEntry

* Addresses review comments
2022-07-07 12:19:02 +02:00
Daniel Espino García
e481c07630
Fix at mention that triggers ephemeral message (#6458)
* Fix at mention that triggers ephemeral message

* Properly handle failed posts
2022-07-07 12:12:31 +02:00
Anurag Shivarathri
306fbba3a7
[Gekidou MM-44135 MM-44134 MM-40088] Group & Clear channel and thread notifications when CRT is on (#6429)
* Android

* iOS changes

* client changes

* Misc

* Update CustomPushNotification.java

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
2022-06-30 21:26:14 +05:30
Daniel Espino García
82c514013c
Fix links to channels closing the channel (#6446) 2022-06-30 11:13:28 -04:00
Elias Nahum
75ed884e65
Add column last_fetched_at to MyChannel & Thread tables and the migration (#6433)
* 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>
2022-06-29 13:28:50 -04:00
Shaz MJ
f8140f2117
[Gekidou] Groups mentions / highlights in messages (posts) (#6338)
* 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
2022-06-29 07:47:37 +10:00
Elias Nahum
eb10f92875
Fix recent mentions 2022-06-25 08:05:02 -04:00
Daniel Espino García
d2e2cf3ec1
Substitute all console.x by an appropiate log util function (#6427)
* Substitute all console.x by an appropiate log util function

* Address feedback
2022-06-24 10:26:40 -04:00
Avinash Lingaloo
fe3f0cc892
MM-39711 - Gekidou Settings Timezone (#6384) 2022-06-24 06:52:05 -04:00
Daniel Espino García
7f9c653e2e
Fix Status Bar color, and some minor adjustments in the create channel screen (#6414)
* Fix Status Bar color, and some minor adjustments in the create channel screen

* iOS fixes and tweaks

* Revert autocomplete changes

Co-authored-by: Daniel Espino <danielespino@MacBook-Pro-de-Daniel.local>
2022-06-24 06:12:46 -04:00
Daniel Espino García
844f2c0393
Let ServerDatabases type hold undefined values (#6423)
* Let ServerDatabases type hold undefined values

* Avoid model.database
2022-06-22 17:51:28 -04:00
Anurag Shivarathri
b5ff344b64
Mark as unread only if following the thread (#6421) 2022-06-22 23:49:17 +05:30
Elias Nahum
3dfd093ee0
Set theme when opening the app from a push notification (#6398) 2022-06-17 14:52:55 -04:00
Elias Nahum
86a47e0832
Fetch post authors when fetching posts (#6400) 2022-06-17 14:52:25 -04:00
Daniel Espino García
ee3b655991
Fix permalink to not joined channels and to not fetched posts. (#6294)
* Fix permalink to not joined channels and to not fetched posts.

* i18n-extract

* Implement as designed

* Revert unintended change

* Minor fix and fix svgs

* updated svg to fix masking problems and colors

* Fix lint

* Address feedback

* Update join_public_channel.tsx

fixed public channel svg

* Update join_public_channel.tsx

* Update join_private_channel.tsx

* Address feedback

Co-authored-by: Matthew Birtch <mattbirtch@gmail.com>
2022-06-17 19:23:12 +02:00
Jason Frerich
196f922b6a
[Gekidou - MM-44645] Search Screen - show results from server (#6314)
Co-authored-by: Daniel Espino García <larkox@gmail.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2022-06-15 08:29:32 -05:00
Elias Nahum
bfffa0e10a
[Gekidou] db manager database getters (#6377) 2022-06-13 18:32:47 -04:00
Elias Nahum
8795ca85b5
[Gekidou] cleanup fixes (#6376)
* Separate NavigationStore from EphemeralStore

* Prevent WS to mark channel as read while switching to the channel

* Fix mark channel as unread
2022-06-13 08:07:24 -04:00
Anurag Shivarathri
efd259a523
[Gekidou] Open CRT notifications (#6369)
* Open CRT notification

* Changes

* fix own DM

* Removed unwanted functions

* WS post commit createThreadFromNewPost as soon as possible

* Addressing the feedback

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2022-06-10 17:27:34 -04:00
Elias Nahum
e56f172f9a
Fetch missing GM display name (#6374) 2022-06-10 13:00:50 -04:00
Elias Nahum
cfef5332c9
[Gekidou] handlers perf (#6365)
* Improve handlers to only create/update needed recors and add loading indicator while posts are being loaded

* Tweak team handlers

* check for delete_at as falsey

* more handler tweaks

* Preference handler

* Small refactor on category body

* Add WS reconnect FETCHING_POSTS event

* Fix handleChannelViewedEvent when channel screen is not visible

* Replace blinking dot with spinner

* update snapshots to reflect the new spinner
2022-06-09 13:09:54 -04:00