Commit Graph

18348 Commits

Author SHA1 Message Date
FutureFoodBanker
46bd4599f0
[MM-47824] fix promoteGuestToUserCmdF to handle the proper errors (#26397)
Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-22 13:42:37 +01:00
Ben Schumacher
7337c384a8
[MM-57106] Remove unused cluster settings (#26490) 2024-03-22 10:44:38 +01:00
Harshil Sharma
2e96a3f1e7
Fixded go modules by modules-tidy (#26558) 2024-03-22 11:59:54 +05:30
Agniva De Sarker
9431239b2e
MM-57378: Bump up golangci version (#26535)
https://mattermost.atlassian.net/browse/MM-57378
```release-note
NONE
```

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-22 10:23:21 +05:30
Devin Binnie
7bae6c57f9
Revert front-end changes for #25715 (#26553)
* Revert front-end changes for #25715

* Fix lint

* Fix again

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-21 11:08:10 -04:00
Harshil Sharma
b02d634916
User limit enforcement (#26511)
* Added hard limits when creating user

* Added check to user activation

* Added missing check for licensed servers

* Fix i18n

* Fixed style order

* Added a separate hard limit along with existing 10k user soft limit

* For CI

* Fixing flaky test, hopefully

* Added tests
2024-03-21 19:41:53 +05:30
Ben Schumacher
2c2dbba72c
[MM-56853] Add mmctl shell completion for commands (#26214) 2024-03-21 14:50:44 +01:00
Christopher Poile
17d11db395
MM-55320 - Limit length of browser user agent version; ratelimit the /sessions endpoint (#25900)
* add ratelimit to /sessions; cap userAgent version length; tests

* add MaxSessionsLimit; remove oldest session first; tests

* can't use slices in 1.20; improve test

* nits

* add GetLRUSessions; move limiting to CreateSession; remove rate limiting

* use queryBuilder

* mysql needs a limit when using offset

* update i18n

* refactor into limitNumberOfSessions; protect createSessionForUserAccessToken

* add comment to GetLRUSessions

* add limit to oauth path; PR comments
2024-03-21 08:48:24 -04:00
Alejandro García Montoro
9a2d96073e
MM-57344: Improve ElasticSearch indexing query performance (#26517)
* Use a row constructor comparison to avoid a filter

The original query had a WHERE condition that looked like:

    (x > a) OR (x = a AND y < b)

This commit changes it to a compound comparison that, given the
lexicographical order it uses, is semantically the same:

    (x, y) > (a, b)

This makes the plan in Postgres use an Index Cond instead of a Filter,
having two main performance improvements:
1. The query's time is more or less constant, not increasing every time
this query is executed. This is important because the query is executed
repeatedly until all posts are indexed.
2. The query's time is much shorter: while the original query eventually
takes 30s, hitting the timeout, the new one takes ~30ms.

Notice the difference in the plans below:
- the original query uses a `Filter` step, while the new one uses an
`IndexCond` + `Filter` step.
- the original query has a shared hit count of 40557115 (109GiB), while
the new one has a shared hit count of 13951 (109MiBA). This does not
show exactly how much data is read from disk, given it's a nested loop
node, but it gives us an idea of the amount of data processed in the
server.

Original plan:

agnivaltdb=> EXPLAIN (ANALYZE, BUFFERS) SELECT Posts.*, Channels.TeamId FROM Posts LEFT JOIN Channels ON Posts.ChannelId = Channels.Id WHERE Posts.CreateAt > '1687424888405' OR (Posts.CreateAt = '1687424888405' AND Posts.Id > 'tpomh9yu1tffmdp6dopobwuc9h') ORDER BY Posts.CreateAt ASC, Posts.Id ASC LIMIT 10000;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=1.22..2287.94 rows=10000 width=464) (actual time=23921.236..23954.229 rows=10000 loops=1)
   Buffers: shared hit=40557115
   ->  Incremental Sort  (cost=1.22..13998881.93 rows=61217938 width=464) (actual time=23921.235..23953.205 rows=10000 loops=1)
         Sort Key: posts.createat, posts.id
         Presorted Key: posts.createat
         Full-sort Groups: 311  Sort Method: quicksort  Average Memory: 45kB  Peak Memory: 45kB
         Buffers: shared hit=40557115
         ->  Nested Loop Left Join  (cost=1.00..11421751.31 rows=61217938 width=464) (actual time=23920.970..23947.067 rows=10001 loops=1)
               Buffers: shared hit=40557115
               ->  Index Scan using idx_posts_create_at on posts  (cost=0.57..9889434.54 rows=61217938 width=461) (actual time=23920.930..23931.063 rows=10001 loops=1)
                     Filter: ((createat > '1687424888405'::bigint) OR ((createat = '1687424888405'::bigint) AND ((id)::text > 'tpomh9yu1tffmdp6dopobwuc9h'::text)))
                     Rows Removed by Filter: 40920000
                     Buffers: shared hit=40553119
               ->  Memoize  (cost=0.43..0.70 rows=1 width=30) (actual time=0.001..0.001 rows=1 loops=10001)
                     Cache Key: posts.channelid
                     Cache Mode: logical
                     Hits: 9002  Misses: 999  Evictions: 0  Overflows: 0  Memory Usage: 151kB
                     Buffers: shared hit=3996
                     ->  Index Scan using channels_pkey on channels  (cost=0.42..0.69 rows=1 width=30) (actual time=0.007..0.007 rows=1 loops=999)
                           Index Cond: ((id)::text = (posts.channelid)::text)
                           Buffers: shared hit=3996
 Planning:
   Buffers: shared hit=112
 Planning Time: 0.501 ms
 Execution Time: 23954.974 ms
(25 rows)

New plan:

agnivaltdb=> EXPLAIN (ANALYZE, BUFFERS) SELECT Posts.*, Channels.TeamId FROM Posts LEFT JOIN Channels ON Posts.ChannelId = Channels.Id WHERE (Posts.CreateAt, Posts.Id) > ('1687424888405', 'tpomh9yu1tffmdp6dopobwuc9h') ORDER BY Posts.CreateAt ASC, Posts.Id ASC LIMIT 10000;
                                                                           QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=1.15..1666.83 rows=10000 width=464) (actual time=0.366..34.053 rows=10000 loops=1)
   Buffers: shared hit=13951
   ->  Incremental Sort  (cost=1.15..10196977.36 rows=61217938 width=464) (actual time=0.365..33.031 rows=10000 loops=1)
         Sort Key: posts.createat, posts.id
         Presorted Key: posts.createat
         Full-sort Groups: 311  Sort Method: quicksort  Average Memory: 45kB  Peak Memory: 45kB
         Buffers: shared hit=13951
         ->  Nested Loop Left Join  (cost=1.00..7619846.74 rows=61217938 width=464) (actual time=0.059..26.840 rows=10001 loops=1)
               Buffers: shared hit=13951
               ->  Index Scan using idx_posts_create_at on posts  (cost=0.57..6087529.97 rows=61217938 width=461) (actual time=0.040..10.548 rows=10001 loops=1)
                     Index Cond: (createat >= '1687424888405'::bigint)
                     Filter: (ROW(createat, (id)::text) > ROW('1687424888405'::bigint, 'tpomh9yu1tffmdp6dopobwuc9h'::text))
                     Rows Removed by Filter: 2
                     Buffers: shared hit=9955
               ->  Memoize  (cost=0.43..0.70 rows=1 width=30) (actual time=0.001..0.001 rows=1 loops=10001)
                     Cache Key: posts.channelid
                     Cache Mode: logical
                     Hits: 9002  Misses: 999  Evictions: 0  Overflows: 0  Memory Usage: 151kB
                     Buffers: shared hit=3996
                     ->  Index Scan using channels_pkey on channels  (cost=0.42..0.69 rows=1 width=30) (actual time=0.007..0.007 rows=1 loops=999)
                           Index Cond: ((id)::text = (posts.channelid)::text)
                           Buffers: shared hit=3996
 Planning:
   Buffers: shared hit=112
 Planning Time: 0.471 ms
 Execution Time: 34.716 ms
(26 rows)

* Go back to the old query for MySQL

As one could expect, the two databases have completely opposite
behaviours, and for MySQL, the old query is significantly faster than
the new one, exactly for the same reason than in Postgres, but the other
way around: the old query uses an Index range scan while the new one
would use a Filter.

Old query (0.18s):

mysql> EXPLAIN ANALYZE SELECT Posts.*, Channels.TeamId FROM Posts USE INDEX(idx_posts_create_at_id) LEFT JOIN Channels ON Posts.ChannelId = Channels.Id WHERE Posts.CreateAt > 1557752415221 OR (Posts.CreateAt = 1557752415221 AND Posts.Id > 'ad59ire57tfwmjr5r8xqxc75qw') ORDER BY Posts.CreateAt ASC, Posts.Id ASC LIMIT 10000;
--------------
EXPLAIN ANALYZE SELECT Posts.*, Channels.TeamId FROM Posts USE INDEX(idx_posts_create_at_id) LEFT JOIN Channels ON Posts.ChannelId = Channels.Id WHERE Posts.CreateAt > 1557752415221 OR (Posts.CreateAt = 1557752415221 AND Posts.Id > 'ad59ire57tfwmjr5r8xqxc75qw') ORDER BY Posts.CreateAt ASC, Posts.Id ASC LIMIT 10000
--------------

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> Limit: 10000 row(s)  (cost=7472068.91 rows=10000) (actual time=0.063..164.174 rows=10000 loops=1)
    -> Nested loop left join  (cost=7472068.91 rows=5559093) (actual time=0.062..163.450 rows=10000 loops=1)
        -> Index range scan on Posts using idx_posts_create_at_id over (CreateAt = 1557752415221 AND 'ad59ire57tfwmjr5r8xqxc75qw' < Id) OR (1557752415221 < CreateAt), with index condition: ((Posts.CreateAt > 1557752415221) or ((Posts.CreateAt = 1557752415221) and (Posts.Id > 'ad59ire57tfwmjr5r8xqxc75qw')))  (cost=1357066.29 rows=5559093) (actual time=0.043..97.358 rows=10000 loops=1)
        -> Single-row index lookup on Channels using PRIMARY (Id=Posts.ChannelId)  (cost=1.00 rows=1) (actual time=0.006..0.006 rows=1 loops=10000)
 |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.18 sec)

New query (5s):

mysql> EXPLAIN ANALYZE SELECT Posts.*, Channels.TeamId FROM Posts USE INDEX(idx_posts_create_at_id) LEFT JOIN Channels ON Posts.ChannelId = Channels.Id WHERE (Posts.CreateAt, Posts.Id) > (1557752415221, 'ad
59ire57tfwmjr5r8xqxc75qw') ORDER BY Posts.CreateAt ASC, Posts.Id ASC LIMIT 10000;
--------------
EXPLAIN ANALYZE SELECT Posts.*, Channels.TeamId FROM Posts USE INDEX(idx_posts_create_at_id) LEFT JOIN Channels ON Posts.ChannelId = Channels.Id WHERE (Posts.CreateAt, Posts.Id) > (1557752415221, 'ad59ire57tfwmjr5r8xqxc75qw') ORDER BY Posts.CreateAt ASC, Posts.Id ASC LIMIT 10000
--------------

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> Limit: 10000 row(s)  (cost=11119405.48 rows=10000) (actual time=5295.106..5455.285 rows=10000 loops=1)
    -> Nested loop left join  (cost=11119405.48 rows=10000) (actual time=5295.105..5454.572 rows=10000 loops=1)
        -> Filter: ((Posts.CreateAt,Posts.Id) > (1557752415221,'ad59ire57tfwmjr5r8xqxc75qw'))  (cost=221.48 rows=10000) (actual time=5295.078..5388.668 rows=10000 loops=1)
            -> Index scan on Posts using idx_posts_create_at_id  (cost=221.48 rows=10000) (actual time=0.055..5314.753 rows=600000 loops=1)
        -> Single-row index lookup on Channels using PRIMARY (Id=Posts.ChannelId)  (cost=1.00 rows=1) (actual time=0.006..0.006 rows=1 loops=10000)
 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (5.46 sec)
```

* Add comment explaining the difference between DBs

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-21 12:57:29 +01:00
Harshil Sharma
eb817966a4
Passed actual channel data to action instead of HTTP response (#26315)
* Passed actual channel data to action instead of HTTP response

* Fixed type

* Fixed type
2024-03-21 17:12:03 +05:30
M-ZubairAhmed
959e333031
[MM-57081] Spacing, font and cutoff issues on Channel notifications preferences modal (#26478) 2024-03-21 10:25:10 +00:00
Matthew Birtch
e43ed713d8
MM-28014 Improve Channel Intros (#26413)
* added SVGs for channel intros and initial changes to styles and layout

* cleaned up svgs, made theme use theme colors

* updated action buttons in channel intro

* adding mobile view changes

* fixed lint issues

* fixed test issues

* fixed test and i18n issues

* updates to action button styles and reworked grouping of buttons

* updated off-topic and town square intro to remove the add members button

* updated default add members text and groups text

* fixed lint issue on action button css

* imported action button in module scss instead

* fixes from code review

* changed avatar tokens not to be so custom

* fixed type issue with avatar component

* fixed single quote issue with tests

* Revert "changed avatar tokens not to be so custom"

This reverts commit 700f172f0d.

* Revert "fixed type issue with avatar component"

This reverts commit 5ad1092ba4.

* fixed avatar types and order of sizes
2024-03-21 09:54:36 +01:00
Agniva De Sarker
5a97ba09d5
MM-57377: Skip racy test (#26534)
https://mattermost.atlassian.net/browse/MM-57377
```release-note
NONE
```

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-21 14:22:21 +05:30
Daniel Espino García
8e43d45b3f
Fix search date suggestion crash (#26476)
* Fix search date suggestion crash

* Fix tests

* Improve snapshots

* Fix snapshot
2024-03-21 09:50:12 +01:00
Ben Schumacher
1383d51436
[MM-57071] Use bool for license_is_trial in Support Packet (#26378) 2024-03-21 08:55:32 +01:00
Harshil Sharma
b20f14111c
Fixed create emoji API to be marked as file API (#26513) 2024-03-21 11:23:35 +05:30
Agniva De Sarker
5e851f708b
MM-57245: Bump up Go version to 1.21 (#26512)
* MM-57245: Bump up Go version to 1.21

https://mattermost.atlassian.net/browse/MM-57245
```release-note
NONE
```
2024-03-21 09:12:35 +05:30
Tanmay Thole
1dc5c006f2
MM-38745 feat: Add dont clear option for DND (#26334)
* feat: Add dont clear option for DND

* Merge conflicts fixed

* ci: lint, types, i18n fix

* refactor: Remove unused code

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-20 16:44:50 -04:00
yasserfaraazkhan
9e5d486a5b
Fix Cypress tests on master (#26500) 2024-03-20 23:09:45 +05:30
Christopher Poile
6ea363e260
[MM-57070] Remove detailed_error from errors when not in dev mode (#26414)
* remove detailed error from appErr.ToJSON

* Revert "remove detailed error from appErr.ToJSON"

This reverts commit 3c2fa7352d.

* use WipeDetailed instead of err.DetailedError = ""

* fix tests

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-20 13:30:14 -04:00
Claudio Costa
9e6c06186b
Use specified GO var to generate go.work (#26508)
Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-19 10:53:26 -06:00
Weblate (bot)
969096a403
Translations update from Mattermost Weblate (#26499)
* Translated using Weblate (Swedish)

Currently translated at 100.0% (2572 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/sv/

* Translated using Weblate (Swedish)

Currently translated at 96.3% (5721 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/sv/

* Translated using Weblate (Turkish)

Currently translated at 97.1% (5770 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/tr/

* Translated using Weblate (Turkish)

Currently translated at 94.0% (2418 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/tr/

* Translated using Weblate (Turkish)

Currently translated at 97.9% (5820 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/tr/

* Translated using Weblate (German)

Currently translated at 100.0% (2572 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/de/

* Translated using Weblate (Polish)

Currently translated at 100.0% (2572 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/pl/

* Translated using Weblate (German)

Currently translated at 100.0% (5940 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/de/

* Translated using Weblate (Dutch)

Currently translated at 99.8% (5930 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/nl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (5940 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (Dutch)

Currently translated at 99.9% (5938 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/nl/

* Translated using Weblate (Turkish)

Currently translated at 94.0% (2420 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/tr/

* Translated using Weblate (Polish)

Currently translated at 100.0% (5940 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (Turkish)

Currently translated at 98.3% (5840 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/tr/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 99.8% (5932 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/zh_Hans/

* Translated using Weblate (Dutch)

Currently translated at 99.0% (2547 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/nl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (5940 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (Dutch)

Currently translated at 99.3% (2554 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/nl/

* Translated using Weblate (Swedish)

Currently translated at 97.4% (5791 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/sv/

* Translated using Weblate (Russian)

Currently translated at 100.0% (2572 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/ru/

* Translated using Weblate (Russian)

Currently translated at 98.4% (5847 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/ru/

* Translated using Weblate (Dutch)

Currently translated at 99.5% (2560 of 2572 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/nl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (5940 of 5940 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/

---------

Co-authored-by: MArtin Johnson <martinjohnson@bahnhof.se>
Co-authored-by: Kaya Zeren <kayazeren@gmail.com>
Co-authored-by: jprusch <rs@schaeferbarthold.de>
Co-authored-by: master7 <marcin.karkosz@rajska.info>
Co-authored-by: Tom De Moor <tom@controlaltdieliet.be>
Co-authored-by: Sharuru <mave@foxmail.com>
Co-authored-by: Konstantin <eleferen@gmail.com>
2024-03-19 11:04:28 -03:00
Pablo Vélez
44494eb7c6
MM-56966 - cancel status request only on explicitly false config value (#26348) 2024-03-19 11:39:06 +01:00
Ben Schumacher
c5353fad36
[MM-55994] Fix nbsp in group list modal (#25588) 2024-03-19 09:36:06 +01:00
Agniva De Sarker
7679f51e3e
MM-57193: Standardize the cache names (#26441)
We use the same name for hit/miss/invalidation metrics.

The downside is that now we have conflated a full cache purge
and a single cache key invalidation into a single label, but
the advantage is that it's easier to monitor the usage of a single
cache.

And moreover, duplicating the same string across multiple places
increases the chances of making a mistake. Centralizing the cache
name only at instantiation simplifies the code.

After this, we would be ready to use Redis.

https://mattermost.atlassian.net/browse/MM-57193

```release-note
NONE
```
2024-03-19 09:59:00 +05:30
Saturnino Abril
53471c7e8c
E2E/Playwright: Upgrade playwright/dependencies and test server config (#26464)
* chore: upgrade playwright and test server config

* add post install script

* update config types

* fix visual test
2024-03-19 08:09:25 +08:00
Harrison Healey
297135c5b4
MM-57119 Migrate various components to use WithTooltip (#26458)
* MM-57119 Migrate MultiSelectCard to use WithTooltip

* MM-57119 Migrate SeatsCalculator to use WithTooltip

* MM-57119 Migrate BillingSummary and RenewalCard to WithTooltip

* Add getEmojiName helper function

* Add emojiStyle=large option for WithTooltip

* MM-57119 Migrate PostRecentReactions to use WithTooltip

* MM-57119 Migrate Reaction to use WithTooltip

* MM-57119 Migrate PostReaction to use WithTooltip

* MM-57119 Migrate ReactionList to use WithTooltip

* Change how WithTooltip's shortcut prop works to take a sequence of keys

* Convert TeamButton to functional component

* MM-57119 Migrate TeamButton to use WithTooltip

* MM-57119 Migrate ChannelFilter to use WithTooltip

* Revert unintentional change

* Finish removing values prop from KeyboardShortcutSequence

* Address feedback

* Add margin between emoji and text
2024-03-18 14:39:09 -04:00
Harrison Healey
8c3ab07d49
Patch eslint-plugin-react-hooks to properly handle class properties (#26493)
* Update package-lock.json for some reason

* Patch eslint-plugin-react-hooks

* Disable fixed ESLint rule temporarily
2024-03-18 14:24:15 -04:00
Doug Lauder
1cb936b0b7
Create propery SC when InviteRemoteToChannel and channel should be shared. (#26469) 2024-03-18 10:54:23 -04:00
M-ZubairAhmed
79b1e9d200
[MM-56594] Upgrade from Node-18.10(Maintaince) to Node-20.11(LTS) (#26335) 2024-03-18 11:22:46 +00:00
Asaad Mahmood
a5c2f37d18
MM-57116 - Updating multi select height (#26473) 2024-03-18 14:34:19 +05:00
Matthew Birtch
3b8ba01fd9
Add css variables for border radius (#26491) 2024-03-17 21:25:37 +05:30
Devin Binnie
9dc5572f53
[MM-57076] Stop removing local drafts when calling removeDraft for servers with synced drafts (#26481)
* [MM-57076] Stop removing local drafts when calling `removeDraft` for servers with synced drafts

* Fix tests
2024-03-16 13:55:56 -04:00
Harrison Healey
69fc0d6f7f
Fix incorrect translation string (#26492) 2024-03-15 14:28:57 -04:00
Ben Cooke
b14213d329
[MM-56491] Allow sysadmins to LDAP sync SAML users when SamlSettings.EnableSyncWithLdap is true (#25886)
Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-15 14:40:05 +01:00
Mario Vitale
7c0a3b0297
CLD-7343 Add node image version 20.11 (#26480)
* Add node image version 20.11

* Cleanup node 20.11.1 image
2024-03-15 12:57:19 +01:00
Vishal
17edb6726b
allow fetch request without a config save (#26046)
Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-15 10:05:47 +05:30
Scott Bishel
04f7bbbbe3
MM 57068 - remove export button from log item viewer. (#26390)
* fix for export

* remove 'export' button

* run i18n-extract
2024-03-14 09:38:31 -06:00
Akis Maziotis
88bd7fcfc7
[chore] CD Revisiting image registry for mattermostdevelopment/mirrored-keycloak (#26477)
Switching to quay.io for keycloak

Ticket: https://mattermost.atlassian.net/browse/CLD-7344
2024-03-14 16:24:31 +02:00
M-ZubairAhmed
cf578dad3a
[MM-57033] Update PL for user limit warning link (#26474) 2024-03-14 14:18:37 +00:00
Akis Maziotis
6364632907
[chore] Adding Node 20 support for images exposed under mattermostdevelopment/mirrored-node (#26475)
Ticket: https://mattermost.atlassian.net/browse/CLD-7343
2024-03-14 14:46:00 +02:00
Asaad Mahmood
6d0f40c9aa
MM-57221 - Adding formattedMessage to reply count (#26472) 2024-03-14 15:11:18 +05:00
Dipak Sinha
2cb664c604
Convert ./components/file_info_preview/file_info_preview.tsx from Class Component to Function Component (#26368)
* Class to functional component

* Add react.memo

* Fix Lint Issues

* Format props declaration in FileInfoPreview component

* fix: Updated snapshots for failing tests

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-14 10:52:09 +01:00
Raghav Aggarwal
f224152f9e
Added a action to return only the active channel and used it in the dropdown component (#25508)
* [MI-3718] Updated code to not return archived channels in the response of auto complete channels API

* [MM-135] Update webapp logic to not show archived channels in intercative dialog
2024-03-14 02:22:55 -04:00
Raghav Aggarwal
a43ae04fe1
Bump prepackage Gitlab plugin version to 1.8.1 (#26274)
Co-authored-by: Michael Kochell <6913320+mickmister@users.noreply.github.com>
2024-03-14 00:22:14 -04:00
Harrison Healey
4d03becdd1
MM-52624/MM-57094 Update ESLint and our ESLint plugin (#26398)
* Update ESLint and plugins

* Move most channels-specific ESLint configuration into ESLint plugin

* Add ESLint to types and client packages

* Add ESLint to components package
2024-03-13 22:07:28 +00:00
Harrison Healey
67f815e373
MM-57093 Update SCSS, Stylelint, and related packages (#26296)
* Update Stylelint and related packages

* Autofix CSS files

* Fix scss/no-global-function-names

* Fix scss/operator-no-unspaced

* Fix scss/comment-no-empty

* Disable scss/at-extend-no-missing-placeholder

* Update libraries for loading sass

* Fix Rollup not emitting the CSS for the components package to the right place

* Add plugin to re-add stylistic Stylelint rules

* Actually import Stylelint plugin
2024-03-13 17:00:57 -04:00
Harrison Healey
4bba850090
Add usage docs for WebSocket client to @mattermost/client (#26345)
* Add usage docs for WebSocket client to @mattermost/client

* Fix typo in @mattermost/client rest client examples

* Make fake URLs consistent
2024-03-13 16:59:30 -04:00
sazzad hossain
1bd9407e78
MM-53703 Add display-name for experimental default channel (#26191)
* [MM-53703] add displayname for experimental default channel (#24644)

* [MM-53703] add unit test for default experimental channel (#24644)

* Update server/channels/app/teams/teams_test.go

---------

Co-authored-by: Sazzad Hossain <sazzad.hossain@marginedge.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
2024-03-13 16:52:15 -04:00
Asaad Mahmood
ac3eb04dcc
MM-49452 - Updating height of reply input (#26409)
* MM-49452 - Updating height of reply input

* Updating reply input

* Removing css transition

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-03-14 01:27:17 +05:00