Skip to content
This repository has been archived by the owner on Mar 13, 2024. It is now read-only.

Move mattermost-redux into mattermost-webapp #7723

Merged
merged 6 commits into from
Mar 22, 2021

Conversation

hmhealey
Copy link
Member

@hmhealey hmhealey commented Mar 18, 2021

I don't know what exactly can be done to review this as a dev, so feel free to look at the migration scripts and browse the git branch to make sure everything seems to be in the right place. I put the changes to existing web app files in their own commit in case you wanted to view those separately.

I've also assigned more reviewers than necessary just so that everyone's aware of what's changing and in case anyone's curious how it might affect them. Ideally, little of this should affect anyone negatively minus having to hop between repos when browsing history.

Also, I know this'll inflate my lines added count, but I had to do something to catch up to Saturn and Christopher 🙃.

@hmhealey hmhealey added 2: Dev Review Requires review by a core commiter 3: QA Review Requires review by a QA tester labels Mar 18, 2021
Copy link
Member Author

@hmhealey hmhealey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here are the important changes done in the webapp code. 99% of them are just rearranging imports now that mattermost-redux is considered as internal code.

@@ -3,6 +3,7 @@

import {batchActions} from 'redux-batched-actions';
import request from 'superagent';

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since mattermost-redux is now considered internal, the ESLint plugin for imports decided it wants changes.

import {Client4} from 'mattermost-redux/client';
import {UserProfile} from 'mattermost-redux/src/types/users';
import {UserProfile} from 'mattermost-redux/types/users';
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few of these files incorrectly imported things from mattermost-redux's src directory since importing from mattermost-redux takes it from packages/mattermost-redux/src directly now, that needs to be changed to prevent it from trying to look at src/src

@@ -27,6 +27,8 @@
"flexsearch": "0.6.32",
"flux": "4.0.1",
"font-awesome": "4.7.0",
"form-data": "3.0.0",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are all dependencies of mattermost-redux that we need to include ourselves now. Once we get the actual monorepo infrastructure sorted out, these will move back into the subpackages.

@@ -198,6 +207,8 @@
"text-summary"
],
"moduleNameMapper": {
"^mattermost-redux/test/(.*)$": "<rootDir>/packages/mattermost-redux/test/$1",
"^mattermost-redux/(.*)$": "<rootDir>/packages/mattermost-redux/src/$1",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is used to rewrite import statements when running in Jest. The test files need their own alias since they don't live in the src folder.

@@ -9,7 +9,7 @@ import '@testing-library/jest-dom';
global.$ = $;
global.jQuery = $;
global.performance = {};
global.fetch = jest.fn().mockResolvedValue({status: 200});
require('isomorphic-fetch');
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously, we couldn't use fetch in webapp tests. Now we can!

Also, it might make sense to swap this for node-fetch in the future since that's what isomorphic-fetch uses under the hood for non-browser environments.

warns = [];
errors = [];
});

afterEach(() => {
if (logs.length > 0 || warns.length > 0 || errors.length > 0) {
const message = 'Unexpected console logs' + logs + warns + errors;
if (warns.length > 0 || errors.length > 0) {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor change to match how redux handled log statements in its tests. I personally think this is nicer since I tend to use console.log while debugging tests.

@@ -20,6 +20,9 @@
"experimentalDecorators": true,
"jsx": "react",
"baseUrl": ".",
"paths": {
"mattermost-redux/*": ["packages/mattermost-redux/src/*"],
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This rewrites the import paths for the type checker and for VS Code's TS plugin.

@@ -245,6 +245,8 @@ var config = {
path.resolve(__dirname),
],
alias: {
'mattermost-redux/test': 'packages/mattermost-redux/test',
'mattermost-redux': 'packages/mattermost-redux/src',
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Finally, this rewrites the import paths for Webpack, Babel, and ESLint.

@hmhealey hmhealey requested review from calebroseland, jfrerich, nickmisasi and hahmadia and removed request for jwilander March 18, 2021 21:07
@jgilliam17 jgilliam17 added the Setup Cloud Test Server Setup a test server using Mattermost Cloud label Mar 18, 2021
Copy link
Member Author

@hmhealey hmhealey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And here is anything even vaguely noteworthy in the redux changes. I skipped over a few that were even less consequential, but most of this is pretty much just squashing minor type issues and such.

@@ -0,0 +1,210 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import keyMirror from 'mattermost-redux/utils/key_mirror';
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that the import paths within mattermost-redux all had to be rewritten to start with the package name. The alias let us avoid that with all the webapp code, but it's needed in here. This can hopefully be reverted once the monorepo is properly set up, but it's necessary for now.

const runLater = () => {
timeout = null;
if (!immediate) {
Reflect.apply(func, null, args);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor change which shows up in a few places. We used to pass this instead of null when binding. For some reason, TypeScript complains now while TTypeScript that used to be used does not.

});

it('overwritePlugin', async () => {
const data1 = fs.createReadStream('tests/setup.js');
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another small change. These tests used to upload a copy of mattermost-redux's test/setup.js for this test, but that was removed since it now uses the webapp's setup script. I don't think it's necessary to upload something other than just a string, but in case it is, I just pointed it at the webapp's setup script instead.

});

it('uploadPlugin', async () => {
const testFileData = fs.createReadStream('packages/mattermost-redux/test/assets/images/test.png');
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another path that needed to change since Node doesn't look at any of the import aliasing that's now set up.

import {Post} from 'mattermost-redux/types/posts';
import {IDMappedObjects} from 'mattermost-redux/types/utilities';

export function customEmoji(state: IDMappedObjects<CustomEmoji> = {}, action: GenericAction): IDMappedObjects<CustomEmoji> {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There were some weird typings here before. Most of these were imported as import * as types from 'types' which meant all of them were referred to as things like types.entities.CustomEmoji. It wasn't strictly necessary to fix if I updated the import path, but I couldn't help myself.

return nextState;
}
case EmojiTypes.RECEIVED_CUSTOM_EMOJIS: {
const nextState = {...state};
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A bunch of files wrote this sort of thing as const nextState: any = {...state}; for some reason. TypeScript didn't like that, so I removed the unnecessary type change everywhere.

const nextSet = new Set(state[channelId]);

users.forEach((u: UserProfile) => nextSet.add(u.id));
nextState[channelId] = nextSet as any; // TODO the type of state should Record<string, Set<string>>
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one was a weird one. The type of nextSet seems to be incorrect since everywhere else expects each entry in state to be an array instead of a Set. Assuming the above comment isn't lying, this was only used by the mobile app, so I didn't bother fixing it now.


import {isMinimumServerVersion} from 'mattermost-redux/utils/helpers';

export function getConfig(state: GlobalState): Partial<ClientConfig> {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There seems to be some argument around types for state.entities.general.config and getConfig since this function previously was defined as returning a full ClientConfig but the redux state held a partial one. The partial seems correct because the client config might not be loaded or might be missing fields when not logged in, but I wasn't entirely sure about that.

It might be something to consider changing in the future when we properly type the values coming from the server instead of just sending down a load of strings.

},
);

export const getTeammateNameDisplaySetting: (state: GlobalState) => string = createSelector(
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The return value of this used to be nullable which the web app used to be fine with before. Now that we've merged the repos, it started complaining about type issues, so I made it not nullable and added a default value below.

const baseState = Object.assign({}, initialState, preloadedState);

const store = createStore(
createDevReducer(baseState, serviceReducer, appReducer) as any,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had to change these invocations of createDevReducer to return any as well. There's definitely a better fix for this, but something is really messed up already with all these anys thrown around in this file.

Copy link
Member

@crspeller crspeller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work!
I checked it it builds locally for me. All my editor stuff like jump to definition works. Seems painless.
Unfortunate that we couldn't preserve the history. I guess we will just have to blame you for everything 🙃

@hmhealey hmhealey self-assigned this Mar 18, 2021
@saturninoabril
Copy link
Member

@hmhealey You've probably considered it already but just like to mention here. We're importing mattermost-redux in Cypress, primarily for Client and types. I wonder how/when to update it. Thanks!

@hmhealey
Copy link
Member Author

@saturninoabril How often do you need to update that for new changes in mattermost-redux? Since we can't easily update the npm package until we get the monorepo fully up and running, I can look at having it bypass npm for it for the time being if that's necessary.

Copy link
Contributor

@hahmadia hahmadia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looked through the changes and they all made sense.
Thank you and everyone who worked on this for the hard work!

Copy link
Contributor

@nickmisasi nickmisasi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Built and poked around the webapp, didn't see any obvious issues. My mac really chugged in loading the diff but what I could see looked fine! Awesome work!

@saturninoabril
Copy link
Member

How often do you need to update that for new changes in mattermost-redux?

Honestly, it's not often and in most cases, it can wait for the published version. However, it would be good as well to bypass the npm so that any local dev change in mattermost-redux (sub)package can be used side-by-side for Cypress scripting.

@jgilliam17
Copy link
Contributor

@hmhealey Here are the Cypress test results and master prod results for comparison. Failures and skipped tests are known issues.
Also thank you @josephbaylon and @saturninoabril for starting and checking the test.

@hmhealey
Copy link
Member Author

Sounds like the E2E tests will fit perfectly in a monorepo environment :)

Copy link
Member

@lieut-data lieut-data left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks excellent, @hmhealey! Looking forward to breaking this up slowly in the future :)

@@ -3914,6 +3914,7 @@
"signup.office365": "Office 365",
"signup.saml.icon": "SAML Icon",
"signup.title": "Create an account with:",
"someting.string": "defaultString",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like a historical typo? "something"?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it's a historical typo. This string is actually just in a mattermost-redux unit test, not in the actual code, so I'm not too concerned about fixing it right now. We should probably update i18n-extract at some point to not look at test files.

Copy link
Member

@calebroseland calebroseland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is going to improve so many workflows! Thanks for all your (and others') work on this. 🔥

@nevyangelova
Copy link
Contributor

🎉 🎉 🎉

Copy link
Contributor

@grundleborg grundleborg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Giving a 👍 to the general approach. I haven't even attempted a line-by-line review of the diff.

@hmhealey
Copy link
Member Author

hmhealey commented Mar 22, 2021

I haven't even attempted a line-by-line review of the diff.

Yeah, I wasn't expecting anyone to review it in depth. Even reviewing the notes I took above was probably unnecessary.

@hmhealey hmhealey added 4: Reviews Complete All reviewers have approved the pull request and removed 2: Dev Review Requires review by a core commiter 3: QA Review Requires review by a QA tester labels Mar 22, 2021
@hmhealey hmhealey merged commit 3fe62b0 into master Mar 22, 2021
@hmhealey hmhealey deleted the hh_migrate-mattermost-redux branch March 22, 2021 13:46
@mattermod mattermod removed the Setup Cloud Test Server Setup a test server using Mattermost Cloud label Mar 22, 2021
@mm-cloud-bot
Copy link

Test server destroyed

1 similar comment
@mm-cloud-bot
Copy link

Test server destroyed

@amyblais amyblais added Changelog/Not Needed Does not require a changelog entry Docs/Not Needed Does not require documentation labels Mar 22, 2021
jwilander added a commit that referenced this pull request Mar 30, 2021
* Translations update from Weblate (#7701)

* Translated using Weblate (Dutch)

Currently translated at 100.0% (4483 of 4483 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/nl/

* Translated using Weblate (Romanian)

Currently translated at 100.0% (4483 of 4483 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/ro/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 98.2% (4405 of 4483 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/zh_Hans/

* Translated using Weblate (Korean)

Currently translated at 79.3% (3559 of 4483 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/ko/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (4483 of 4483 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/tr/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (4484 of 4484 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/bg/

Co-authored-by: Tom De Moor <tom@controlaltdieliet.be>
Co-authored-by: Viorel-Cosmin Miron <cosmin@uhlhost.net>
Co-authored-by: aeomin <lin@aeomin.net>
Co-authored-by: Ji-Hyeon Gim <potatogim@potatogim.net>
Co-authored-by: Kaya Zeren <kayazeren@gmail.com>
Co-authored-by: Nikolai Zahariev <nikolaiz@yahoo.com>

* [MM-20373/GH-16733] - Migrate 'components/should_verify_email' module and associated tests to TypeScript (#7433)

* Migrate components/should_verify_email module and associated test file to TypeScript

* Rename components/should_verify_email test snapshot file to tsx

* Move type declaration of title to follow func param in components/should_verify_email

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* MM-19925-remove role from user card (#7520)

* remove role from user card

* Update system_user_detail.tsx

Remove commented out code.

* remove unused variable

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* MM32642 - increase invite others visibility (#7645)

* MM-32642 - increase invite others visibility

* make changes based on PR comments

* Modify the svg to use the theme vars

* use the right variable names

* change icons and use theme variables in svg

* fix linter issues

* fix the mm-redux hash commit

* fix linter issues

* fix ts weird problems

* add PR comments  ux suggestions

* fix button styles

* revert my fix for delete-channel

Co-authored-by: Pablo Velez Vidal <pablo.velez@mattermost.com>

* fixed background-color on hover to use theme color correctly (#7680)

* Promoting regularly passing tests from 03/08 to 03/15 (#7709)

* Clarify that System & Team admins can delete posts (#7544)

* [MM-32429] Content Cards (#7469)

* adding new card component

Co-authored-by: Benjamin Cooke <benjamincooke@Benjamins-MacBook-Pro.local>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* [MM-33796][MM-33780] Updating channel switcher css system console (#7696)

Automatic Merge

* MM32771 - improve tips and next steps cards (#7686)

* MM32771 - improve tips and next steps cards

* apply changes based on PR comments

* fix i18n file

* fix the hover state for the system console back button

Co-authored-by: Pablo Velez Vidal <pablo.velez@mattermost.com>

* Only use fake timers for tests that need them (#7714)

* fix E2E for cloud (#7710)

* MM-33907 - fix admin console heigh and show save buttons (#7715)

Co-authored-by: Pablo Velez Vidal <pablo.velez@mattermost.com>

* [MM-32831] Change show-more background to be highlighted on permanlink views (#7636)

* change show-more background to be highlighted on permanlink views

* remove changeCSS usage as per review recommendation

* address CR comments

* fix animation timer, fix pinned post colors

* changing alpha to work correctly

Co-authored-by: = <=>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* remove legacy open-sans fonts, upgrade to v18 (#7661)

* remove legacy open-sans fonts, upgrade to v18

Adopt the "Practical Level of Browser Support" for our Open Sans font, as outlined on https://css-tricks.com/snippets/css/using-font-face/, and effected via the [google-webfonts-helper](https://google-webfonts-helper.herokuapp.com/fonts/open-sans?subsets=cyrillic,cyrillic-ext,greek,greek-ext,latin,latin-ext,vietnamese), along with documentation on how to do this in the future.

As part of this, upgrade open sans from `v13` to `v18` (not the embedded version number, but the one reported by google-webfonts-helper), and eliminating an issue with the kerning table that generated errors on Firefox.

Fixes: https://mattermost.atlassian.net/browse/MM-33632

* remove unneeded zip file

* MM-24009: remove redux-offline (#7648)

* remove remote-redux-devtools

* remove network detection

* actually enable frozen stores in development

* npm install --save github:mattermost/mattermost-redux#d54b2f6dbe57376ad1efe25bfabb84c1a5b6bbf6

* npm install --save github:mattermost/mattermost-redux#10a53b09bbba6b7708e97ada073b6d3be727d405

* remove redux-offline references in tests

* npm install --save github:mattermost/mattermost-redux#0eb28bd2c6796bed843f829125fb18b941b8e43d

* fix completely unrelated delete channel modal

* npm install --save github:mattermost/mattermost-redux#a9a44d557582a5b048c72d4eb2600d7d9032b3fd

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* Fixing site_statistics_spec (#7716)

* Fixing site_statistics_spec

* lint fix

* Cleaning up the fixed file

* [MM-33648] - Remove possible confusion point after a member notifies the admin about inviting more users the "Not right now" button remains (#7711)

* [MM-33648] - Possible confusion point: After a member notifies the admin about inviting more users the 'Not right now' button remains

* Change svg

* Update snap

* Feedback impl

* Fix lint rule collisions

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* MM-29726 Allow disabling link previews from certain domains (#7479)

* Add a field for restricted link preview

* Add english localization for preview restriction

* Add disable condition to link preview field

* Change example domains text

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>

* Scrolling the logout button into view so that it is visible (#7719)

* [MM-20603] Migrate components/team_settings to TypeScript (#7653)

* Migrated index.js --> index.ts

* Migrated team_settings.jsx --> team_settings.tsx

* Removed undefined from component return type

* Removed isRequired for a few props in team_general_tab.jsx

* Changed updateSection function signature

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* MM-30407: improve slow typing (#7685)

* Add channel_icon for email notification redesign. (#7707)

* Fix status dropdown (#7725)

* Fixing status dropdown test for custom status

* Forcing click to avoid unexpected failure while saving

* Demoting consistently failing tests from prod to unstable (#7728)

* Translations update from Weblate (#7732)

* Translated using Weblate (German)

Currently translated at 88.2% (3955 of 4484 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/de/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (4484 of 4484 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/nl/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/

* Translated using Weblate (Polish)

Currently translated at 82.4% (3699 of 4485 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/pl/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (4490 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (4484 of 4484 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (4488 of 4488 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/tr/

Translated using Weblate (Turkish)

Currently translated at 100.0% (4485 of 4485 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/tr/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (4490 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/sv/

Translated using Weblate (Swedish)

Currently translated at 99.8% (4480 of 4485 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/sv/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (4485 of 4485 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/bg/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (4490 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (4484 of 4484 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/nl/

Translated using Weblate (Dutch)

Currently translated at 100.0% (4488 of 4488 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/nl/

* Translated using Weblate (Japanese)

Currently translated at 99.5% (4462 of 4484 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/ja/

* Translated using Weblate (French)

Currently translated at 90.3% (4057 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/fr/

* Translated using Weblate (French)

Currently translated at 90.4% (4060 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/fr/

* Translated using Weblate (German)

Currently translated at 87.9% (3947 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/de/

* Translated using Weblate (Spanish)

Currently translated at 97.3% (4371 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/es/

* Translated using Weblate (French)

Currently translated at 90.4% (4060 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/fr/

Co-authored-by: Elisabeth Kulzer <elisabeth.kulzer@mattermost.com>
Co-authored-by: Tom De Moor <tom@controlaltdieliet.be>
Co-authored-by: Michał Sobkiewicz <perceptron8@gmail.com>
Co-authored-by: Kaya Zeren <kayazeren@gmail.com>
Co-authored-by: MArtin Johnson <martinjohnson@bahnhof.se>
Co-authored-by: Nikolai Zahariev <nikolaiz@yahoo.com>
Co-authored-by: kaakaa <stooner.hoe@gmail.com>
Co-authored-by: Pierre JENICOT <pierre.jenicot@ac-lille.fr>
Co-authored-by: Cyril LD <c.laguilhon.debat@petitclou.de>
Co-authored-by: Markus Marcinek <markus.marcinek@outlook.de>
Co-authored-by: jesus.espino <jesus@mattermost.com>
Co-authored-by: Nathanaël <contact@nathanaelhoun.fr>

* [MM-31411][MM-32164] - Add profile picture to Direct Channels link (#7516)

* [MM-31411] - Add profile picture to Direct Channels link

* Resolve PR comments

* Update according to new design

* adjust paddings

* Fix padding

* Update mobile view

* remove padding for webview

* remove mobile check in component

* Fix group icon padding

* Adjust padding

Co-authored-by: Nevyana Angelova <nevyangelova@Nevyanas-MacBook-Pro-2.local>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Nevyana Angelova <nevyangelova@Nevyanas-MacBook-Pro.local>

* Move mattermost-redux into mattermost-webapp (#7723)

* Add changes to existing files from migration script

* Add mattermost-redux files

* Update CI scripts

* Of course i18n-extract picked up something in the mattermost-redux tests :p

* Update build Docker image to Node 14 (#7742)

* [MM-33609] - Fix team icon coverage on firefox (#7734)

Co-authored-by: Nevyana Angelova <nevyangelova@Nevyanas-MacBook-Pro.local>

* Updating status_dropdown_spec with missing test cases (#7727)

* Updating status_dropdown_spec with missing test cases

* Enabling custom status by default and cleaning up the spec file

* Admin guide link should be different for cloud or on-premise instances (#7752)

Signed-off-by: Mario de Frutos <mario@defrutos.org>

* [MM-22840/GH-14198] DMs (More dialog): show recent 20 with relative timestamp (#6913)

* [MM-34183] - Getting Started Step 3 (Invite members to team) for new users on paid Workspace above 10 users are unable to invite members via email (#7745)

* [MM-34183] - Getting Started Step 3 (Invite members to team) for new users on paid Workspace above 10 users are unable to invite members via email

* Add some tests

* Feedback impl-1

* [MM-29959] restrict 'Manage Roles' button to system admins (#7695)

Automatic Merge

* Remove Custom statuses feature flag (#7641)

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* fix E2E for file previews (#7754)

* upgrade Cypress to v6.8.0 (#7761)

* MM-34235 - remove trailing slash causing nav bar to hide (#7760)

Co-authored-by: Pablo Velez Vidal <pablo.velez@mattermost.com>

* [GH-15906][MM-22844] Change channel_icon for email notification redesign. (#7762)

* Change channel_icon

* Rename channel_icon

* [MM-33102] Don't show warning and Fix support Link on Cloud (#7756)

* Dont show banner and fix link

* fix extra name

* fix linting

* fix test

* change type

* update snapshot

* update snapshot

* MM-25140 Fix unit tests which are broken on Node 14 (#7741)

* Fix async handleSubmit methods returning early

* Mock PQueue in DataPrefetch tests

* MM-34114 - grab users stats on demand to fix invite buttons logic (#7766)

* MM-34114 - grab users stats on demand to fix invite buttons logic

* Add MR suggestions changes

* improve JS validation

Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>

Co-authored-by: Pablo Velez Vidal <pablo.velez@mattermost.com>
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>

* MM-18107: Precursory refactoring and supporting code (#7744)

* support fallback loading content

* refactor: no results indicator

* refactor: explicit channel id

* refactor: rhs_search_nav

* remove old no_results_indicator css

* fix icon color

* refactor: profile_popover action

* comment line

* use readily accessible channel id

* dedupe

* support explicit channelId in more places

* update snapshots

* graceful channel-less profile popover

* Translations update from Weblate (#7776)

* Translated using Weblate (Spanish)

Currently translated at 98.7% (4436 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/es/

Translated using Weblate (Spanish)

Currently translated at 98.0% (4404 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/es/

* Translated using Weblate (Spanish)

Currently translated at 98.7% (4436 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/es/

Translated using Weblate (Spanish)

Currently translated at 98.0% (4404 of 4490 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/es/

* Translated using Weblate (French)

Currently translated at 90.8% (4080 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/fr/

Translated using Weblate (French)

Currently translated at 90.5% (4066 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/fr/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (4491 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/nl/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (4491 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/tr/

* Translated using Weblate (Russian)

Currently translated at 91.9% (4129 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/ru/

Translated using Weblate (Russian)

Currently translated at 90.9% (4084 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/ru/

* Added translation using Weblate (English (Australia))

* Translated using Weblate (English (Australia))

Currently translated at 100.0% (4491 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/en_AU/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 97.7% (4389 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/zh_Hans/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 90.5% (4066 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/zh_Hant/

* Translated using Weblate (Korean)

Currently translated at 79.2% (3560 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/ko/

* Deleted translation using Weblate (English (Australia))

* Translated using Weblate (French)

Currently translated at 90.7% (4077 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/fr/

* Translated using Weblate (Japanese)

Currently translated at 99.5% (4472 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/ja/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (4491 of 4491 strings)

Translation: mattermost-languages-shipped/mattermost-webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/mattermost-webapp_master/sv/

Co-authored-by: jesus.espino <jesus@mattermost.com>
Co-authored-by: Guillermo Vayá <guivaya@gmail.com>
Co-authored-by: Nathanaël <contact@nathanaelhoun.fr>
Co-authored-by: Tom De Moor <tom@controlaltdieliet.be>
Co-authored-by: Kaya Zeren <kayazeren@gmail.com>
Co-authored-by: Edward Smirnov <ed@microolap.com>
Co-authored-by: Matthew Williams <en_AU@controlaltdieliet.be>
Co-authored-by: aeomin <lin@aeomin.net>
Co-authored-by: Yao Xie <zukerherr@gmail.com>
Co-authored-by: teamzamong <heekang@korea.ac.kr>
Co-authored-by: Pierre JENICOT <pierre.jenicot@ac-lille.fr>
Co-authored-by: YorimiMochida <yuuman002@gmail.com>
Co-authored-by: MArtin Johnson <martinjohnson@bahnhof.se>

* Make webapp build faster. (#7779)

* Removing Beta from sv and bg (#7764)

* Removing Beta from sv and bg

* Updated the snapshots

Co-authored-by: Tom De Moor <tom@controlaltdieliet.be>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* MM-34055 Re-add border to Markdown preview (#7747)

* MM-32882: Add an unread badge/marker to the Main Menu icon and the ‘Plugin Marketplace’ Menu Item (#7563)

* [MM-34163][MM-34165] - UI fixes to direct channel profile pics (#7777)

* [MM-34163] - UI fixes to direct channel profile pics

* Update snapshot

* increase status icon bg by 1px

Co-authored-by: Nevyana Angelova <nevyangelova@Nevyanas-MacBook-Pro.local>

Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Tom De Moor <tom@controlaltdieliet.be>
Co-authored-by: Viorel-Cosmin Miron <cosmin@uhlhost.net>
Co-authored-by: aeomin <lin@aeomin.net>
Co-authored-by: Ji-Hyeon Gim <potatogim@potatogim.net>
Co-authored-by: Kaya Zeren <kayazeren@gmail.com>
Co-authored-by: Nikolai Zahariev <nikolaiz@yahoo.com>
Co-authored-by: Lucie Vrsovska <46979603+lucievr@users.noreply.github.com>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
Co-authored-by: Pablo Andrés Vélez Vidal <pablovv2012@gmail.com>
Co-authored-by: Pablo Velez Vidal <pablo.velez@mattermost.com>
Co-authored-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com>
Co-authored-by: Prapti <praptishrestha@gmail.com>
Co-authored-by: Ben Bodenmiller <bbodenmiller@gmail.com>
Co-authored-by: Ben Cooke <benkcooke@gmail.com>
Co-authored-by: Benjamin Cooke <benjamincooke@Benjamins-MacBook-Pro.local>
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
Co-authored-by: Saturnino Abril <saturnino.abril@gmail.com>
Co-authored-by: Guillermo Vayá <guillermo.vaya@mattermost.com>
Co-authored-by: Jesse Hallam <jesse.hallam@gmail.com>
Co-authored-by: Allan Guwatudde <guwats10@gmail.com>
Co-authored-by: Berke Kalkan <42390512+berkeka@users.noreply.github.com>
Co-authored-by: David Janda <djanda97@gmail.com>
Co-authored-by: Jyoti Patel <36148363+jp0707@users.noreply.github.com>
Co-authored-by: Elisabeth Kulzer <elisabeth.kulzer@mattermost.com>
Co-authored-by: Michał Sobkiewicz <perceptron8@gmail.com>
Co-authored-by: MArtin Johnson <martinjohnson@bahnhof.se>
Co-authored-by: kaakaa <stooner.hoe@gmail.com>
Co-authored-by: Pierre JENICOT <pierre.jenicot@ac-lille.fr>
Co-authored-by: Cyril LD <c.laguilhon.debat@petitclou.de>
Co-authored-by: Markus Marcinek <markus.marcinek@outlook.de>
Co-authored-by: jesus.espino <jesus@mattermost.com>
Co-authored-by: Nathanaël <contact@nathanaelhoun.fr>
Co-authored-by: Nev Angelova <nevy.angelova@gmail.com>
Co-authored-by: Nevyana Angelova <nevyangelova@Nevyanas-MacBook-Pro-2.local>
Co-authored-by: Nevyana Angelova <nevyangelova@Nevyanas-MacBook-Pro.local>
Co-authored-by: Mario de Frutos Dieguez <mario@defrutos.org>
Co-authored-by: Caleb Roseland <caleb.roseland@mattermost.com>
Co-authored-by: Max Erenberg <max.erenberg@mattermost.com>
Co-authored-by: Jesús Espino <jespinog@gmail.com>
Co-authored-by: Hossein <hahmadia@users.noreply.github.com>
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
Co-authored-by: Guillermo Vayá <guivaya@gmail.com>
Co-authored-by: Edward Smirnov <ed@microolap.com>
Co-authored-by: Matthew Williams <en_AU@controlaltdieliet.be>
Co-authored-by: Yao Xie <zukerherr@gmail.com>
Co-authored-by: teamzamong <heekang@korea.ac.kr>
Co-authored-by: YorimiMochida <yuuman002@gmail.com>
Co-authored-by: Elisabeth Kulzer <elikul@elikul.de>
Co-authored-by: ctlaltdieliet <github3@controlaltdieliet.be>
Co-authored-by: catalintomai <56169943+catalintomai@users.noreply.github.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
4: Reviews Complete All reviewers have approved the pull request Changelog/Not Needed Does not require a changelog entry Docs/Not Needed Does not require documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.