- We introduce 2 new APIs:
1. Scan: this allows incremental iteration
without blocking the Redis server and is the
recommended way to iterate over keys. With this,
we have entirely removed the need for Keys.
2. RemoveMulti: this allows deletion of multiple
keys in a single operation which optimizes
network round trips.
- While here, we make a small improvement to
GetStatusFromCache, where we remove the shallow
copy which wasn't necessary because we always
serialize the data from the cache.
- We do not use Redis for session cache because of
frequent requests to iterate the entire cache which leads
to a lot of `SCAN` calls.
- Avoid broadcasting status update messages for Redis case.
- Setting cache expiry for status cache
- Removing .Set method altogether to prevent
any chances of setting an item with no expiry.
https://mattermost.atlassian.net/browse/MM-59932
```release-note
NONE
```
* Custom user settings
* Implement error boundary, fix validation
* Extraction tests
* Tests
* Bring back refresh option for failed pluggable
* [MM-51514] Allow plugins to open user settings modal (#27742)
* Allow plugins to open user settings modal
* [MM-51514] Improvements to custom plugin user settings (#27754)
* Allow compass icon to be used
* Pass props to custom plugin settings
* Export react-select
* Revert "Export react-select"
This reverts commit 6b026c4eb789d298b721494a70e0e860a704d428.
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Fix: Add status in group member modal
* Fix: Optional values for members info and fix css for user button
* Fix: remove useless props and classname in status icon
* Fix: types eslint
* Fix: snap
---------
Co-authored-by: Boris Trombert <boris.trombert@infomaniak.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* Improve logic for rendering start call button in user profile popover
* Fix typo
* Fix potential error when plugin is not enabled
* Improve selector logic
* refactor: convert setting_item from class to functional component
* fix: removed type casting 'FC'
* fix: fixed failing tests
* fix: made 'max' prop nullable
* fix: revert snapshot file to master
* fix: Update the `useEffect` dependency list to trigger only on `active` prop changes
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Adds default team to the remote cluster entity
A new DefaultTeamId field is added to the RemoteCluster entity and its
endpoints, and used when receiving channel invites to choose in which
team to create a new channel.
This will be later extended with the ability for the system admin to
manually accept invites, choosing which team to create the channel on
each. This use case will be triggered when the DefaultTeamId field is
empty, which now simply chooses the first team it finds in the
database as a fallback.
* Fix migrations list
* Fixes channelinvite test case
* Fix i18n
* Fix migration list
* Allows creating new remote clusters without providing a password
If the endpoint receives a request with no password, it will generate
one internally and return it in the response, so the frotend can show
it to the user.
* Use a random string instead of a UUID for the generated password
* Update function name to avoid CString reference and adds assertion
* Update server/channels/utils/textgeneration.go
Co-authored-by: Eva Sarafianou <eva.sarafianou@gmail.com>
* Extends the charset
---------
Co-authored-by: Eva Sarafianou <eva.sarafianou@gmail.com>
* Make server.prepare idempotent, don't cleanup containers on server.start
* Implement rolling upgrade E2E tests
* Apply Akis' suggestions from code review
* Apply Saturn's suggestions from review
* Communicate RollingRelease on GHA and test automation results channel
* Implement E2E test case versioning for rolling release tests
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Akis Maziotis <akis.maziotis@mattermost.com>
* [MM-59911] Force individual users to receive the `user_added` and `group_added` events instead of relying on the channel membership
* Fix redundant JSON serializing
* Remove makeGetPostIdsAroundPost and makeGetPostsAroundPost
* Remove formatPostInChannel and the one place it is unnecessarily used
* Remove makeGetPostsInChannel
* Update comment for getPostsInCurrentChannel
* Change addUserIdsForStatusAndProfileFetchingPoll to only ever receive arrays of user IDs
* Remove bufferCounter in favour of measuring array length
* Split addUserIdsForStatusAndProfileFetchingPoll into two separate actions
* Slightly simplify getPendingStatusesById
* Add DataLoaderInterval and use in actions/status_profile_polling
* Add tests for IntervalDataLoader
* Start adding DelayedDataLoader
* Updated DelayedDataLoader to split requested data into batches and made addIdsToLoad not return a promise by default
* Modify getMissingProfilesForIds to use a DataLoader and attach DataLoaders to the store
* Add tests for getMissingProfilesByIds loading statuses
* Revert change that defined getMissingProfilesByIds in a closure
* Change getMissingProfilesByUsernames to also use a DelayedDataLoader and add tests
* Pass extra argument into mocked version of Thunk
* Rename DataLoader.addIdsToLoad to DataLoader.queueForLoading
* Rename things and address feedback
* [MM-58492] Remove subsequent check for team permissions on open channels
* Removed extra check for open channel for webhooks as well
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Cleanup post embed for WebSocket payload
* Removing post embeds in create post API
* Fixed a nil check:
* Removed a now-irrelavent test
---------
Co-authored-by: Mattermost Build <build@mattermost.com>