* initial submit, join/leave message
* i18n-extract
* additional changes for client config
* add unit tests
* fix unit tests
* change tests to use string not bool
* more unit test fixes
* add and fix unit tests
* revert package-lock
* update unit tests
* Update default_config.ts
* fix unit test
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM-53989 Update to Node 18 and NPM 9
* MM-53989 Remove skip_integrity_check.js
* Force e2e-test/cypress to use its version of TS for types package
* Update .nvmrc
* Update .nvmrc lineending
* Update server.override.yml
---------
Co-authored-by: M-ZubairAhmed <m-zubairahmed@protonmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* Sync giphy package versions in package-lock.json file
The versions were added automatically after starting the server, so seems like lock file is not synced
* Use main user_profile component in commented_on to fix displayName
* Refactor commented_on component from class to dumb/function component
* Resolved comments and make eslint happy
* Remove display name prop being passed to UserProfile component
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Add support for actions in the unreads bar from plugins
* Adding channelId as parameter
* Fixing linter errors
* Changing the extensibility to the new messages separator
* Making everything work with the plugin
* Fixing linter and types errors
* Fixing unit test
* Tiny improvement in the styles
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
We were using 8.x version of Grafana which was quite old.
Pinning Prom image to latest stable as well following our
other images.
```release-note
NONE
```
* Cherry-pick test changes from #24243
* Add required change from Saturn's PR to make reminder menu accessible
* MM-53999 Flip provider order so that MUI props are passed
* MM-53999 Pass MUI props through custom MenuItem components
* Address feedback
* Update snapshots
* Updates getProfilesAndStatusesForPosts to fetch nonexisting custom groups
* Fix linter
* Rename method
* Adds an action test
* Using a set on loadedProfiles instead of an array
There were multiple problems with loading of a license.
1. It was called from inside app/server.go and app/platform/service.go. The first one wasn't really needed anymore, so we remove it.
2. To make loading of a license work across a cluster, the license load action was attached along with the `InvalidateAllCachesSkipSend` method. But the problem with that was that it would even get called in the caller node as well, putting it in a recursive loop.
```
LoadLicense -> SaveLicense -> InvalidateAllCaches -> InvalidateAllCachesSkipSend -> LoadLicense
```
To fix this, we create a dedicated loadLicense cluster event and move it away from the `InvalidateAllCachesSkipSend` method. And then from the caller side, we just trigger this action.
3. We also remove the first call to check license expiration which would load the license again. This is unnecessary because if the license is expired, server wouldn't start at all.
While here, we also make some other improvements like removing unnecessary goroutine spawning while publishing websocket events. They are already handled asynchronously, so there is no need
to create a goroutine for that.
We also remove
```
ps.ReloadConfig()
ps.InvalidateAllCaches()
```
from requestTrialLicense as they are already called from inside `*PlatformService.SaveLicense`.
And lastly, we remove the `*model.AppError` return from `*PlatformService.InvalidateAllCaches` because there was nothing to return at all.
https://mattermost.atlassian.net/browse/MM-53879
```release-note
Fix several issues with loading of a license
```
Include https://github.com/mattermost/mattermost-plugin-api into the mono repo
Co-authored-by: Jesse Hallam <jesse.hallam@gmail.com>
Co-authored-by: Michael Kochell <mjkochell@gmail.com>
Co-authored-by: Alejandro García Montoro <alejandro.garciamontoro@gmail.com>
Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
Co-authored-by: Alex Dovenmuehle <alex.dovenmuehle@mattermost.com>
Co-authored-by: Michael Kochell <6913320+mickmister@users.noreply.github.com>
Co-authored-by: Christopher Poile <cpoile@gmail.com>
Co-authored-by: İlker Göktuğ Öztürk <ilkergoktugozturk@gmail.com>
Co-authored-by: Shota Gvinepadze <wineson@gmail.com>
Co-authored-by: Ali Farooq <ali.farooq0@pm.me>
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
Co-authored-by: Daniel Espino García <larkox@gmail.com>
Co-authored-by: Christopher Speller <crspeller@gmail.com>
Co-authored-by: Alex Dovenmuehle <adovenmuehle@gmail.com>
Co-authored-by: Szymon Gibała <szymongib@gmail.com>
Co-authored-by: Lev <1187448+levb@users.noreply.github.com>
Co-authored-by: Jason Frerich <jason.frerich@mattermost.com>
Co-authored-by: Agniva De Sarker <agnivade@yahoo.co.in>
Co-authored-by: Artur M. Wolff <artur.m.wolff@gmail.com>
Co-authored-by: Madhav Hugar <16546715+madhavhugar@users.noreply.github.com>
Co-authored-by: Joe <security.joe@pm.me>
Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>
Co-authored-by: José Peso <trilopin@users.noreply.github.com>