From b46b7ee7d5e09f9017b26ddef31e555e86b4ece8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=BAlia=20Jaeger=20Foresti?=
<60678893+juliajforesti@users.noreply.github.com>
Date: Wed, 20 Sep 2023 14:16:32 -0300
Subject: [PATCH 001/159] regression: `LoginForm` validation (#30443)
Co-authored-by: Douglas Fabris <27704687+dougfabris@users.noreply.github.com>
---
packages/web-ui-registration/src/LoginForm.tsx | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/packages/web-ui-registration/src/LoginForm.tsx b/packages/web-ui-registration/src/LoginForm.tsx
index efc7e6268feb..9052cb945fec 100644
--- a/packages/web-ui-registration/src/LoginForm.tsx
+++ b/packages/web-ui-registration/src/LoginForm.tsx
@@ -82,8 +82,6 @@ export const LoginForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRoute
}
setErrorOnSubmit('user-not-found');
- setError('username', { type: 'user-not-found', message: t('registration.component.login.userNotFound') });
- setError('password', { type: 'user-not-found', message: t('registration.component.login.incorrectPassword') });
},
});
@@ -95,11 +93,15 @@ export const LoginForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRoute
if (loginFormRef.current) {
loginFormRef.current.focus();
}
- }, []);
+ }, [errorOnSubmit]);
const renderErrorOnSubmit = (error: LoginErrors) => {
const { type, i18n } = LOGIN_SUBMIT_ERRORS[error];
- return {t(i18n)};
+ return (
+
+ {t(i18n)}
+
+ );
};
if (errors.username?.type === 'invalid-email') {
@@ -132,7 +134,7 @@ export const LoginForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRoute
})}
placeholder={usernameOrEmailPlaceholder || t('registration.component.form.emailPlaceholder')}
error={errors.username?.message}
- aria-invalid={errors.username ? 'true' : 'false'}
+ aria-invalid={errors.username || errorOnSubmit ? 'true' : 'false'}
aria-describedby={`${usernameId}-error`}
id={usernameId}
/>
@@ -154,7 +156,7 @@ export const LoginForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRoute
})}
placeholder={passwordPlaceholder}
error={errors.password?.message}
- aria-invalid={errors.password ? 'true' : 'false'}
+ aria-invalid={errors.password || errorOnSubmit ? 'true' : 'false'}
aria-describedby={`${passwordId}-error`}
id={passwordId}
/>
From ff8e9d9f54020c7cdf7b1302c19f8592fbdcf215 Mon Sep 17 00:00:00 2001
From: rocketchat-github-ci
Date: Thu, 21 Sep 2023 15:18:27 +0000
Subject: [PATCH 002/159] Bump 6.3.8
---
.changeset/bump-patch-1695309507614.md | 5 +++++
yarn.lock | 16 ++++++++--------
2 files changed, 13 insertions(+), 8 deletions(-)
create mode 100644 .changeset/bump-patch-1695309507614.md
diff --git a/.changeset/bump-patch-1695309507614.md b/.changeset/bump-patch-1695309507614.md
new file mode 100644
index 000000000000..e1eaa7980afb
--- /dev/null
+++ b/.changeset/bump-patch-1695309507614.md
@@ -0,0 +1,5 @@
+---
+'@rocket.chat/meteor': patch
+---
+
+Bump @rocket.chat/meteor version.
diff --git a/yarn.lock b/yarn.lock
index bf0ee10b6019..dcda640300f3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9898,9 +9898,9 @@ __metadata:
"@rocket.chat/icons": "*"
"@rocket.chat/prettier-config": "*"
"@rocket.chat/styled": "*"
- "@rocket.chat/ui-contexts": 1.0.6
+ "@rocket.chat/ui-contexts": 1.0.7
"@rocket.chat/ui-kit": "*"
- "@rocket.chat/ui-video-conf": 1.0.6
+ "@rocket.chat/ui-video-conf": 1.0.7
"@tanstack/react-query": "*"
react: "*"
react-dom: "*"
@@ -9982,14 +9982,14 @@ __metadata:
ts-jest: ~29.0.5
typescript: ~5.1.3
peerDependencies:
- "@rocket.chat/core-typings": 6.3.6
+ "@rocket.chat/core-typings": 6.3.7
"@rocket.chat/css-in-js": "*"
"@rocket.chat/fuselage": "*"
"@rocket.chat/fuselage-tokens": "*"
"@rocket.chat/message-parser": "*"
"@rocket.chat/styled": "*"
- "@rocket.chat/ui-client": 1.0.6
- "@rocket.chat/ui-contexts": 1.0.6
+ "@rocket.chat/ui-client": 1.0.7
+ "@rocket.chat/ui-contexts": 1.0.7
katex: "*"
react: "*"
languageName: unknown
@@ -11048,7 +11048,7 @@ __metadata:
"@rocket.chat/fuselage": "*"
"@rocket.chat/fuselage-hooks": "*"
"@rocket.chat/icons": "*"
- "@rocket.chat/ui-contexts": 1.0.6
+ "@rocket.chat/ui-contexts": 1.0.7
react: ~17.0.2
languageName: unknown
linkType: soft
@@ -11202,7 +11202,7 @@ __metadata:
"@rocket.chat/fuselage-hooks": "*"
"@rocket.chat/icons": "*"
"@rocket.chat/styled": "*"
- "@rocket.chat/ui-contexts": 1.0.6
+ "@rocket.chat/ui-contexts": 1.0.7
react: ^17.0.2
react-dom: ^17.0.2
languageName: unknown
@@ -11268,7 +11268,7 @@ __metadata:
typescript: ~5.1.3
peerDependencies:
"@rocket.chat/layout": "*"
- "@rocket.chat/ui-contexts": 1.0.6
+ "@rocket.chat/ui-contexts": 1.0.7
"@tanstack/react-query": "*"
react: "*"
react-hook-form: "*"
From ec60dbe8f5666b22d971b5fb9bc8a637668976c8 Mon Sep 17 00:00:00 2001
From: Matheus Barbosa Silva
<36537004+matheusbsilva137@users.noreply.github.com>
Date: Thu, 21 Sep 2023 14:50:28 -0300
Subject: [PATCH 003/159] fix: Custom translations do not work (#30383)
Co-authored-by: Yash Rajpal <58601732+yash-rajpal@users.noreply.github.com>
---
.changeset/cuddly-donkeys-remember.md | 5 +++++
apps/meteor/client/providers/TranslationProvider.tsx | 5 +++++
2 files changed, 10 insertions(+)
create mode 100644 .changeset/cuddly-donkeys-remember.md
diff --git a/.changeset/cuddly-donkeys-remember.md b/.changeset/cuddly-donkeys-remember.md
new file mode 100644
index 000000000000..237aafe7f95b
--- /dev/null
+++ b/.changeset/cuddly-donkeys-remember.md
@@ -0,0 +1,5 @@
+---
+"@rocket.chat/meteor": patch
+---
+
+Fixed custom translations not being displayed
diff --git a/apps/meteor/client/providers/TranslationProvider.tsx b/apps/meteor/client/providers/TranslationProvider.tsx
index fdddb9ec5349..e379d13dfb79 100644
--- a/apps/meteor/client/providers/TranslationProvider.tsx
+++ b/apps/meteor/client/providers/TranslationProvider.tsx
@@ -79,6 +79,11 @@ const useI18next = (lng: string): typeof i18next => {
if (prefix) {
result[key.slice(prefix.length + 1)] = value;
+ continue;
+ }
+
+ if (Array.isArray(namespaces) ? namespaces.includes('core') : namespaces === 'core') {
+ result[key] = value;
}
}
}
From 7cb0ce05fb668561fff01e2f6fdd9e541aba587f Mon Sep 17 00:00:00 2001
From: Diego Sampaio
Date: Tue, 19 Sep 2023 12:39:38 -0300
Subject: [PATCH 004/159] ci: Add step to notify external services about a new
release after Docker image publish (#30436)
---
.github/workflows/ci.yml | 102 +++++++++++++++++++++++++--------------
1 file changed, 67 insertions(+), 35 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index aa86468e1895..09b561675e94 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -323,13 +323,16 @@ jobs:
echo finished
deploy:
- name: 🚀 Publish build and update our registry
+ name: 🚀 Publish build assets
runs-on: ubuntu-20.04
if: github.event_name == 'release' || github.ref == 'refs/heads/develop'
needs: [tests-done, release-versions]
steps:
- - uses: actions/checkout@v3
+ - uses: Bhacaz/checkout-files@v2
+ with:
+ files: package.json
+ branch: ${{ github.ref }}
- name: Restore build
uses: actions/download-artifact@v3
@@ -343,32 +346,17 @@ jobs:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: 'us-east-1'
GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
- REDHAT_REGISTRY_PID: ${{ secrets.REDHAT_REGISTRY_PID }}
- REDHAT_REGISTRY_KEY: ${{ secrets.REDHAT_REGISTRY_KEY }}
- UPDATE_TOKEN: ${{ secrets.UPDATE_TOKEN }}
run: |
REPO_VERSION=$(node -p "require('./package.json').version")
+
if [[ '${{ github.event_name }}' = 'release' ]]; then
GIT_TAG="${GITHUB_REF#*tags/}"
- GIT_BRANCH=""
ARTIFACT_NAME="${REPO_VERSION}"
- RC_VERSION=$GIT_TAG
-
- if [[ '${{ needs.release-versions.outputs.release }}' = 'release-candidate' ]]; then
- SNAP_CHANNEL=candidate
- RC_RELEASE=candidate
- elif [[ '${{ needs.release-versions.outputs.release }}' = 'latest' ]]; then
- SNAP_CHANNEL=stable
- RC_RELEASE=stable
- fi
else
GIT_TAG=""
- GIT_BRANCH="${GITHUB_REF#*heads/}"
ARTIFACT_NAME="${REPO_VERSION}.$GITHUB_SHA"
- RC_VERSION="${REPO_VERSION}"
- SNAP_CHANNEL=edge
- RC_RELEASE=develop
fi;
+
ROCKET_DEPLOY_DIR="/tmp/deploy"
FILENAME="$ROCKET_DEPLOY_DIR/rocket.chat-$ARTIFACT_NAME.tgz";
@@ -386,22 +374,6 @@ jobs:
aws s3 cp $ROCKET_DEPLOY_DIR/ s3://download.rocket.chat/build/ --recursive
- curl -H "Content-Type: application/json" -H "X-Update-Token: $UPDATE_TOKEN" -d \
- "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"4.4\", \"5.0\", \"6.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"$RC_RELEASE\"}" \
- https://releases.rocket.chat/update
-
- # Makes build fail if the release isn't there
- curl --fail https://releases.rocket.chat/$RC_VERSION/info
-
- if [[ $GIT_TAG ]]; then
- curl -X POST \
- https://connect.redhat.com/api/v2/projects/$REDHAT_REGISTRY_PID/build \
- -H "Authorization: Bearer $REDHAT_REGISTRY_KEY" \
- -H 'Cache-Control: no-cache' \
- -H 'Content-Type: application/json' \
- -d '{"tag":"'$GIT_TAG'"}'
- fi
-
build-docker-preview:
name: 🚢 Build Docker Image (preview)
runs-on: ubuntu-20.04
@@ -632,6 +604,66 @@ jobs:
echo "::endgroup::"
+ notify-services:
+ name: 🚀 Notify external services
+ runs-on: ubuntu-20.04
+ needs:
+ - services-docker-image-publish
+ - docker-image-publish
+ - release-versions
+ steps:
+ - uses: Bhacaz/checkout-files@v2
+ with:
+ files: package.json
+ branch: ${{ github.ref }}
+
+ - name: Releases service
+ env:
+ UPDATE_TOKEN: ${{ secrets.UPDATE_TOKEN }}
+ run: |
+ REPO_VERSION=$(node -p "require('./package.json').version")
+
+ if [[ '${{ github.event_name }}' = 'release' ]]; then
+ GIT_TAG="${GITHUB_REF#*tags/}"
+ GIT_BRANCH=""
+ ARTIFACT_NAME="${REPO_VERSION}"
+ RC_VERSION=$GIT_TAG
+
+ if [[ '${{ needs.release-versions.outputs.release }}' = 'release-candidate' ]]; then
+ RC_RELEASE=candidate
+ elif [[ '${{ needs.release-versions.outputs.release }}' = 'latest' ]]; then
+ RC_RELEASE=stable
+ fi
+ else
+ GIT_TAG=""
+ GIT_BRANCH="${GITHUB_REF#*heads/}"
+ ARTIFACT_NAME="${REPO_VERSION}.$GITHUB_SHA"
+ RC_VERSION="${REPO_VERSION}"
+ RC_RELEASE=develop
+ fi;
+
+ curl -H "Content-Type: application/json" -H "X-Update-Token: $UPDATE_TOKEN" -d \
+ "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"4.4\", \"5.0\", \"6.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"$RC_RELEASE\"}" \
+ https://releases.rocket.chat/update
+
+ # Makes build fail if the release isn't there
+ curl --fail https://releases.rocket.chat/$RC_VERSION/info
+
+ - name: RedHat Registry
+ if: github.event_name == 'release'
+ env:
+ REDHAT_REGISTRY_PID: ${{ secrets.REDHAT_REGISTRY_PID }}
+ REDHAT_REGISTRY_KEY: ${{ secrets.REDHAT_REGISTRY_KEY }}
+ run: |
+ GIT_TAG="${GITHUB_REF#*tags/}"
+
+ curl -X POST \
+ https://connect.redhat.com/api/v2/projects/$REDHAT_REGISTRY_PID/build \
+ -H "Authorization: Bearer $REDHAT_REGISTRY_KEY" \
+ -H 'Cache-Control: no-cache' \
+ -H 'Content-Type: application/json' \
+ -d '{"tag":"'$GIT_TAG'"}'
+
trigger-dependent-workflows:
runs-on: ubuntu-latest
if: github.event_name == 'release'
From ef982c22028eba9a8460c9e82dcbd5f3746ec1a8 Mon Sep 17 00:00:00 2001
From: Guilherme Gazzo
Date: Tue, 19 Sep 2023 19:32:05 -0300
Subject: [PATCH 005/159] chore: update meteor 2.13.0 (#29989)
Co-authored-by: Diego Sampaio
---
apps/meteor/.meteor/packages | 4 ++--
apps/meteor/.meteor/release | 2 +-
apps/meteor/.meteor/versions | 10 +++++-----
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/apps/meteor/.meteor/packages b/apps/meteor/.meteor/packages
index 37b95896612c..1a59026a80d3 100644
--- a/apps/meteor/.meteor/packages
+++ b/apps/meteor/.meteor/packages
@@ -25,7 +25,7 @@ accounts-password@2.3.4
accounts-twitter@1.5.0
pauli:accounts-linkedin
-google-oauth@1.4.3
+google-oauth@1.4.4
oauth@2.2.0
oauth2@1.3.2
@@ -39,7 +39,7 @@ meteor-base@1.5.1
ddp-common@1.4.0
webapp@1.13.5
-mongo@1.16.6
+mongo@1.16.7
reload@1.3.1
service-configuration@1.3.1
diff --git a/apps/meteor/.meteor/release b/apps/meteor/.meteor/release
index e8cfc7ec4c01..6641d0478a10 100644
--- a/apps/meteor/.meteor/release
+++ b/apps/meteor/.meteor/release
@@ -1 +1 @@
-METEOR@2.12
+METEOR@2.13.3
diff --git a/apps/meteor/.meteor/versions b/apps/meteor/.meteor/versions
index 5e394526000d..5949c2258e3b 100644
--- a/apps/meteor/.meteor/versions
+++ b/apps/meteor/.meteor/versions
@@ -22,7 +22,7 @@ ddp@1.4.1
ddp-client@2.6.1
ddp-common@1.4.0
ddp-rate-limiter@1.2.0
-ddp-server@2.6.1
+ddp-server@2.6.2
diff-sequence@1.1.2
dispatch:run-as-user@1.1.1
dynamic-import@0.7.3
@@ -38,7 +38,7 @@ facts-base@1.0.1
fetch@0.1.3
geojson-utils@1.0.11
github-oauth@1.4.1
-google-oauth@1.4.3
+google-oauth@1.4.4
hot-code-push@1.0.4
http@2.0.0
id-map@1.1.1
@@ -47,7 +47,7 @@ jquery@3.0.0
kadira:flow-router@2.12.1
localstorage@1.2.0
logging@1.3.2
-meteor@1.11.2
+meteor@1.11.3
meteor-base@1.5.1
meteor-developer-oauth@1.3.2
meteorhacks:inject-initial@1.0.5
@@ -57,7 +57,7 @@ minimongo@1.9.3
modern-browsers@0.1.9
modules@0.19.0
modules-runtime@0.13.1
-mongo@1.16.6
+mongo@1.16.7
mongo-decimal@0.1.3
mongo-dev-server@1.1.0
mongo-id@1.0.8
@@ -94,7 +94,7 @@ socket-stream-client@0.5.1
standard-minifier-css@1.9.2
standard-minifier-js@2.8.1
tracker@1.3.2
-twitter-oauth@1.3.2
+twitter-oauth@1.3.3
typescript@4.9.4
underscore@1.0.13
url@1.3.2
From ac48589eac753241798d2bae398398dc07b367b2 Mon Sep 17 00:00:00 2001
From: gabriellsh <40830821+gabriellsh@users.noreply.github.com>
Date: Fri, 22 Sep 2023 13:25:59 -0300
Subject: [PATCH 006/159] regression: Videoconf message actions (#30456)
---
.../app/ui-utils/client/lib/messageActionDefault.ts | 10 +++++-----
apps/meteor/ee/client/startup/readReceipt.ts | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/apps/meteor/app/ui-utils/client/lib/messageActionDefault.ts b/apps/meteor/app/ui-utils/client/lib/messageActionDefault.ts
index 5618442ee6da..5807673188e5 100644
--- a/apps/meteor/app/ui-utils/client/lib/messageActionDefault.ts
+++ b/apps/meteor/app/ui-utils/client/lib/messageActionDefault.ts
@@ -29,7 +29,7 @@ Meteor.startup(async () => {
id: 'reply-directly',
icon: 'reply-directly',
label: 'Reply_in_direct_message',
- context: ['message', 'message-mobile', 'threads', 'federated', 'videoconf', 'videoconf-threads'],
+ context: ['message', 'message-mobile', 'threads', 'federated'],
role: 'link',
type: 'communication',
action(_, props) {
@@ -122,7 +122,7 @@ Meteor.startup(async () => {
icon: 'permalink',
label: 'Copy_link',
// classes: 'clipboard',
- context: ['message', 'message-mobile', 'threads', 'federated'],
+ context: ['message', 'message-mobile', 'threads', 'federated', 'videoconf', 'videoconf-threads'],
type: 'duplication',
async action(_, props) {
try {
@@ -208,7 +208,7 @@ Meteor.startup(async () => {
id: 'delete-message',
icon: 'trash',
label: 'Delete',
- context: ['message', 'message-mobile', 'threads', 'federated'],
+ context: ['message', 'message-mobile', 'threads', 'federated', 'videoconf', 'videoconf-threads'],
color: 'alert',
type: 'management',
async action(this: unknown, _, { message = messageArgs(this).msg, chat }) {
@@ -236,7 +236,7 @@ Meteor.startup(async () => {
id: 'report-message',
icon: 'report',
label: 'Report',
- context: ['message', 'message-mobile', 'threads', 'federated'],
+ context: ['message', 'message-mobile', 'threads', 'federated', 'videoconf', 'videoconf-threads'],
color: 'alert',
type: 'management',
action(this: unknown, _, { message = messageArgs(this).msg }) {
@@ -264,7 +264,7 @@ Meteor.startup(async () => {
id: 'reaction-list',
icon: 'emoji',
label: 'Reactions',
- context: ['message', 'message-mobile', 'threads'],
+ context: ['message', 'message-mobile', 'threads', 'videoconf', 'videoconf-threads'],
type: 'interaction',
action(this: unknown, _, { message: { reactions = {} } = messageArgs(this).msg }) {
imperativeModal.open({
diff --git a/apps/meteor/ee/client/startup/readReceipt.ts b/apps/meteor/ee/client/startup/readReceipt.ts
index 0efc779a3b49..938cc4b6133f 100644
--- a/apps/meteor/ee/client/startup/readReceipt.ts
+++ b/apps/meteor/ee/client/startup/readReceipt.ts
@@ -19,7 +19,7 @@ Meteor.startup(() => {
id: 'receipt-detail',
icon: 'info-circled',
label: 'Info',
- context: ['starred', 'message', 'message-mobile', 'threads'],
+ context: ['starred', 'message', 'message-mobile', 'threads', 'videoconf', 'videoconf-threads'],
type: 'duplication',
action(_, props) {
const { message = messageArgs(this).msg } = props;
From 2a4213ac770f956b3682a463d7b116250cbcc9bd Mon Sep 17 00:00:00 2001
From: Guilherme Gazzo
Date: Mon, 25 Sep 2023 10:25:16 -0300
Subject: [PATCH 007/159] regression: multiselect (#30472)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Henrique Guimarães Ribeiro <43561537+rique223@users.noreply.github.com>
---
.../views/admin/rooms/RoomsTableFilters.tsx | 28 +++++++++++++------
.../MultiSelectCustom/MultiSelectCustom.tsx | 21 +++-----------
.../MultiSelectCustomList.tsx | 15 ++++------
3 files changed, 29 insertions(+), 35 deletions(-)
diff --git a/apps/meteor/client/views/admin/rooms/RoomsTableFilters.tsx b/apps/meteor/client/views/admin/rooms/RoomsTableFilters.tsx
index dede0b34b918..fcdaa29c9dff 100644
--- a/apps/meteor/client/views/admin/rooms/RoomsTableFilters.tsx
+++ b/apps/meteor/client/views/admin/rooms/RoomsTableFilters.tsx
@@ -2,7 +2,7 @@ import { Box, Icon, TextInput } from '@rocket.chat/fuselage';
import type { OptionProp } from '@rocket.chat/ui-client';
import { MultiSelectCustom } from '@rocket.chat/ui-client';
import { useTranslation } from '@rocket.chat/ui-contexts';
-import React, { useCallback, useEffect, useState } from 'react';
+import React, { useCallback, useState } from 'react';
import type { Dispatch, ReactElement, SetStateAction } from 'react';
const roomTypeFilterStructure = [
@@ -46,14 +46,25 @@ const roomTypeFilterStructure = [
const RoomsTableFilters = ({ setFilters }: { setFilters: Dispatch> }): ReactElement => {
const t = useTranslation();
const [text, setText] = useState('');
- const [roomTypeOptions, setRoomTypeOptions] = useState(roomTypeFilterStructure);
+
const [roomTypeSelectedOptions, setRoomTypeSelectedOptions] = useState([]);
- useEffect(() => {
- return setFilters({ searchText: text, types: roomTypeSelectedOptions });
- }, [setFilters, roomTypeSelectedOptions, text]);
+ const handleSearchTextChange = useCallback(
+ (event) => {
+ const text = event.currentTarget.value;
+ setFilters({ searchText: text, types: roomTypeSelectedOptions });
+ setText(text);
+ },
+ [roomTypeSelectedOptions, setFilters],
+ );
- const handleSearchTextChange = useCallback((event) => setText(event.currentTarget.value), []);
+ const handleRoomTypeChange = useCallback(
+ (options: OptionProp[]) => {
+ setFilters({ searchText: text, types: options });
+ setRoomTypeSelectedOptions(options);
+ },
+ [text, setFilters],
+ ) as Dispatch>;
return (
diff --git a/packages/ui-client/src/components/MultiSelectCustom/MultiSelectCustom.tsx b/packages/ui-client/src/components/MultiSelectCustom/MultiSelectCustom.tsx
index 1420a62346d6..6c5e12be8622 100644
--- a/packages/ui-client/src/components/MultiSelectCustom/MultiSelectCustom.tsx
+++ b/packages/ui-client/src/components/MultiSelectCustom/MultiSelectCustom.tsx
@@ -57,7 +57,6 @@ type DropDownProps = {
selectedOptionsTitle: TranslationKey;
selectedOptions: OptionProp[];
setSelectedOptions: Dispatch>;
- customSetSelected: Dispatch>;
searchBarText?: TranslationKey;
};
@@ -67,7 +66,6 @@ export const MultiSelectCustom = ({
selectedOptionsTitle,
selectedOptions,
setSelectedOptions,
- customSetSelected,
searchBarText,
}: DropDownProps): ReactElement => {
const reference = useRef(null);
@@ -90,26 +88,15 @@ export const MultiSelectCustom = ({
const onSelect = (item: OptionProp, e?: FormEvent): void => {
e?.stopPropagation();
-
item.checked = !item.checked;
if (item.checked === true) {
- // the user has enabled this option -> add it to the selected options
setSelectedOptions([...new Set([...selectedOptions, item])]);
- customSetSelected((prevItems) => {
- const newItems = prevItems;
- const toggledItem = newItems.find(({ id }) => id === item.id);
-
- if (toggledItem) {
- toggledItem.checked = !toggledItem.checked;
- }
-
- return [...prevItems];
- });
- } else {
- // the user has disabled this option -> remove this from the selected options list
- setSelectedOptions(selectedOptions.filter((option: OptionProp) => option.id !== item.id));
+ return;
}
+
+ // the user has disabled this option -> remove this from the selected options list
+ setSelectedOptions(selectedOptions.filter((option: OptionProp) => option.id !== item.id));
};
const count = dropdownOptions.filter((option) => option.checked).length;
diff --git a/packages/ui-client/src/components/MultiSelectCustom/MultiSelectCustomList.tsx b/packages/ui-client/src/components/MultiSelectCustom/MultiSelectCustomList.tsx
index 7e6bfdb9fee1..d8f8d60d8096 100644
--- a/packages/ui-client/src/components/MultiSelectCustom/MultiSelectCustomList.tsx
+++ b/packages/ui-client/src/components/MultiSelectCustom/MultiSelectCustomList.tsx
@@ -2,7 +2,7 @@ import { Box, CheckBox, Icon, Option, SearchInput, Tile } from '@rocket.chat/fus
import type { TranslationKey } from '@rocket.chat/ui-contexts';
import { useTranslation } from '@rocket.chat/ui-contexts';
import type { FormEvent } from 'react';
-import { Fragment, useCallback, useEffect, useState } from 'react';
+import { Fragment, useCallback, useState } from 'react';
import type { OptionProp } from './MultiSelectCustom';
import { useFilteredOptions } from './useFilteredOptions';
@@ -19,13 +19,10 @@ const MultiSelectCustomList = ({
const t = useTranslation();
const [text, setText] = useState('');
- const handleChange = useCallback((event) => setText(event.currentTarget.value), []);
-
- const [optionSearch, setOptionSearch] = useState('');
- useEffect(() => setOptionSearch(text), [setOptionSearch, text]);
+ const handleChange = useCallback((event) => setText(event.currentTarget.value), []);
- const filteredOptions = useFilteredOptions(optionSearch, options);
+ const filteredOptions = useFilteredOptions(text, options);
return (
@@ -48,11 +45,11 @@ const MultiSelectCustomList = ({
{t(option.text as TranslationKey)}
) : (
-