* Prevents the API from updating synced CPA values
The patch functions for CPA values now accept a parameter that checks
if they should allow for synced values to be updated, and prevent
those updates if necessary
* Fix linter
* Fix parameter after merge
---------
Co-authored-by: Miguel de la Cruz <miguel@ctrlz.es>
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM-63056 Add accessible name to Threads item menus
* MM-63058 Add accessible name to Threads mark as unread button
* MM-63049 Change Threads list to use tab pattern for filtering
* Revert accidentally added i18n string
With some neat generics, I was able to refactor
the scanning to a util function. I used it to
refactor 3 places and also removed an unnecessary method.
Claude was quite good here.
https://mattermost.atlassian.net/browse/MM-62755
```release-note
NONE
```
* Stop emoji picker header from overlapping tabs
* Move emoji picker header above tabs
There was also some stuff I could remove because the header will always
be visible.
* Don't scroll the emoji picker on hover
* MM-61611 Fix emoji picker tabs being covered in mobile view
* Improve layout of emoji picker and gif picker
A lot of the emoji picker was explicitly sized before which made it
difficult to make everything responsive in mobile view. Making the emoji
picker layout into a flexbox fixed that, but due to the way that it's
nested, that was a bit tricky, and it required a couple tricks:
1. The AutoSizer doesn't work if it's placed inside a flexbox container,
but you can fix that by putting a div with position: relative in
between it and the flexbox parent. That was already the case, but I
accidentally removed it while trying to sort out the seemingly
excessive nesting.
2. Children of flexbox elements will cause the parent to expand if they
don't have min-height/min-width set. That's because the default
value for those is 0 outside of flexbox, but it's auto inside of one.
This breaks the layout and animation of the skin tone selector in the
emoji picker, but that has issues on master as well, so it'll be
addressed in the next commit.
* Improve and fix opening animation for skin tone selector
While this looked worse before in mobile view, it had some weirdness in
desktop as well. I ended up rewriting the way that that animation worked
so that I could position it correctly in both mobile (where it doesn't
cover the input) and desktop (where it does).
Notably, that change required:
1. Changing the skin tone selector to wait until its contents are hidden
to unmount them so that the position and size could be calculated
correctly.
2. Removed the flexbox from the search row and used a margin to make the
skin tone button pretend to offset the input. That let us smoothy
expand the selector over the input without having the input resize
behind it.
* Update CSS for positioning emojis and headings in emoji picker
* Add report a problem type and allow logs config
* Improve device type logic
* Add tests and minor fixes
* Add texts
* Fix tests by avoiding circular dependencies
* Fix test
* Fix useexternallink updating mailtos, and changing the content of query parameters
* Fix texts
* Fix e2e test
* Fix tsc
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
INSERT IGNORE will ignore ALL errors in the INSERT statement.
This is not what was intended. The right way is to do a
redundant update on duplicate key.
It's not great, but that's how MySQL wants us to do it.
https://mattermost.atlassian.net/browse/MM-63878
```release-note
NONE
```
* pageup/pagedown button scroll for center post-list
* revert package.json
* changing id, using ? and returning in keyHandler
* added e2e test for pageup/pagedown scroll
* Fix dynamic-virtualized-list not being in lockfile and update path
Moving the package under the MM namespace wasn't necessary, but it stops
some warnings from NPM.
* Move E2E test from Cypress to Playwright
Cypress's cy.type doesn't seem to properly trigger browser functions
because it doesn't seem to use native keyboard events. A newer version
of Cypress has a new cy.press method which is supposed to use native
keyboard events, but it also only supports the tab key currently, so it
wouldn't be useful here.
* Fix new test on iPad
* Add page up/down support to RHS and Threads view
* Update type definitions for dynamic-virtualized-list
---------
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>