* MM-60419 - fix styling regression by adding back placeholder injection link
* add relevant comment
* add more details to how the link element work
* Update webapp/channels/src/root.html
---------
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM-60312 - replace office365 logo with entraId new logo
* rename icon file name
* remove unncessary aria-label in svg inside a button
* remove unnecessary translation
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Add metrics for mobile versions snapshots
* Add notifications disabled and fix lint
* Address feedback
* Verify all references to JobTypeActiveUsers
* Fix typos
* Improve platform values
* Add test and MySQL support
On user login, we were aggressively clearing the channel member
cache when it wasn't necessary. There is no channel membership
info that is changing on a user login.
Additionally, we fix some more issues with pointer passing
to the cache. It's a known problem that our value passing
style isn't consistent when we fetch items from cache.
Sometimes we pass pointer-to-pointer, sometimes it's just a
pointer. This is also the reason for https://github.com/mattermost/mattermost/pull/27830.
We fix 2 such cases where we passed pointer-to-pointer
but didn't handle the special case inside the cache.
This time, we actually fix it in the app layer instead
of the cache layer and also add a test for good measure.
https://mattermost.atlassian.net/browse/MM-60480
```release-note
NONE
```
Co-authored-by: Mattermost Build <build@mattermost.com>
* add known plugins to the list of possible plugins to be located
* improve testing and fix config data collection
* Improve testing
* remove empty lines
* make linter happy
* go through all plugins
* ignore bot accounts when counting deactivated users
* moved query to squirrel
Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
* set is null right
* Run a different query depending on driver due to performance reasons.
---------
Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* Bump yuin/goldmark dependency to latest version
* Add docs to modules-tidy make rule
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
This PR allows to run a different Mattermost instance in port :8066
using the `make run-node` target. This instance reuses the frontend
files compiled for the main development instance, has its own database
and local mode enabled through environment variables, and for the rest
of the configuration simply takes whatever properties are set in the
`config.json` file.
This target is specially useful to run a Shared Channels development
environment, compiling first the frontend and then running `make
run-server` and `make run-node` side by side, later connecting both
and testing Shared Channels features.
While using Redis, there is no need to invalidate
and then update the new count from the DB when
we know the exact number it is going to be incremented
or decremented by.
In that case, we can directly use Redis primitives
to update the cache and prevent yet another DB query.
To achieve this, we modify the LRU cache get/set
paths slightly to not marshal into byte slices
for *int64 values. This is needed for Redis to operate
the INCR/DECR commands.
https://mattermost.atlassian.net/browse/MM-59933
```release-note
NONE
```
Co-authored-by: Mattermost Build <build@mattermost.com>
- Update library version.
- Added MaxFlush delay to help reduce CPU usage.
- Fall back to LRU cache for the caches which use SCAN.
- Added mattermost-redis and running for all api layer
tests in Postgres.
https://mattermost.atlassian.net/browse/MM-59934
```release-note
NONE
```
* Add MobileExternalBrowser to client config
* set config MobileExternalBrowser as a pointer
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
We were using a mock cache provider which mixed up LRU caches
with each other. This led to incorrect unmarshalling method calls.
We fix this by using the real cache provider.
https://mattermost.atlassian.net/browse/MM-60413
```release-note
NONE
```
* app/config.go: add a nil check for a required field
* Apply suggestions from code review
Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
---------
Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* Changes the event to send when a channel is shared or unshared
Before we were sending the CHANNEL_CONVERTED websockets event, which
is intended to notify of a public channel being converted into a
private one, so the interface was showing the channel as private until
the client was refreshed.
Now a full channel update event is sent when the channel is shared or
unshared, so the interface gets the new information correctly.
* Fix message type on command tests
* Allows invites to be sent to offline remotes
Invites sent to remotes marked as offline will be stored as pending,
and when the remote comes back online, it will process the invites as
part of the synchronization process.
* Update condition name for excluding confirmed invites