From bcf147f5153671ceb93f085cef6d5f0c54e46161 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Wed, 30 Aug 2023 21:55:30 +0000 Subject: [PATCH 001/115] Bump 6.3.3 --- .changeset/bump-patch-1693432529972.md | 5 +++++ yarn.lock | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/bump-patch-1693432529972.md diff --git a/.changeset/bump-patch-1693432529972.md b/.changeset/bump-patch-1693432529972.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1693432529972.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/yarn.lock b/yarn.lock index 9b6a545ec9fe..251222652634 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.1 + "@rocket.chat/ui-contexts": 1.0.2 "@rocket.chat/ui-kit": "*" - "@rocket.chat/ui-video-conf": 1.0.1 + "@rocket.chat/ui-video-conf": 1.0.2 "@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.1 + "@rocket.chat/core-typings": 6.3.2 "@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.1 - "@rocket.chat/ui-contexts": 1.0.1 + "@rocket.chat/ui-client": 1.0.2 + "@rocket.chat/ui-contexts": 1.0.2 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.1 + "@rocket.chat/ui-contexts": 1.0.2 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.1 + "@rocket.chat/ui-contexts": 1.0.2 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.1 + "@rocket.chat/ui-contexts": 1.0.2 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" From c2fe38cb34f54f725030c22c82fede46c87f02c2 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Thu, 31 Aug 2023 09:47:26 -0300 Subject: [PATCH 002/115] feat: Ability to disable private app installation and updates via envvars (#30227) --- .changeset/hip-hounds-ring.md | 5 ++++ .../views/marketplace/AppInstallPage.js | 28 +++++++++---------- .../marketplace/helpers/handleAPIError.ts | 16 +++++------ .../ee/server/apps/communication/rest.ts | 12 ++++++++ apps/meteor/ee/server/apps/orchestrator.js | 6 ++++ .../rocketchat-i18n/i18n/en.i18n.json | 2 ++ 6 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 .changeset/hip-hounds-ring.md diff --git a/.changeset/hip-hounds-ring.md b/.changeset/hip-hounds-ring.md new file mode 100644 index 000000000000..79dfba6dd031 --- /dev/null +++ b/.changeset/hip-hounds-ring.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Added ability to disable private app installation via envvar (DISABLE_PRIVATE_APP_INSTALLATION) diff --git a/apps/meteor/client/views/marketplace/AppInstallPage.js b/apps/meteor/client/views/marketplace/AppInstallPage.js index 860a09d6ab75..47dae3621666 100644 --- a/apps/meteor/client/views/marketplace/AppInstallPage.js +++ b/apps/meteor/client/views/marketplace/AppInstallPage.js @@ -76,23 +76,23 @@ function AppInstallPage() { } else { app = await uploadAppEndpoint(fileData); } + + router.navigate({ + name: 'marketplace', + params: { + context: 'private', + page: 'info', + id: appId || app.app.id, + }, + }); + + reload(); } catch (e) { handleAPIError(e); + } finally { + setInstalling(false); + setModal(null); } - - router.navigate({ - name: 'marketplace', - params: { - context: 'private', - page: 'info', - id: appId || app.app.id, - }, - }); - - reload(); - - setInstalling(false); - setModal(null); }; const cancelAction = useCallback(() => { diff --git a/apps/meteor/client/views/marketplace/helpers/handleAPIError.ts b/apps/meteor/client/views/marketplace/helpers/handleAPIError.ts index 6226d38ac662..61ec512bd6ee 100644 --- a/apps/meteor/client/views/marketplace/helpers/handleAPIError.ts +++ b/apps/meteor/client/views/marketplace/helpers/handleAPIError.ts @@ -1,3 +1,4 @@ +import { t } from '../../../../app/utils/lib/i18n'; import { dispatchToastMessage } from '../../../lib/toast'; const shouldHandleErrorAsWarning = (message: string): boolean => { @@ -6,15 +7,12 @@ const shouldHandleErrorAsWarning = (message: string): boolean => { return warnings.includes(message); }; -export const handleAPIError = (error: unknown): void => { - if (error instanceof Error) { - const { message } = error; +export const handleAPIError = (errorObject: unknown): void => { + const { message = '', error = '' } = errorObject as { message?: string; error?: string }; - if (shouldHandleErrorAsWarning(message)) { - dispatchToastMessage({ type: 'warning', message }); - return; - } - - dispatchToastMessage({ type: 'error', message }); + if (shouldHandleErrorAsWarning(message)) { + return dispatchToastMessage({ type: 'warning', message: t(message) }); } + + dispatchToastMessage({ type: 'error', message: t(`Apps_Error_${error}`) }); }; diff --git a/apps/meteor/ee/server/apps/communication/rest.ts b/apps/meteor/ee/server/apps/communication/rest.ts index 790e5a87a19d..5805f53afd46 100644 --- a/apps/meteor/ee/server/apps/communication/rest.ts +++ b/apps/meteor/ee/server/apps/communication/rest.ts @@ -383,6 +383,11 @@ export class AppsRestApi { return API.v1.failure({ error: 'Failed to get a file to install for the App. ' }); } + // Used mostly in Cloud hosting for security reasons + if (!marketplaceInfo && orchestrator.shouldDisablePrivateAppInstallation()) { + return API.v1.internalError('private_app_install_disabled'); + } + const user = orchestrator ?.getConverters() ?.get('users') @@ -666,6 +671,7 @@ export class AppsRestApi { async post() { let buff; let permissionsGranted; + let isPrivateAppUpload = false; if (this.bodyParams.url) { const response = await fetch(this.bodyParams.url); @@ -708,6 +714,8 @@ export class AppsRestApi { return API.v1.internalError(); } } else { + isPrivateAppUpload = true; + const app = await getUploadFormData( { request: this.request, @@ -732,6 +740,10 @@ export class AppsRestApi { return API.v1.failure({ error: 'Failed to get a file to install for the App. ' }); } + if (isPrivateAppUpload && orchestrator.shouldDisablePrivateAppInstallation()) { + return API.v1.internalError('private_app_install_disabled'); + } + const aff = await manager.update(buff, permissionsGranted); const info: IAppInfo & { status?: AppStatus } = aff.getAppInfo(); diff --git a/apps/meteor/ee/server/apps/orchestrator.js b/apps/meteor/ee/server/apps/orchestrator.js index 69fe03d3b2da..3822601323bb 100644 --- a/apps/meteor/ee/server/apps/orchestrator.js +++ b/apps/meteor/ee/server/apps/orchestrator.js @@ -26,6 +26,8 @@ function isTesting() { return process.env.TEST_MODE === 'true'; } +const DISABLED_PRIVATE_APP_INSTALLATION = ['yes', 'true'].includes(String(process.env.DISABLE_PRIVATE_APP_INSTALLATION).toLowerCase()); + let appsSourceStorageType; let appsSourceStorageFilesystemPath; @@ -137,6 +139,10 @@ export class AppServerOrchestrator { return !isTesting(); } + shouldDisablePrivateAppInstallation() { + return DISABLED_PRIVATE_APP_INSTALLATION; + } + /** * @returns {Logger} */ diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index 1239bf6d8038..cf4267c34713 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -521,6 +521,7 @@ "Apps_disabled_when_Enterprise_trial_ended_description": "Workspaces on Community Edition can have up to 5 marketplace apps and 3 private apps enabled. Ask your workspace admin to reenable apps.", "Apps_disabled_when_Enterprise_trial_ended_description_admin": "Workspaces on Community Edition can have up to 5 marketplace apps and 3 private apps enabled. Reenable the apps you require.", "Apps_Engine_Version": "Apps Engine Version", + "Apps_Error_private_app_install_disabled": "Private app installation and updates are disabled in this workspace", "Apps_Essential_Alert": "This app is essential for the following events:", "Apps_Essential_Disclaimer": "Events listed above will be disrupted if this app is disabled. If you want Rocket.Chat to work without this app's functionality, you need to uninstall it", "Apps_Framework_Source_Package_Storage_Type": "Apps' Source Package Storage type", @@ -622,6 +623,7 @@ "Apps_Manual_Update_Modal_Title": "This app is already installed", "Apps_Manual_Update_Modal_Body": "Do you want to update it?", "Apps_User_Already_Exists": "The username \"{{username}}\" is already being used. Rename or remove the user using it to install this App", + "AutoLinker": "AutoLinker", "Apps_WhatIsIt": "Apps: What Are They?", "Apps_WhatIsIt_paragraph1": "A new icon in the administration area! What does this mean and what are Apps?", From a56f5f0a5fb90cdcb39c6e5e7a21f0ba539f1f32 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 17 Aug 2023 14:42:20 -0300 Subject: [PATCH 003/115] chore(release): add engine versions to release (#30021) --- .changeset/moody-comics-cheat.md | 5 +++ .../release-action/src/bumpNextVersion.ts | 4 +- packages/release-action/src/getMetadata.ts | 41 +++++++++++++++++++ packages/release-action/src/publishRelease.ts | 4 +- packages/release-action/src/utils.ts | 16 ++++++++ 5 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 .changeset/moody-comics-cheat.md create mode 100644 packages/release-action/src/getMetadata.ts diff --git a/.changeset/moody-comics-cheat.md b/.changeset/moody-comics-cheat.md new file mode 100644 index 000000000000..b8b372306d0e --- /dev/null +++ b/.changeset/moody-comics-cheat.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/release-action': minor +--- + +Add back "Engine Versions" to the release notes diff --git a/packages/release-action/src/bumpNextVersion.ts b/packages/release-action/src/bumpNextVersion.ts index c957c1d81fd3..2e117703d149 100644 --- a/packages/release-action/src/bumpNextVersion.ts +++ b/packages/release-action/src/bumpNextVersion.ts @@ -7,7 +7,7 @@ import * as github from '@actions/github'; import { setupOctokit } from './setupOctokit'; import { createNpmFile } from './createNpmFile'; -import { getChangelogEntry, bumpFileVersions, readPackageJson } from './utils'; +import { getChangelogEntry, bumpFileVersions, readPackageJson, getEngineVersionsMd } from './utils'; import { fixWorkspaceVersionsBeforePublish } from './fixWorkspaceVersionsBeforePublish'; import { commitChanges, createBranch, createTag, pushNewBranch } from './gitUtils'; @@ -49,7 +49,7 @@ export async function bumpNextVersion({ throw new Error('Could not find changelog entry for version newVersion'); } - const prBody = changelogEntry.content; + const prBody = (await getEngineVersionsMd(cwd)) + changelogEntry.content; const finalVersion = newVersion.split('-')[0]; diff --git a/packages/release-action/src/getMetadata.ts b/packages/release-action/src/getMetadata.ts new file mode 100644 index 000000000000..3c677b8e7774 --- /dev/null +++ b/packages/release-action/src/getMetadata.ts @@ -0,0 +1,41 @@ +import { readFile } from 'fs/promises'; +import path from 'path'; + +import { getExecOutput } from '@actions/exec'; + +import { readPackageJson } from './utils'; + +export async function getMongoVersion(cwd: string) { + try { + const workflows = await readFile(path.join(cwd, '.github/workflows/ci.yml'), 'utf8'); + + const mongoMatch = workflows.match(/compatibleMongoVersions\\": \[([^\]]+)\]/); + if (!mongoMatch) { + return []; + } + + return mongoMatch[1].replace(/["'\\ ]/g, '').split(','); + } catch (e) { + console.error(e); + } + return []; +} + +export async function getNodeNpmVersions(cwd: string): Promise<{ node: string; yarn: string; npm: string }> { + const packageJson = await readPackageJson(cwd); + + return packageJson.engines; +} + +export async function getAppsEngineVersion() { + try { + const result = await getExecOutput('yarn why @rocket.chat/apps-engine --json'); + + const match = result.stdout.match(/"@rocket\.chat\/meteor@workspace:apps\/meteor".*"@rocket\.chat\/apps\-engine@[^#]+#npm:([^"]+)"/); + if (match) { + return match[1]; + } + } catch (e) { + console.error(e); + } +} diff --git a/packages/release-action/src/publishRelease.ts b/packages/release-action/src/publishRelease.ts index d418e857736e..c712b8a7681a 100644 --- a/packages/release-action/src/publishRelease.ts +++ b/packages/release-action/src/publishRelease.ts @@ -7,7 +7,7 @@ import * as core from '@actions/core'; import { createNpmFile } from './createNpmFile'; import { setupOctokit } from './setupOctokit'; -import { bumpFileVersions, createBumpFile, getChangelogEntry, readPackageJson } from './utils'; +import { bumpFileVersions, createBumpFile, getChangelogEntry, getEngineVersionsMd, readPackageJson } from './utils'; import { fixWorkspaceVersionsBeforePublish } from './fixWorkspaceVersionsBeforePublish'; import { checkoutBranch, commitChanges, createTag, getCurrentBranch, mergeBranch, pushChanges } from './gitUtils'; @@ -73,7 +73,7 @@ export async function publishRelease({ throw new Error('Could not find changelog entry for version newVersion'); } - const releaseBody = changelogEntry.content; + const releaseBody = (await getEngineVersionsMd(cwd)) + changelogEntry.content; core.info('update version in all files to new'); await bumpFileVersions(cwd, currentVersion, newVersion); diff --git a/packages/release-action/src/utils.ts b/packages/release-action/src/utils.ts index d82098e7a19f..c8c72f4f36a6 100644 --- a/packages/release-action/src/utils.ts +++ b/packages/release-action/src/utils.ts @@ -6,6 +6,8 @@ import remarkParse from 'remark-parse'; import remarkStringify from 'remark-stringify'; import mdastToString from 'mdast-util-to-string'; +import { getAppsEngineVersion, getMongoVersion, getNodeNpmVersions } from './getMetadata'; + export const BumpLevels = { dep: 0, patch: 1, @@ -103,3 +105,17 @@ Bump ${pkgName} version. await writeFile(filePath, data, 'utf8'); } + +export async function getEngineVersionsMd(cwd: string) { + const { node } = await getNodeNpmVersions(cwd); + const appsEngine = await getAppsEngineVersion(); + const mongo = await getMongoVersion(cwd); + + return `### Engine versions + +- Node: \`${node}\` +- MongoDB: \`${mongo.join(', ')}\` +- Apps-Engine: \`${appsEngine}\` + +`; +} From f25081bc8a50a27b2ccde130ffe8d805475d3f8b Mon Sep 17 00:00:00 2001 From: Pierre Lehnen <55164754+pierre-lehnen-rc@users.noreply.github.com> Date: Thu, 31 Aug 2023 13:54:59 -0300 Subject: [PATCH 004/115] [FIX] Never-used imported accounts can be accessed without proper authentication. (#670) --- .changeset/ten-games-roll.md | 5 +++++ apps/meteor/server/methods/registerUser.ts | 10 +--------- 2 files changed, 6 insertions(+), 9 deletions(-) create mode 100644 .changeset/ten-games-roll.md diff --git a/.changeset/ten-games-roll.md b/.changeset/ten-games-roll.md new file mode 100644 index 000000000000..883ce6260bcb --- /dev/null +++ b/.changeset/ten-games-roll.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Removed an unused authentication flow diff --git a/apps/meteor/server/methods/registerUser.ts b/apps/meteor/server/methods/registerUser.ts index 535203f3369f..2463e9ccacb4 100644 --- a/apps/meteor/server/methods/registerUser.ts +++ b/apps/meteor/server/methods/registerUser.ts @@ -95,15 +95,7 @@ Meteor.methods({ let userId; try { - // Check if user has already been imported and never logged in. If so, set password and let it through - const importedUser = await Users.findOneByEmailAddress(formData.email); - - if (importedUser?.importIds?.length && !importedUser.lastLogin) { - await Accounts.setPasswordAsync(importedUser._id, userData.password); - userId = importedUser._id; - } else { - userId = await Accounts.createUserAsync(userData); - } + userId = await Accounts.createUserAsync(userData); } catch (e) { if (e instanceof Meteor.Error) { throw e; From 8a59855fcf622cb9787d9d37f7e3dc30d67958ff Mon Sep 17 00:00:00 2001 From: Heitor Tanoue <68477006+heitortanoue@users.noreply.github.com> Date: Thu, 31 Aug 2023 15:28:50 -0300 Subject: [PATCH 005/115] fix: Unmuting users on average rooms allows them to speak if room is later set as read-only (#30050) Co-authored-by: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> --- .changeset/fair-cats-destroy.md | 6 +++++ .../federation/server/endpoints/dispatch.js | 4 +-- apps/meteor/server/methods/muteUserInRoom.ts | 6 ++++- .../meteor/server/methods/unmuteUserInRoom.ts | 6 ++++- apps/meteor/server/models/raw/Rooms.ts | 26 ++++++++++++++++++- .../model-typings/src/models/IRoomsModel.ts | 4 ++- 6 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 .changeset/fair-cats-destroy.md diff --git a/.changeset/fair-cats-destroy.md b/.changeset/fair-cats-destroy.md new file mode 100644 index 000000000000..7dfb74955a94 --- /dev/null +++ b/.changeset/fair-cats-destroy.md @@ -0,0 +1,6 @@ +--- +"@rocket.chat/meteor": patch +"@rocket.chat/model-typings": patch +--- + +When setting a room as read-only, do not allow previously unmuted users to send messages. diff --git a/apps/meteor/app/federation/server/endpoints/dispatch.js b/apps/meteor/app/federation/server/endpoints/dispatch.js index cf9e91b44af9..59ffcb0f342f 100644 --- a/apps/meteor/app/federation/server/endpoints/dispatch.js +++ b/apps/meteor/app/federation/server/endpoints/dispatch.js @@ -457,8 +457,8 @@ const eventHandlers = { // Denormalize user const denormalizedUser = normalizers.denormalizeUser(user); - // Mute user - await Rooms.unmuteUsernameByRoomId(roomId, denormalizedUser.username); + // Unmute user + await Rooms.unmuteMutedUsernameByRoomId(roomId, denormalizedUser.username); } return eventResult; diff --git a/apps/meteor/server/methods/muteUserInRoom.ts b/apps/meteor/server/methods/muteUserInRoom.ts index eac10e320ead..90e4b61a57ed 100644 --- a/apps/meteor/server/methods/muteUserInRoom.ts +++ b/apps/meteor/server/methods/muteUserInRoom.ts @@ -65,7 +65,11 @@ export const muteUserInRoom = async (fromId: string, data: { rid: IRoom['_id']; await callbacks.run('beforeMuteUser', { mutedUser, fromUser }, room); - await Rooms.muteUsernameByRoomId(data.rid, mutedUser.username); + if (room.ro) { + await Rooms.muteReadOnlyUsernameByRoomId(data.rid, mutedUser.username); + } else { + await Rooms.muteUsernameByRoomId(data.rid, mutedUser.username); + } await Message.saveSystemMessage('user-muted', data.rid, mutedUser.username, fromUser); diff --git a/apps/meteor/server/methods/unmuteUserInRoom.ts b/apps/meteor/server/methods/unmuteUserInRoom.ts index 991e66840ca8..d9e65815fd11 100644 --- a/apps/meteor/server/methods/unmuteUserInRoom.ts +++ b/apps/meteor/server/methods/unmuteUserInRoom.ts @@ -65,7 +65,11 @@ export const unmuteUserInRoom = async (fromId: string, data: { rid: IRoom['_id'] await callbacks.run('beforeUnmuteUser', { unmutedUser, fromUser }, room); - await Rooms.unmuteUsernameByRoomId(data.rid, unmutedUser.username); + if (room.ro) { + await Rooms.unmuteReadOnlyUsernameByRoomId(data.rid, unmutedUser.username); + } else { + await Rooms.unmuteMutedUsernameByRoomId(data.rid, unmutedUser.username); + } await Message.saveSystemMessage('user-unmuted', data.rid, unmutedUser.username, fromUser); diff --git a/apps/meteor/server/models/raw/Rooms.ts b/apps/meteor/server/models/raw/Rooms.ts index 10fad0f436eb..9dad0fa60da3 100644 --- a/apps/meteor/server/models/raw/Rooms.ts +++ b/apps/meteor/server/models/raw/Rooms.ts @@ -1708,9 +1708,33 @@ export class RoomsRaw extends BaseRaw implements IRoomsModel { return this.updateOne(query, update); } - unmuteUsernameByRoomId(_id: IRoom['_id'], username: IUser['username']): Promise { + muteReadOnlyUsernameByRoomId(_id: IRoom['_id'], username: IUser['username']): Promise { + const query: Filter = { _id, ro: true }; + + const update: UpdateFilter = { + $pull: { + unmuted: username, + }, + }; + + return this.updateOne(query, update); + } + + unmuteMutedUsernameByRoomId(_id: IRoom['_id'], username: IUser['username']): Promise { const query: Filter = { _id }; + const update: UpdateFilter = { + $pull: { + muted: username, + }, + }; + + return this.updateOne(query, update); + } + + unmuteReadOnlyUsernameByRoomId(_id: string, username: string): Promise { + const query: Filter = { _id, ro: true }; + const update: UpdateFilter = { $pull: { muted: username, diff --git a/packages/model-typings/src/models/IRoomsModel.ts b/packages/model-typings/src/models/IRoomsModel.ts index a0053d7ea7ba..de0cf9d10f96 100644 --- a/packages/model-typings/src/models/IRoomsModel.ts +++ b/packages/model-typings/src/models/IRoomsModel.ts @@ -251,7 +251,9 @@ export interface IRoomsModel extends IBaseModel { ): Promise; setCustomFieldsById(rid: string, customFields: Record): Promise; muteUsernameByRoomId(rid: string, username: string): Promise; - unmuteUsernameByRoomId(rid: string, username: string): Promise; + muteReadOnlyUsernameByRoomId(rid: string, username: string): Promise; + unmuteMutedUsernameByRoomId(rid: string, username: string): Promise; + unmuteReadOnlyUsernameByRoomId(rid: string, username: string): Promise; saveFeaturedById(rid: string, featured: boolean): Promise; saveDefaultById(rid: string, defaultValue: boolean): Promise; saveFavoriteById(rid: string, favorite: boolean, defaultValue: boolean): Promise; From 761cad43828ff3d90cda1836254c5db82004a7b1 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 31 Aug 2023 15:58:54 -0300 Subject: [PATCH 006/115] fix: CORS not being set for assets (#30237) --- .changeset/shiny-garlics-carry.md | 5 +++++ apps/meteor/app/cors/server/cors.ts | 2 +- apps/meteor/tests/end-to-end/api/32-assets.ts | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 .changeset/shiny-garlics-carry.md create mode 100644 apps/meteor/tests/end-to-end/api/32-assets.ts diff --git a/.changeset/shiny-garlics-carry.md b/.changeset/shiny-garlics-carry.md new file mode 100644 index 000000000000..117063d93f6f --- /dev/null +++ b/.changeset/shiny-garlics-carry.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fix CORS headers not being set for assets diff --git a/apps/meteor/app/cors/server/cors.ts b/apps/meteor/app/cors/server/cors.ts index 69a0b557ee64..03a42e45a17b 100644 --- a/apps/meteor/app/cors/server/cors.ts +++ b/apps/meteor/app/cors/server/cors.ts @@ -79,7 +79,7 @@ WebApp.rawConnectHandlers.use((_req: http.IncomingMessage, res: http.ServerRespo const _staticFilesMiddleware = WebAppInternals.staticFilesMiddleware; // @ts-expect-error - accessing internal property of webapp -WebAppInternals._staticFilesMiddleware = function ( +WebAppInternals.staticFilesMiddleware = function ( staticFiles: StaticFiles, req: http.IncomingMessage, res: http.ServerResponse, diff --git a/apps/meteor/tests/end-to-end/api/32-assets.ts b/apps/meteor/tests/end-to-end/api/32-assets.ts new file mode 100644 index 000000000000..76c24a99765b --- /dev/null +++ b/apps/meteor/tests/end-to-end/api/32-assets.ts @@ -0,0 +1,17 @@ +import { describe, it } from 'mocha'; + +import { request } from '../../data/api-data.js'; + +describe('assets', function () { + this.retries(0); + + it('should always have CORS headers for assets', async () => { + await request.get('/assets/favicon.svg').expect('Content-Type', 'image/svg+xml').expect('Access-Control-Allow-Origin', '*').expect(200); + + await request + .get('/fonts/rocketchat.woff2') + .expect('Content-Type', 'font/woff2') + .expect('Access-Control-Allow-Origin', '*') + .expect(200); + }); +}); From ded9666f27d6ca8e617d28368d61f9804cc4c1df Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 31 Aug 2023 15:58:54 -0300 Subject: [PATCH 007/115] fix: CORS not being set for assets (#30237) --- .changeset/shiny-garlics-carry.md | 5 +++++ apps/meteor/app/cors/server/cors.ts | 2 +- apps/meteor/tests/end-to-end/api/32-assets.ts | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 .changeset/shiny-garlics-carry.md create mode 100644 apps/meteor/tests/end-to-end/api/32-assets.ts diff --git a/.changeset/shiny-garlics-carry.md b/.changeset/shiny-garlics-carry.md new file mode 100644 index 000000000000..117063d93f6f --- /dev/null +++ b/.changeset/shiny-garlics-carry.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fix CORS headers not being set for assets diff --git a/apps/meteor/app/cors/server/cors.ts b/apps/meteor/app/cors/server/cors.ts index 534a65aa6d95..a3a585585fe4 100644 --- a/apps/meteor/app/cors/server/cors.ts +++ b/apps/meteor/app/cors/server/cors.ts @@ -79,7 +79,7 @@ WebApp.rawConnectHandlers.use(function (_req: http.IncomingMessage, res: http.Se const _staticFilesMiddleware = WebAppInternals.staticFilesMiddleware; // @ts-expect-error - accessing internal property of webapp -WebAppInternals._staticFilesMiddleware = function ( +WebAppInternals.staticFilesMiddleware = function ( staticFiles: StaticFiles, req: http.IncomingMessage, res: http.ServerResponse, diff --git a/apps/meteor/tests/end-to-end/api/32-assets.ts b/apps/meteor/tests/end-to-end/api/32-assets.ts new file mode 100644 index 000000000000..76c24a99765b --- /dev/null +++ b/apps/meteor/tests/end-to-end/api/32-assets.ts @@ -0,0 +1,17 @@ +import { describe, it } from 'mocha'; + +import { request } from '../../data/api-data.js'; + +describe('assets', function () { + this.retries(0); + + it('should always have CORS headers for assets', async () => { + await request.get('/assets/favicon.svg').expect('Content-Type', 'image/svg+xml').expect('Access-Control-Allow-Origin', '*').expect(200); + + await request + .get('/fonts/rocketchat.woff2') + .expect('Content-Type', 'font/woff2') + .expect('Access-Control-Allow-Origin', '*') + .expect(200); + }); +}); From 5321e873634e9037c805ce135cf7cf37cc3de187 Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Thu, 31 Aug 2023 16:32:38 -0300 Subject: [PATCH 008/115] fix: seat counter including bots (#30216) --- .changeset/moody-pans-act.md | 5 +++++ apps/meteor/server/models/raw/Users.js | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/moody-pans-act.md diff --git a/.changeset/moody-pans-act.md b/.changeset/moody-pans-act.md new file mode 100644 index 000000000000..6c307604eaa9 --- /dev/null +++ b/.changeset/moody-pans-act.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Fix seat counter including bots users diff --git a/apps/meteor/server/models/raw/Users.js b/apps/meteor/server/models/raw/Users.js index 03c3ab2769c9..dc3441092892 100644 --- a/apps/meteor/server/models/raw/Users.js +++ b/apps/meteor/server/models/raw/Users.js @@ -2921,13 +2921,13 @@ export class UsersRaw extends BaseRaw { this.col.countDocuments({ active: true, }), - // Count all active that are guests, apps or federated + // Count all active that are guests, apps, bots or federated // Fast based on indexes, usually based on guest index as is usually small this.col.countDocuments({ active: true, - $or: [{ roles: ['guest'] }, { type: 'app' }, { federated: true }, { isRemote: true }], + $or: [{ roles: ['guest'] }, { type: { $in: ['app', 'bot'] } }, { federated: true }, { isRemote: true }], }), - // Get all active and remove the guests, apps, federated, etc + // Get all active and remove the guests, apps, bots and federated ]).then((results) => results.reduce((a, b) => a - b)); } From 01dec055a0255f531824d3b9b74d31d75f3b6d97 Mon Sep 17 00:00:00 2001 From: Yash Rajpal <58601732+yash-rajpal@users.noreply.github.com> Date: Fri, 1 Sep 2023 02:07:04 +0530 Subject: [PATCH 009/115] regression: Accounts profile form name change not working (#30239) Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- .changeset/unlucky-turtles-search.md | 5 +++++ .../client/views/account/profile/AccountProfileForm.tsx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/unlucky-turtles-search.md diff --git a/.changeset/unlucky-turtles-search.md b/.changeset/unlucky-turtles-search.md new file mode 100644 index 000000000000..fffa51020e30 --- /dev/null +++ b/.changeset/unlucky-turtles-search.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixed Accounts profile form name change was not working diff --git a/apps/meteor/client/views/account/profile/AccountProfileForm.tsx b/apps/meteor/client/views/account/profile/AccountProfileForm.tsx index 14540220b7e4..4efa05e32da0 100644 --- a/apps/meteor/client/views/account/profile/AccountProfileForm.tsx +++ b/apps/meteor/client/views/account/profile/AccountProfileForm.tsx @@ -102,7 +102,7 @@ const AccountProfileForm = (props: AllHTMLAttributes): ReactEle try { await updateOwnBasicInfo( { - ...(allowRealNameChange ? { name } : {}), + ...(allowRealNameChange ? { realname: name } : {}), ...(allowEmailChange && user ? getUserEmailAddress(user) !== email && { email } : {}), ...(allowPasswordChange ? { newPassword: password } : {}), ...(canChangeUsername ? { username } : {}), From 3826f7e5f311e6a840e2e55d1256d40d25fc1482 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Thu, 31 Aug 2023 20:44:04 +0000 Subject: [PATCH 010/115] Release 6.3.3 [no ci] --- .changeset/bump-patch-1693432529972.md | 5 ---- .changeset/hip-hounds-ring.md | 5 ---- .changeset/moody-comics-cheat.md | 5 ---- .changeset/shiny-garlics-carry.md | 5 ---- .changeset/ten-games-roll.md | 5 ---- apps/meteor/.docker/Dockerfile.rhel | 2 +- apps/meteor/CHANGELOG.md | 28 +++++++++++++++++++ apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/ee/server/services/CHANGELOG.md | 10 +++++++ apps/meteor/ee/server/services/package.json | 2 +- apps/meteor/package.json | 2 +- ee/apps/account-service/CHANGELOG.md | 10 +++++++ ee/apps/account-service/package.json | 2 +- ee/apps/authorization-service/CHANGELOG.md | 10 +++++++ ee/apps/authorization-service/package.json | 2 +- ee/apps/ddp-streamer/CHANGELOG.md | 12 ++++++++ ee/apps/ddp-streamer/package.json | 2 +- ee/apps/omnichannel-transcript/CHANGELOG.md | 11 ++++++++ ee/apps/omnichannel-transcript/package.json | 2 +- ee/apps/presence-service/CHANGELOG.md | 10 +++++++ ee/apps/presence-service/package.json | 2 +- ee/apps/queue-worker/CHANGELOG.md | 10 +++++++ ee/apps/queue-worker/package.json | 2 +- ee/apps/stream-hub-service/CHANGELOG.md | 9 ++++++ ee/apps/stream-hub-service/package.json | 2 +- ee/packages/api-client/CHANGELOG.md | 7 +++++ ee/packages/api-client/package.json | 2 +- ee/packages/ddp-client/CHANGELOG.md | 7 +++++ ee/packages/ddp-client/package.json | 2 +- ee/packages/omnichannel-services/CHANGELOG.md | 11 ++++++++ ee/packages/omnichannel-services/package.json | 2 +- ee/packages/pdf-worker/CHANGELOG.md | 6 ++++ ee/packages/pdf-worker/package.json | 2 +- ee/packages/presence/CHANGELOG.md | 8 ++++++ ee/packages/presence/package.json | 2 +- package.json | 2 +- packages/core-services/CHANGELOG.md | 8 ++++++ packages/core-services/package.json | 2 +- packages/core-typings/CHANGELOG.md | 2 ++ packages/core-typings/package.json | 2 +- packages/cron/CHANGELOG.md | 7 +++++ packages/cron/package.json | 2 +- packages/fuselage-ui-kit/CHANGELOG.md | 8 ++++++ packages/fuselage-ui-kit/package.json | 6 ++-- packages/gazzodown/CHANGELOG.md | 8 ++++++ packages/gazzodown/package.json | 8 +++--- packages/instance-status/CHANGELOG.md | 6 ++++ packages/instance-status/package.json | 2 +- packages/model-typings/CHANGELOG.md | 6 ++++ packages/model-typings/package.json | 2 +- packages/models/CHANGELOG.md | 6 ++++ packages/models/package.json | 2 +- packages/release-action/CHANGELOG.md | 6 ++++ packages/release-action/package.json | 2 +- packages/rest-typings/CHANGELOG.md | 6 ++++ packages/rest-typings/package.json | 2 +- packages/ui-client/CHANGELOG.md | 6 ++++ packages/ui-client/package.json | 4 +-- packages/ui-contexts/CHANGELOG.md | 8 ++++++ packages/ui-contexts/package.json | 2 +- packages/ui-video-conf/CHANGELOG.md | 6 ++++ packages/ui-video-conf/package.json | 4 +-- packages/uikit-playground/CHANGELOG.md | 7 +++++ packages/uikit-playground/package.json | 2 +- packages/web-ui-registration/CHANGELOG.md | 6 ++++ packages/web-ui-registration/package.json | 4 +-- 66 files changed, 285 insertions(+), 65 deletions(-) delete mode 100644 .changeset/bump-patch-1693432529972.md delete mode 100644 .changeset/hip-hounds-ring.md delete mode 100644 .changeset/moody-comics-cheat.md delete mode 100644 .changeset/shiny-garlics-carry.md delete mode 100644 .changeset/ten-games-roll.md diff --git a/.changeset/bump-patch-1693432529972.md b/.changeset/bump-patch-1693432529972.md deleted file mode 100644 index e1eaa7980afb..000000000000 --- a/.changeset/bump-patch-1693432529972.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Bump @rocket.chat/meteor version. diff --git a/.changeset/hip-hounds-ring.md b/.changeset/hip-hounds-ring.md deleted file mode 100644 index 79dfba6dd031..000000000000 --- a/.changeset/hip-hounds-ring.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Added ability to disable private app installation via envvar (DISABLE_PRIVATE_APP_INSTALLATION) diff --git a/.changeset/moody-comics-cheat.md b/.changeset/moody-comics-cheat.md deleted file mode 100644 index b8b372306d0e..000000000000 --- a/.changeset/moody-comics-cheat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/release-action': minor ---- - -Add back "Engine Versions" to the release notes diff --git a/.changeset/shiny-garlics-carry.md b/.changeset/shiny-garlics-carry.md deleted file mode 100644 index 117063d93f6f..000000000000 --- a/.changeset/shiny-garlics-carry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Fix CORS headers not being set for assets diff --git a/.changeset/ten-games-roll.md b/.changeset/ten-games-roll.md deleted file mode 100644 index 883ce6260bcb..000000000000 --- a/.changeset/ten-games-roll.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Removed an unused authentication flow diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index e14192be4b5d..3354be3ef5d6 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 6.3.2 +ENV RC_VERSION 6.3.3 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index f79e4b224826..182d30ddabb9 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,33 @@ # @rocket.chat/meteor +## 6.3.3 + +### Patch Changes + +- bcf147f515: Bump @rocket.chat/meteor version. +- Bump @rocket.chat/meteor version. +- c2fe38cb34: Added ability to disable private app installation via envvar (DISABLE_PRIVATE_APP_INSTALLATION) +- ded9666f27: Fix CORS headers not being set for assets +- f25081bc8a: Removed an unused authentication flow + - @rocket.chat/core-typings@6.3.3 + - @rocket.chat/rest-typings@6.3.3 + - @rocket.chat/api-client@0.1.3 + - @rocket.chat/omnichannel-services@0.0.9 + - @rocket.chat/pdf-worker@0.0.9 + - @rocket.chat/presence@0.0.9 + - @rocket.chat/core-services@0.1.3 + - @rocket.chat/cron@0.0.5 + - @rocket.chat/gazzodown@1.0.3 + - @rocket.chat/model-typings@0.0.9 + - @rocket.chat/ui-contexts@1.0.3 + - @rocket.chat/fuselage-ui-kit@1.0.3 + - @rocket.chat/models@0.0.9 + - @rocket.chat/ui-theming@0.0.1 + - @rocket.chat/ui-client@1.0.3 + - @rocket.chat/ui-video-conf@1.0.3 + - @rocket.chat/web-ui-registration@1.0.3 + - @rocket.chat/instance-status@0.0.9 + ## 6.3.2 ### Patch Changes diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 8f6924c05df6..5dfa1f853b47 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "6.3.2" + "version": "6.3.3" } diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md index 4752bbfc2387..c9759c95b0af 100644 --- a/apps/meteor/ee/server/services/CHANGELOG.md +++ b/apps/meteor/ee/server/services/CHANGELOG.md @@ -1,5 +1,15 @@ # rocketchat-services +## 1.1.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/rest-typings@6.3.3 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/models@0.0.9 + ## 1.1.2 ### Patch Changes diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index a56021bd5476..944f9a463c30 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -1,7 +1,7 @@ { "name": "rocketchat-services", "private": true, - "version": "1.1.2", + "version": "1.1.3", "description": "Rocket.Chat Authorization service", "main": "index.js", "scripts": { diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 169ab5f9b9f7..8e6b64d735ef 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "6.3.2", + "version": "6.3.3", "private": true, "author": { "name": "Rocket.Chat", diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md index fe01147f8704..67bb7a8164f5 100644 --- a/ee/apps/account-service/CHANGELOG.md +++ b/ee/apps/account-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/account-service +## 0.2.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/rest-typings@6.3.3 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/models@0.0.9 + ## 0.2.2 ### Patch Changes diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index e90407d2f305..e85e9da0a40a 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/account-service", "private": true, - "version": "0.2.2", + "version": "0.2.3", "description": "Rocket.Chat Account service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md index c56c6d10a6ea..882144f1602f 100644 --- a/ee/apps/authorization-service/CHANGELOG.md +++ b/ee/apps/authorization-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/authorization-service +## 0.2.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/rest-typings@6.3.3 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/models@0.0.9 + ## 0.2.2 ### Patch Changes diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index 7baefffdc21b..dba72198c2cd 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/authorization-service", "private": true, - "version": "0.2.2", + "version": "0.2.3", "description": "Rocket.Chat Authorization service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md index 6e15ad002fea..242f5b517039 100644 --- a/ee/apps/ddp-streamer/CHANGELOG.md +++ b/ee/apps/ddp-streamer/CHANGELOG.md @@ -1,5 +1,17 @@ # @rocket.chat/ddp-streamer +## 0.1.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/rest-typings@6.3.3 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/ui-contexts@1.0.3 +- @rocket.chat/models@0.0.9 +- @rocket.chat/instance-status@0.0.9 + ## 0.1.2 ### Patch Changes diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index 0a44315c98b0..230865187241 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/ddp-streamer", "private": true, - "version": "0.1.2", + "version": "0.1.3", "description": "Rocket.Chat DDP-Streamer service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md index 38a18f743624..f7de2c547ab0 100644 --- a/ee/apps/omnichannel-transcript/CHANGELOG.md +++ b/ee/apps/omnichannel-transcript/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/omnichannel-transcript +## 0.2.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/omnichannel-services@0.0.9 +- @rocket.chat/pdf-worker@0.0.9 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/models@0.0.9 + ## 0.2.2 ### Patch Changes diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index 2c71e8094528..2554f60ebab3 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/omnichannel-transcript", "private": true, - "version": "0.2.2", + "version": "0.2.3", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md index 0cca9a024ae6..5bb3ef39b101 100644 --- a/ee/apps/presence-service/CHANGELOG.md +++ b/ee/apps/presence-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/presence-service +## 0.2.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/presence@0.0.9 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/models@0.0.9 + ## 0.2.2 ### Patch Changes diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index cac74f8d74b0..737a831fef2d 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/presence-service", "private": true, - "version": "0.2.2", + "version": "0.2.3", "description": "Rocket.Chat Presence service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md index 941c23bb500a..1490afbb40ab 100644 --- a/ee/apps/queue-worker/CHANGELOG.md +++ b/ee/apps/queue-worker/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/queue-worker +## 0.2.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/omnichannel-services@0.0.9 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/models@0.0.9 + ## 0.2.2 ### Patch Changes diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index 396f38927415..fe2e2cf285d7 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/queue-worker", "private": true, - "version": "0.2.2", + "version": "0.2.3", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/stream-hub-service/CHANGELOG.md b/ee/apps/stream-hub-service/CHANGELOG.md index fb3c7cfbaa93..6af9dfb7b0e0 100644 --- a/ee/apps/stream-hub-service/CHANGELOG.md +++ b/ee/apps/stream-hub-service/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/stream-hub-service +## 0.2.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/models@0.0.9 + ## 0.2.2 ### Patch Changes diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json index 617e956b5db8..f9f47bd2f25b 100644 --- a/ee/apps/stream-hub-service/package.json +++ b/ee/apps/stream-hub-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/stream-hub-service", "private": true, - "version": "0.2.2", + "version": "0.2.3", "description": "Rocket.Chat Stream Hub service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/packages/api-client/CHANGELOG.md b/ee/packages/api-client/CHANGELOG.md index 876504a2d52b..030d8cae3b99 100644 --- a/ee/packages/api-client/CHANGELOG.md +++ b/ee/packages/api-client/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/api-client +## 0.1.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/rest-typings@6.3.3 + ## 0.1.2 ### Patch Changes diff --git a/ee/packages/api-client/package.json b/ee/packages/api-client/package.json index bc2711fe0839..10ca54425b42 100644 --- a/ee/packages/api-client/package.json +++ b/ee/packages/api-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/api-client", - "version": "0.1.2", + "version": "0.1.3", "devDependencies": { "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", diff --git a/ee/packages/ddp-client/CHANGELOG.md b/ee/packages/ddp-client/CHANGELOG.md index 33071a0c207c..6a656d38a488 100644 --- a/ee/packages/ddp-client/CHANGELOG.md +++ b/ee/packages/ddp-client/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/ddp-client +## 0.1.3 + +### Patch Changes + +- @rocket.chat/rest-typings@6.3.3 +- @rocket.chat/api-client@0.1.3 + ## 0.1.2 ### Patch Changes diff --git a/ee/packages/ddp-client/package.json b/ee/packages/ddp-client/package.json index fd8e6b5c5a44..eb42619f9161 100644 --- a/ee/packages/ddp-client/package.json +++ b/ee/packages/ddp-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-client", - "version": "0.1.2", + "version": "0.1.3", "devDependencies": { "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md index 776e700d87b6..c141b4205af5 100644 --- a/ee/packages/omnichannel-services/CHANGELOG.md +++ b/ee/packages/omnichannel-services/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/omnichannel-services +## 0.0.9 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/rest-typings@6.3.3 +- @rocket.chat/pdf-worker@0.0.9 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/model-typings@0.0.9 +- @rocket.chat/models@0.0.9 + ## 0.0.8 ### Patch Changes diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index 2275fea8a415..a81f3397031a 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omnichannel-services", - "version": "0.0.8", + "version": "0.0.9", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md index 2853ae79e061..bf50d15ae71b 100644 --- a/ee/packages/pdf-worker/CHANGELOG.md +++ b/ee/packages/pdf-worker/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/pdf-worker +## 0.0.9 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 + ## 0.0.8 ### Patch Changes diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json index af3fdd404579..a3c2dc78c4c5 100644 --- a/ee/packages/pdf-worker/package.json +++ b/ee/packages/pdf-worker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/pdf-worker", - "version": "0.0.8", + "version": "0.0.9", "private": true, "devDependencies": { "@storybook/addon-essentials": "~6.5.16", diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md index 9cb69013abaa..1ed57117b68e 100644 --- a/ee/packages/presence/CHANGELOG.md +++ b/ee/packages/presence/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/presence +## 0.0.9 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/core-services@0.1.3 +- @rocket.chat/models@0.0.9 + ## 0.0.8 ### Patch Changes diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index a1d3bc29c4cc..0d1ff4a5b7bc 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence", - "version": "0.0.8", + "version": "0.0.9", "private": true, "devDependencies": { "@babel/core": "~7.22.5", diff --git a/package.json b/package.json index 3964cde06c27..714a0c87d130 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "6.3.2", + "version": "6.3.3", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md index b3d2bfd937c5..07a137608d92 100644 --- a/packages/core-services/CHANGELOG.md +++ b/packages/core-services/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/core-services +## 0.1.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/rest-typings@6.3.3 +- @rocket.chat/models@0.0.9 + ## 0.1.2 ### Patch Changes diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 62c995718460..d3629f688c58 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-services", - "version": "0.1.2", + "version": "0.1.3", "private": true, "devDependencies": { "@babel/core": "^7.21.4", diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index 05fa92d17d54..5e6880b649a4 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,7 @@ # @rocket.chat/core-typings +## 6.3.3 + ## 6.3.2 ## 6.3.1 diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index ed3ee6d6bd33..1710424e83e2 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-typings", - "version": "6.3.2", + "version": "6.3.3", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "eslint": "~8.43.0", diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md index 6a505427f51a..44b205dda1e7 100644 --- a/packages/cron/CHANGELOG.md +++ b/packages/cron/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/cron +## 0.0.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/models@0.0.9 + ## 0.0.4 ### Patch Changes diff --git a/packages/cron/package.json b/packages/cron/package.json index 0c1d39329150..53c610b82b14 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/cron", - "version": "0.0.4", + "version": "0.0.5", "private": true, "devDependencies": { "@types/jest": "^27.4.1", diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md index 9093a1b0a79f..6d52e9064b16 100644 --- a/packages/fuselage-ui-kit/CHANGELOG.md +++ b/packages/fuselage-ui-kit/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 1.0.3 + +### Patch Changes + +- @rocket.chat/gazzodown@1.0.3 +- @rocket.chat/ui-contexts@1.0.3 +- @rocket.chat/ui-video-conf@1.0.3 + ## 1.0.2 ### Patch Changes diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index b873255504e9..e0eb2d4624bb 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/fuselage-ui-kit", "private": true, - "version": "1.0.2", + "version": "1.0.3", "description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system", "homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/", "author": { @@ -47,9 +47,9 @@ "@rocket.chat/icons": "*", "@rocket.chat/prettier-config": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-contexts": "1.0.2", + "@rocket.chat/ui-contexts": "1.0.3", "@rocket.chat/ui-kit": "*", - "@rocket.chat/ui-video-conf": "1.0.2", + "@rocket.chat/ui-video-conf": "1.0.3", "@tanstack/react-query": "*", "react": "*", "react-dom": "*" diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md index b1403cc5bfc2..88c0f11d0cdb 100644 --- a/packages/gazzodown/CHANGELOG.md +++ b/packages/gazzodown/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/gazzodown +## 1.0.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/ui-contexts@1.0.3 +- @rocket.chat/ui-client@1.0.3 + ## 1.0.2 ### Patch Changes diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index c0e4d97b3695..4661ffb98c46 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/gazzodown", - "version": "1.0.2", + "version": "1.0.3", "private": true, "devDependencies": { "@babel/core": "~7.22.5", @@ -65,14 +65,14 @@ "/dist" ], "peerDependencies": { - "@rocket.chat/core-typings": "6.3.2", + "@rocket.chat/core-typings": "6.3.3", "@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.2", - "@rocket.chat/ui-contexts": "1.0.2", + "@rocket.chat/ui-client": "1.0.3", + "@rocket.chat/ui-contexts": "1.0.3", "katex": "*", "react": "*" }, diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md index f794ae07ccd5..1b5dfc94f624 100644 --- a/packages/instance-status/CHANGELOG.md +++ b/packages/instance-status/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/instance-status +## 0.0.9 + +### Patch Changes + +- @rocket.chat/models@0.0.9 + ## 0.0.8 ### Patch Changes diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index 2b09a5bca106..7f303b5de07a 100644 --- a/packages/instance-status/package.json +++ b/packages/instance-status/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/instance-status", - "version": "0.0.8", + "version": "0.0.9", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 0742974545e7..1d89b9145bc4 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/model-typings +## 0.0.9 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 + ## 0.0.8 ### Patch Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 85c6e357f825..66233a200eff 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "0.0.8", + "version": "0.0.9", "private": true, "devDependencies": { "@types/jest": "~29.5.2", diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index 9780e7f3cae2..c8249a587d15 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/models +## 0.0.9 + +### Patch Changes + +- @rocket.chat/model-typings@0.0.9 + ## 0.0.8 ### Patch Changes diff --git a/packages/models/package.json b/packages/models/package.json index 9e0d2585749c..177119796cdb 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/models", - "version": "0.0.8", + "version": "0.0.9", "private": true, "devDependencies": { "@types/jest": "~29.5.2", diff --git a/packages/release-action/CHANGELOG.md b/packages/release-action/CHANGELOG.md index ba541529faf4..ee73fe152636 100644 --- a/packages/release-action/CHANGELOG.md +++ b/packages/release-action/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/release-action +## 2.1.0 + +### Minor Changes + +- a56f5f0a5f: Add back "Engine Versions" to the release notes + ## 2.0.0 ### Major Changes diff --git a/packages/release-action/package.json b/packages/release-action/package.json index 0786d45ae40b..6e5f7866f060 100644 --- a/packages/release-action/package.json +++ b/packages/release-action/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/release-action", - "version": "2.0.0", + "version": "2.1.0", "private": true, "scripts": { "build": "tsc", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 1b2b9d1c1c83..9c5aa19f1b07 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/rest-typings +## 6.3.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 + ## 6.3.2 ### Patch Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 7eedce13ae47..074ee532f019 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/rest-typings", - "version": "6.3.2", + "version": "6.3.3", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "@types/jest": "~29.5.2", diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md index 45375c1921b2..497a40137ee5 100644 --- a/packages/ui-client/CHANGELOG.md +++ b/packages/ui-client/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/ui-client +## 1.0.3 + +### Patch Changes + +- @rocket.chat/ui-contexts@1.0.3 + ## 1.0.2 ### Patch Changes diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index edbde8cbf606..7077c8d1f3be 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-client", - "version": "1.0.2", + "version": "1.0.3", "private": true, "devDependencies": { "@babel/core": "~7.22.5", @@ -53,7 +53,7 @@ "@rocket.chat/fuselage": "*", "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", - "@rocket.chat/ui-contexts": "1.0.2", + "@rocket.chat/ui-contexts": "1.0.3", "react": "~17.0.2" }, "volta": { diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md index 56918d125358..0be8b831d56b 100644 --- a/packages/ui-contexts/CHANGELOG.md +++ b/packages/ui-contexts/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/ui-contexts +## 1.0.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.3 +- @rocket.chat/rest-typings@6.3.3 +- @rocket.chat/ddp-client@0.1.3 + ## 1.0.2 ### Patch Changes diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index e7ff60702a83..1cd3f7f1daca 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-contexts", - "version": "1.0.2", + "version": "1.0.3", "private": true, "devDependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md index 8885f9da62a8..b5408f61908a 100644 --- a/packages/ui-video-conf/CHANGELOG.md +++ b/packages/ui-video-conf/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/ui-video-conf +## 1.0.3 + +### Patch Changes + +- @rocket.chat/ui-contexts@1.0.3 + ## 1.0.2 ### Patch Changes diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 13250d3e120f..31d3b9f1be45 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-video-conf", - "version": "1.0.2", + "version": "1.0.3", "private": true, "devDependencies": { "@babel/core": "~7.22.5", @@ -35,7 +35,7 @@ "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-contexts": "1.0.2", + "@rocket.chat/ui-contexts": "1.0.3", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/packages/uikit-playground/CHANGELOG.md b/packages/uikit-playground/CHANGELOG.md index 57609de64f8f..852e0fe95baf 100644 --- a/packages/uikit-playground/CHANGELOG.md +++ b/packages/uikit-playground/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/uikit-playground +## 0.1.3 + +### Patch Changes + +- @rocket.chat/ui-contexts@1.0.3 +- @rocket.chat/fuselage-ui-kit@1.0.3 + ## 0.1.2 ### Patch Changes diff --git a/packages/uikit-playground/package.json b/packages/uikit-playground/package.json index f1ba3f1d089f..feb99612a5ab 100644 --- a/packages/uikit-playground/package.json +++ b/packages/uikit-playground/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/uikit-playground", "private": true, - "version": "0.1.2", + "version": "0.1.3", "type": "module", "scripts": { "dev": "vite", diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md index 4555ca4e502b..cf000c3483bc 100644 --- a/packages/web-ui-registration/CHANGELOG.md +++ b/packages/web-ui-registration/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/web-ui-registration +## 1.0.3 + +### Patch Changes + +- @rocket.chat/ui-contexts@1.0.3 + ## 1.0.2 ### Patch Changes diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index dd6b03f28750..fb929cc0fa5e 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/web-ui-registration", - "version": "1.0.2", + "version": "1.0.3", "private": true, "devDependencies": { "@rocket.chat/layout": "next", @@ -17,7 +17,7 @@ }, "peerDependencies": { "@rocket.chat/layout": "*", - "@rocket.chat/ui-contexts": "1.0.2", + "@rocket.chat/ui-contexts": "1.0.3", "@tanstack/react-query": "*", "react": "*", "react-hook-form": "*", From 8e58c2b5abbd24e8f55439d7271d7db2794ee9e0 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 31 Aug 2023 18:01:56 -0300 Subject: [PATCH 011/115] regression: fix import --- packages/release-action/src/utils.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/release-action/src/utils.ts b/packages/release-action/src/utils.ts index fb5dd128d8a1..2501ae859339 100644 --- a/packages/release-action/src/utils.ts +++ b/packages/release-action/src/utils.ts @@ -8,8 +8,6 @@ import unified from 'unified'; import { getAppsEngineVersion, getMongoVersion, getNodeNpmVersions } from './getMetadata'; -import { getAppsEngineVersion, getMongoVersion, getNodeNpmVersions } from './getMetadata'; - export const BumpLevels = { dep: 0, patch: 1, From e7fbc009650910ca3560d798b54cbe90ff8f0f2e Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Thu, 31 Aug 2023 15:37:36 -0600 Subject: [PATCH 012/115] fix: On Unlock, queue room again (#30150) --- apps/meteor/server/models/raw/LivechatInquiry.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/meteor/server/models/raw/LivechatInquiry.ts b/apps/meteor/server/models/raw/LivechatInquiry.ts index bb1d386cf236..191a017244ac 100644 --- a/apps/meteor/server/models/raw/LivechatInquiry.ts +++ b/apps/meteor/server/models/raw/LivechatInquiry.ts @@ -172,13 +172,16 @@ export class LivechatInquiryRaw extends BaseRaw implemen } async unlock(inquiryId: string): Promise { - return this.updateOne({ _id: inquiryId }, { $unset: { locked: 1, lockedAt: 1 } }); + return this.updateOne( + { _id: inquiryId }, + { $unset: { locked: 1, lockedAt: 1 }, $set: { status: LivechatInquiryStatus.QUEUED, queuedAt: new Date() } }, + ); } async unlockAll(): Promise { return this.updateMany( { $or: [{ lockedAt: { $exists: true } }, { locked: { $exists: true } }] }, - { $unset: { locked: 1, lockedAt: 1 } }, + { $unset: { locked: 1, lockedAt: 1 }, $set: { status: LivechatInquiryStatus.QUEUED, queuedAt: new Date() } }, ); } From b8f3d5014f6843babdb5c3241131886827c70dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrique=20Guimar=C3=A3es=20Ribeiro?= Date: Fri, 1 Sep 2023 10:12:33 -0300 Subject: [PATCH 013/115] fix: Login page language switcher (#30106) Co-authored-by: Tasso Evangelista <2263066+tassoevan@users.noreply.github.com> --- .changeset/wise-onions-trade.md | 11 + ...f8829189deb00553559ff63.0-b31cc57c40.patch | 130 ++ .../theme/client/imports/general/base_old.css | 4 - apps/meteor/app/utils/lib/i18n.ts | 4 +- .../client/providers/TranslationProvider.tsx | 7 +- .../providers/UserProvider/UserProvider.tsx | 17 +- .../header/actions/hooks/mockAppRoot.tsx | 355 --- .../contexts/TranslationContextMock.tsx | 1 + apps/meteor/package.json | 6 +- .../rocketchat-i18n/i18n/en.i18n.json | 2 +- .../rocketchat-i18n/i18n/fi.i18n.json | 4 +- .../rocketchat-i18n/i18n/hu.i18n.json | 4 +- .../rocketchat-i18n/i18n/sv.i18n.json | 4 +- apps/meteor/server/lib/i18n.ts | 1 + package.json | 3 +- packages/i18n/babel.config.cjs | 2 +- packages/i18n/package.json | 11 +- packages/i18n/tsconfig.json | 9 - packages/livechat/package.json | 6 +- .../src/components/Calls/CallNotification.tsx | 5 +- .../src/components/Calls/JoinCallButton.tsx | 5 +- packages/mock-providers/package.json | 6 + .../src/MockedAppRootBuilder.tsx | 193 +- packages/ui-client/package.json | 2 +- .../PasswordVerifiers.spec.tsx | 9 - .../ui-contexts/src/TranslationContext.ts | 2 + packages/web-ui-registration/.babelrc.json | 7 + .../web-ui-registration/.storybook/logo.svg | 47 + .../.storybook/logo.svg.d.ts | 3 + .../web-ui-registration/.storybook/main.ts | 12 + .../.storybook/preview.tsx | 36 + packages/web-ui-registration/package.json | 48 +- .../ResetPassword/ResetPassword.stories.tsx | 6 +- .../LoginSwitchLanguageFooter.stories.tsx | 42 + .../components/LoginSwitchLanguageFooter.tsx | 94 +- .../web-ui-registration/tsconfig.build.json | 8 + packages/web-ui-registration/tsconfig.json | 7 +- yarn.lock | 2080 ++++++++++++----- 38 files changed, 2125 insertions(+), 1068 deletions(-) create mode 100644 .changeset/wise-onions-trade.md create mode 100644 .yarn/patches/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40.patch delete mode 100644 apps/meteor/client/sidebar/header/actions/hooks/mockAppRoot.tsx delete mode 100644 packages/i18n/tsconfig.json create mode 100644 packages/web-ui-registration/.babelrc.json create mode 100644 packages/web-ui-registration/.storybook/logo.svg create mode 100644 packages/web-ui-registration/.storybook/logo.svg.d.ts create mode 100644 packages/web-ui-registration/.storybook/main.ts create mode 100644 packages/web-ui-registration/.storybook/preview.tsx create mode 100644 packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.stories.tsx create mode 100644 packages/web-ui-registration/tsconfig.build.json diff --git a/.changeset/wise-onions-trade.md b/.changeset/wise-onions-trade.md new file mode 100644 index 000000000000..cb5c731fb6fb --- /dev/null +++ b/.changeset/wise-onions-trade.md @@ -0,0 +1,11 @@ +--- +"@rocket.chat/meteor": patch +"@rocket.chat/i18n": patch +"@rocket.chat/livechat": patch +"@rocket.chat/mock-providers": patch +"@rocket.chat/ui-client": patch +"@rocket.chat/ui-contexts": patch +"@rocket.chat/web-ui-registration": patch +--- + +Fixed the login page language switcher, now the component has a new look, is reactive and the language selection becomes concrete upon login in. Also changed the default language of the login page to be the browser language. diff --git a/.yarn/patches/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40.patch b/.yarn/patches/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40.patch new file mode 100644 index 000000000000..ca069ee350c0 --- /dev/null +++ b/.yarn/patches/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40.patch @@ -0,0 +1,130 @@ +diff --git a/dist/generateDocgenCodeBlock.js b/dist/generateDocgenCodeBlock.js +index 0993ac13e4b2aae6d24cf408d6a585b4ddeb7337..1405896291288eb1322d6c42144afd3b4fbd1abf 100644 +--- a/dist/generateDocgenCodeBlock.js ++++ b/dist/generateDocgenCodeBlock.js +@@ -34,7 +34,7 @@ function insertTsIgnoreBeforeStatement(statement) { + * ``` + */ + function setDisplayName(d) { +- return insertTsIgnoreBeforeStatement(typescript_1.default.createExpressionStatement(typescript_1.default.createBinary(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier(d.displayName), typescript_1.default.createIdentifier("displayName")), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.createLiteral(d.displayName)))); ++ return insertTsIgnoreBeforeStatement(typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(d.displayName), typescript_1.default.factory.createIdentifier("displayName")), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.factory.createStringLiteral(d.displayName)))); + } + /** + * Set a component prop description. +@@ -65,7 +65,7 @@ function createPropDefinition(propName, prop, options) { + * + * @param defaultValue Default prop value or null if not set. + */ +- const setDefaultValue = (defaultValue) => typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("defaultValue"), ++ const setDefaultValue = (defaultValue) => typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("defaultValue"), + // Use a more extensive check on defaultValue. Sometimes the parser + // returns an empty object. + defaultValue !== null && +@@ -75,12 +75,19 @@ function createPropDefinition(propName, prop, options) { + (typeof defaultValue.value === "string" || + typeof defaultValue.value === "number" || + typeof defaultValue.value === "boolean") +- ? typescript_1.default.createObjectLiteral([ +- typescript_1.default.createPropertyAssignment(typescript_1.default.createIdentifier("value"), typescript_1.default.createLiteral(defaultValue.value)), ++ ? typescript_1.default.factory.createObjectLiteralExpression([ ++ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("value"), typeof defaultValue.value === "string" ++ ? typescript_1.default.factory.createStringLiteral(defaultValue.value) ++ : // eslint-disable-next-line no-nested-ternary ++ typeof defaultValue.value === "number" ++ ? typescript_1.default.factory.createNumericLiteral(defaultValue.value) ++ : defaultValue.value ++ ? typescript_1.default.factory.createTrue() ++ : typescript_1.default.factory.createFalse()), + ]) +- : typescript_1.default.createNull()); ++ : typescript_1.default.factory.createNull()); + /** Set a property with a string value */ +- const setStringLiteralField = (fieldName, fieldValue) => typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral(fieldName), typescript_1.default.createLiteral(fieldValue)); ++ const setStringLiteralField = (fieldName, fieldValue) => typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral(fieldName), typescript_1.default.factory.createStringLiteral(fieldValue)); + /** + * ``` + * SimpleComponent.__docgenInfo.props.someProp.description = "Prop description."; +@@ -101,7 +108,7 @@ function createPropDefinition(propName, prop, options) { + * ``` + * @param required Whether prop is required or not. + */ +- const setRequired = (required) => typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("required"), required ? typescript_1.default.createTrue() : typescript_1.default.createFalse()); ++ const setRequired = (required) => typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("required"), required ? typescript_1.default.factory.createTrue() : typescript_1.default.factory.createFalse()); + /** + * ``` + * SimpleComponent.__docgenInfo.props.someProp.type = { +@@ -113,7 +120,7 @@ function createPropDefinition(propName, prop, options) { + */ + const setValue = (typeValue) => Array.isArray(typeValue) && + typeValue.every((value) => typeof value.value === "string") +- ? typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("value"), typescript_1.default.createArrayLiteral(typeValue.map((value) => typescript_1.default.createObjectLiteral([ ++ ? typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("value"), typescript_1.default.factory.createArrayLiteralExpression(typeValue.map((value) => typescript_1.default.factory.createObjectLiteralExpression([ + setStringLiteralField("value", value.value), + ])))) + : undefined; +@@ -130,9 +137,9 @@ function createPropDefinition(propName, prop, options) { + if (valueField) { + objectFields.push(valueField); + } +- return typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral(options.typePropName), typescript_1.default.createObjectLiteral(objectFields)); ++ return typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral(options.typePropName), typescript_1.default.factory.createObjectLiteralExpression(objectFields)); + }; +- return typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral(propName), typescript_1.default.createObjectLiteral([ ++ return typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral(propName), typescript_1.default.factory.createObjectLiteralExpression([ + setDefaultValue(prop.defaultValue), + setDescription(prop.description), + setName(prop.name), +@@ -158,10 +165,10 @@ function createPropDefinition(propName, prop, options) { + * @param relativeFilename Relative file path of the component source file. + */ + function insertDocgenIntoGlobalCollection(d, docgenCollectionName, relativeFilename) { +- return insertTsIgnoreBeforeStatement(typescript_1.default.createIf(typescript_1.default.createBinary(typescript_1.default.createTypeOf(typescript_1.default.createIdentifier(docgenCollectionName)), typescript_1.default.SyntaxKind.ExclamationEqualsEqualsToken, typescript_1.default.createLiteral("undefined")), insertTsIgnoreBeforeStatement(typescript_1.default.createStatement(typescript_1.default.createBinary(typescript_1.default.createElementAccess(typescript_1.default.createIdentifier(docgenCollectionName), typescript_1.default.createLiteral(`${relativeFilename}#${d.displayName}`)), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.createObjectLiteral([ +- typescript_1.default.createPropertyAssignment(typescript_1.default.createIdentifier("docgenInfo"), typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier(d.displayName), typescript_1.default.createIdentifier("__docgenInfo"))), +- typescript_1.default.createPropertyAssignment(typescript_1.default.createIdentifier("name"), typescript_1.default.createLiteral(d.displayName)), +- typescript_1.default.createPropertyAssignment(typescript_1.default.createIdentifier("path"), typescript_1.default.createLiteral(`${relativeFilename}#${d.displayName}`)), ++ return insertTsIgnoreBeforeStatement(typescript_1.default.factory.createIfStatement(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createTypeOfExpression(typescript_1.default.factory.createIdentifier(docgenCollectionName)), typescript_1.default.SyntaxKind.ExclamationEqualsEqualsToken, typescript_1.default.factory.createStringLiteral("undefined")), insertTsIgnoreBeforeStatement(typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createElementAccessExpression(typescript_1.default.factory.createIdentifier(docgenCollectionName), typescript_1.default.factory.createStringLiteral(`${relativeFilename}#${d.displayName}`)), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.factory.createObjectLiteralExpression([ ++ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("docgenInfo"), typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(d.displayName), typescript_1.default.factory.createIdentifier("__docgenInfo"))), ++ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("name"), typescript_1.default.factory.createStringLiteral(d.displayName)), ++ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("path"), typescript_1.default.factory.createStringLiteral(`${relativeFilename}#${d.displayName}`)), + ])))))); + } + /** +@@ -180,15 +187,15 @@ function insertDocgenIntoGlobalCollection(d, docgenCollectionName, relativeFilen + * @param options Generator options. + */ + function setComponentDocGen(d, options) { +- return insertTsIgnoreBeforeStatement(typescript_1.default.createStatement(typescript_1.default.createBinary( ++ return insertTsIgnoreBeforeStatement(typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createBinaryExpression( + // SimpleComponent.__docgenInfo +- typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier(d.displayName), typescript_1.default.createIdentifier("__docgenInfo")), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.createObjectLiteral([ ++ typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier(d.displayName), typescript_1.default.factory.createIdentifier("__docgenInfo")), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.factory.createObjectLiteralExpression([ + // SimpleComponent.__docgenInfo.description +- typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("description"), typescript_1.default.createLiteral(d.description)), ++ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("description"), typescript_1.default.factory.createStringLiteral(d.description)), + // SimpleComponent.__docgenInfo.displayName +- typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("displayName"), typescript_1.default.createLiteral(d.displayName)), ++ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("displayName"), typescript_1.default.factory.createStringLiteral(d.displayName)), + // SimpleComponent.__docgenInfo.props +- typescript_1.default.createPropertyAssignment(typescript_1.default.createLiteral("props"), typescript_1.default.createObjectLiteral(Object.entries(d.props).map(([propName, prop]) => createPropDefinition(propName, prop, options)))), ++ typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createStringLiteral("props"), typescript_1.default.factory.createObjectLiteralExpression(Object.entries(d.props).map(([propName, prop]) => createPropDefinition(propName, prop, options)))), + ])))); + } + function generateDocgenCodeBlock(options) { +@@ -196,7 +203,7 @@ function generateDocgenCodeBlock(options) { + const relativeFilename = path_1.default + .relative("./", path_1.default.resolve("./", options.filename)) + .replace(/\\/g, "/"); +- const wrapInTryStatement = (statements) => typescript_1.default.createTry(typescript_1.default.createBlock(statements, true), typescript_1.default.createCatchClause(typescript_1.default.createVariableDeclaration(typescript_1.default.createIdentifier("__react_docgen_typescript_loader_error")), typescript_1.default.createBlock([])), undefined); ++ const wrapInTryStatement = (statements) => typescript_1.default.factory.createTryStatement(typescript_1.default.factory.createBlock(statements, true), typescript_1.default.factory.createCatchClause(typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier("__react_docgen_typescript_loader_error")), typescript_1.default.factory.createBlock([])), undefined); + const codeBlocks = options.componentDocs.map((d) => wrapInTryStatement([ + options.setDisplayName ? setDisplayName(d) : null, + setComponentDocGen(d, options), +@@ -208,7 +215,7 @@ function generateDocgenCodeBlock(options) { + const printer = typescript_1.default.createPrinter({ newLine: typescript_1.default.NewLineKind.LineFeed }); + const printNode = (sourceNode) => printer.printNode(typescript_1.default.EmitHint.Unspecified, sourceNode, sourceFile); + // Concat original source code with code from generated code blocks. +- const result = codeBlocks.reduce((acc, node) => `${acc}\n${printNode(node)}`, ++ const result = codeBlocks.reduce((acc, node) => `${acc}\n${printNode(node)}`, + // Use original source text rather than using printNode on the parsed form + // to prevent issue where literals are stripped within components. + // Ref: https://github.com/strothj/react-docgen-typescript-loader/issues/7 diff --git a/apps/meteor/app/theme/client/imports/general/base_old.css b/apps/meteor/app/theme/client/imports/general/base_old.css index 6d9f5631fc6a..7f1ede6067fc 100644 --- a/apps/meteor/app/theme/client/imports/general/base_old.css +++ b/apps/meteor/app/theme/client/imports/general/base_old.css @@ -988,10 +988,6 @@ font-size: 12px; font-weight: 300; } - - & div.switch-language { - margin-top: 20px; - } } & .share { diff --git a/apps/meteor/app/utils/lib/i18n.ts b/apps/meteor/app/utils/lib/i18n.ts index 309585ee284b..13d5c667709d 100644 --- a/apps/meteor/app/utils/lib/i18n.ts +++ b/apps/meteor/app/utils/lib/i18n.ts @@ -5,9 +5,7 @@ import { isObject } from '../../../lib/utils/isObject'; export const i18n = i18next.use(sprintf); -export const addSprinfToI18n = function (t: (typeof i18n)['t']): typeof t & { - (key: string, ...replaces: any): string; -} { +export const addSprinfToI18n = function (t: (typeof i18n)['t']) { return function (key: string, ...replaces: any): string { if (replaces[0] === undefined || isObject(replaces[0])) { return t(key, ...replaces); diff --git a/apps/meteor/client/providers/TranslationProvider.tsx b/apps/meteor/client/providers/TranslationProvider.tsx index f09761be9a3b..5850f0da3982 100644 --- a/apps/meteor/client/providers/TranslationProvider.tsx +++ b/apps/meteor/client/providers/TranslationProvider.tsx @@ -122,6 +122,8 @@ const useI18next = (lng: string): typeof i18next => { }, react: { useSuspense: true, + bindI18n: 'languageChanged loaded', + bindI18nStore: 'added removed', }, interpolation: { escapeValue: false, @@ -174,7 +176,7 @@ type TranslationProviderProps = { const useAutoLanguage = () => { const serverLanguage = useSetting('Language'); const browserLanguage = filterLanguage(window.navigator.userLanguage ?? window.navigator.language); - const defaultUserLanguage = serverLanguage || browserLanguage || 'en'; + const defaultUserLanguage = browserLanguage || serverLanguage || 'en'; // if the language is supported, if not remove the region const suggestedLanguage = languages.includes(defaultUserLanguage) ? defaultUserLanguage : defaultUserLanguage.split('-').shift() ?? 'en'; @@ -209,11 +211,13 @@ const TranslationProvider = ({ children }: TranslationProviderProps): ReactEleme { en: 'Default', name: i18nextInstance.t('Default'), + ogName: i18nextInstance.t('Default'), key: '', }, ...[...new Set([...i18nextInstance.languages, ...languages])].map((key) => ({ en: key, name: getLanguageName(key, language), + ogName: getLanguageName(key, key), key, })), ], @@ -270,6 +274,7 @@ const TranslationProviderInner = ({ availableLanguages: { en: string; name: string; + ogName: string; key: string; }[]; }): ReactElement => { diff --git a/apps/meteor/client/providers/UserProvider/UserProvider.tsx b/apps/meteor/client/providers/UserProvider/UserProvider.tsx index 912cca246328..fa9d683815ed 100644 --- a/apps/meteor/client/providers/UserProvider/UserProvider.tsx +++ b/apps/meteor/client/providers/UserProvider/UserProvider.tsx @@ -1,7 +1,7 @@ import type { IRoom, ISubscription, IUser } from '@rocket.chat/core-typings'; import { useLocalStorage } from '@rocket.chat/fuselage-hooks'; -import { UserContext, useEndpoint, useSetting } from '@rocket.chat/ui-contexts'; import type { LoginService, SubscriptionWithRoom } from '@rocket.chat/ui-contexts'; +import { UserContext, useEndpoint, useSetting } from '@rocket.chat/ui-contexts'; import { Meteor } from 'meteor/meteor'; import type { ContextType, ReactElement, ReactNode } from 'react'; import React, { useEffect, useMemo } from 'react'; @@ -66,7 +66,8 @@ const UserProvider = ({ children }: UserProviderProps): ReactElement => { const userId = useReactiveValue(getUserId); const user = useReactiveValue(getUser); - const [language, setLanguage] = useLocalStorage('userLanguage', user?.language ?? 'en'); + const [userLanguage, setUserLanguage] = useLocalStorage('userLanguage', ''); + const [preferedLanguage, setPreferedLanguage] = useLocalStorage('preferedLanguage', ''); const setUserPreferences = useEndpoint('POST', '/v1/users.setPreferences'); @@ -167,10 +168,16 @@ const UserProvider = ({ children }: UserProviderProps): ReactElement => { ); useEffect(() => { - if (user?.language !== undefined && user.language !== language) { - setLanguage(user.language); + if (!!userId && preferedLanguage !== userLanguage) { + setUserPreferences({ data: { language: preferedLanguage } }); + setUserLanguage(preferedLanguage); + } + + if (user?.language !== undefined && user.language !== userLanguage) { + setUserLanguage(user.language); + setPreferedLanguage(user.language); } - }, [user?.language, language, setLanguage]); + }, [preferedLanguage, setPreferedLanguage, setUserLanguage, user?.language, userLanguage, userId, setUserPreferences]); const { data: license } = useIsEnterprise({ enabled: !!userId }); diff --git a/apps/meteor/client/sidebar/header/actions/hooks/mockAppRoot.tsx b/apps/meteor/client/sidebar/header/actions/hooks/mockAppRoot.tsx deleted file mode 100644 index a702c27e52c4..000000000000 --- a/apps/meteor/client/sidebar/header/actions/hooks/mockAppRoot.tsx +++ /dev/null @@ -1,355 +0,0 @@ -import type { Serialized } from '@rocket.chat/core-typings'; -import type { Method, OperationParams, OperationResult, PathPattern, UrlParams } from '@rocket.chat/rest-typings'; -import type { ServerMethodName, ServerMethodParameters, ServerMethodReturn, TranslationKey } from '@rocket.chat/ui-contexts'; -import { - AuthorizationContext, - ConnectionStatusContext, - RouterContext, - ServerContext, - SettingsContext, - TranslationContext, - UserContext, - ActionManagerContext, - ModalContext, -} from '@rocket.chat/ui-contexts'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import type { WrapperComponent } from '@testing-library/react-hooks'; -import type { ObjectId } from 'mongodb'; -import type { ContextType, ReactNode } from 'react'; -import React from 'react'; - -class MockedAppRootBuilder { - private wrappers: Array<(children: ReactNode) => ReactNode> = []; - - private connectionStatus: ContextType = { - connected: true, - status: 'connected', - retryTime: undefined, - reconnect: () => undefined, - }; - - private server: ContextType = { - absoluteUrl: (path: string) => `http://localhost:3000/${path}`, - callEndpoint: (_args: { - method: TMethod; - pathPattern: TPathPattern; - keys: UrlParams; - params: OperationParams; - }): Promise>> => { - throw new Error('not implemented'); - }, - getSingleStream: () => () => () => undefined, - getStream: () => () => () => undefined, - uploadToEndpoint: () => Promise.reject(new Error('not implemented')), - callMethod: () => Promise.reject(new Error('not implemented')), - info: undefined, - }; - - private router: ContextType = { - buildRoutePath: () => '/', - defineRoutes: () => () => undefined, - getLocationPathname: () => '/', - getLocationSearch: () => '', - getRouteName: () => undefined, - getRouteParameters: () => ({}), - getRoutes: () => [], - getSearchParameters: () => ({}), - navigate: () => undefined, - subscribeToRouteChange: () => () => undefined, - subscribeToRoutesChange: () => () => undefined, - }; - - private settings: ContextType = { - hasPrivateAccess: true, - isLoading: false, - querySetting: (_id: string) => [() => () => undefined, () => undefined], - querySettings: () => [() => () => undefined, () => []], - dispatch: async () => undefined, - }; - - private translation: ContextType = { - language: 'en', - languages: [ - { - en: 'English', - key: 'en', - name: 'English', - }, - ], - loadLanguage: () => Promise.resolve(), - translate: Object.assign((key: string) => key, { - has: (_key: string): _key is TranslationKey => true, - }), - }; - - private user: ContextType = { - loginWithPassword: () => Promise.reject(new Error('not implemented')), - logout: () => Promise.reject(new Error('not implemented')), - loginWithService: () => () => Promise.reject(new Error('not implemented')), - loginWithToken: () => Promise.reject(new Error('not implemented')), - queryAllServices: () => [() => () => undefined, () => []], - queryPreference: () => [() => () => undefined, () => undefined], - queryRoom: () => [() => () => undefined, () => undefined], - querySubscription: () => [() => () => undefined, () => undefined], - querySubscriptions: () => [() => () => undefined, () => []], - user: null, - userId: null, - }; - - private modal: ContextType = { - currentModal: null, - modal: { - setModal: () => undefined, - }, - }; - - private authorization: ContextType = { - queryPermission: () => [() => () => undefined, () => false], - queryAtLeastOnePermission: () => [() => () => undefined, () => false], - queryAllPermissions: () => [() => () => undefined, () => false], - queryRole: () => [() => () => undefined, () => false], - roleStore: { - roles: {}, - emit: () => undefined, - on: () => () => undefined, - off: () => undefined, - events: (): Array<'change'> => ['change'], - has: () => false, - once: () => () => undefined, - }, - }; - - wrap(wrapper: (children: ReactNode) => ReactNode): this { - this.wrappers.push(wrapper); - return this; - } - - withEndpoint( - method: TMethod, - pathPattern: TPathPattern, - response: ( - params: OperationParams, - ) => Serialized> | Promise>>, - ): this { - const innerFn = this.server.callEndpoint; - - const outerFn = (args: { - method: TMethod; - pathPattern: TPathPattern; - keys: UrlParams; - params: OperationParams; - }): Promise>> => { - if (args.method === String(method) && args.pathPattern === String(pathPattern)) { - return Promise.resolve(response(args.params)) as Promise>>; - } - - return innerFn(args); - }; - - this.server.callEndpoint = outerFn; - - return this; - } - - withMethod(methodName: TMethodName, response: () => ServerMethodReturn): this { - const innerFn = this.server.callMethod; - - const outerFn = ( - innerMethodName: TMethodName, - ...innerArgs: ServerMethodParameters - ): Promise> => { - if (innerMethodName === String(methodName)) { - return Promise.resolve(response()) as Promise>; - } - - if (!innerFn) { - throw new Error('not implemented'); - } - - return innerFn(innerMethodName, ...innerArgs); - }; - - this.server.callMethod = outerFn; - - return this; - } - - withPermission(permission: string): this { - const innerFn = this.authorization.queryPermission; - - const outerFn = ( - innerPermission: string | ObjectId, - innerScope?: string | ObjectId | undefined, - innerScopedRoles?: string[] | undefined, - ): [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => boolean] => { - if (innerPermission === permission) { - return [() => () => undefined, () => true]; - } - - return innerFn(innerPermission, innerScope, innerScopedRoles); - }; - - this.authorization.queryPermission = outerFn; - - const innerFn2 = this.authorization.queryAtLeastOnePermission; - - const outerFn2 = ( - innerPermissions: Array, - innerScope?: string | ObjectId | undefined, - innerScopedRoles?: string[] | undefined, - ): [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => boolean] => { - if (innerPermissions.includes(permission)) { - return [() => () => undefined, () => true]; - } - - return innerFn2(innerPermissions, innerScope, innerScopedRoles); - }; - - this.authorization.queryAtLeastOnePermission = outerFn2; - - const innerFn3 = this.authorization.queryAllPermissions; - - const outerFn3 = ( - innerPermissions: Array, - innerScope?: string | ObjectId | undefined, - innerScopedRoles?: string[] | undefined, - ): [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => boolean] => { - if (innerPermissions.includes(permission)) { - return [() => () => undefined, () => true]; - } - - return innerFn3(innerPermissions, innerScope, innerScopedRoles); - }; - - this.authorization.queryAllPermissions = outerFn3; - - return this; - } - - withJohnDoe(): this { - this.user.userId = 'john.doe'; - - this.user.user = { - _id: 'john.doe', - username: 'john.doe', - name: 'John Doe', - createdAt: new Date(), - active: true, - _updatedAt: new Date(), - roles: ['admin'], - type: 'user', - }; - - return this; - } - - withAnonymous(): this { - this.user.userId = null; - this.user.user = null; - - return this; - } - - withRole(role: string): this { - if (!this.user.user) { - throw new Error('user is not defined'); - } - - this.user.user.roles.push(role); - - const innerFn = this.authorization.queryRole; - - const outerFn = ( - innerRole: string | ObjectId, - innerScope?: string | undefined, - innerIgnoreSubscriptions?: boolean | undefined, - ): [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => boolean] => { - if (innerRole === role) { - return [() => () => undefined, () => true]; - } - - return innerFn(innerRole, innerScope, innerIgnoreSubscriptions); - }; - - this.authorization.queryRole = outerFn; - - return this; - } - - build(): WrapperComponent<{ children: ReactNode }> { - const queryClient = new QueryClient({ - defaultOptions: { - queries: { retry: false }, - mutations: { retry: false }, - }, - }); - - const { connectionStatus, server, router, settings, translation, user, modal, authorization, wrappers } = this; - - return function MockedAppRoot({ children }) { - return ( - - - - - - - {/* - - - - - */} - - {/* */} - - - {/* - - */} - Promise.reject(new Error('not implemented')), - generateTriggerId: () => '', - getUserInteractionPayloadByViewId: () => undefined, - handlePayloadUserInteraction: () => undefined, - off: () => undefined, - on: () => undefined, - triggerActionButtonAction: () => Promise.reject(new Error('not implemented')), - triggerBlockAction: () => Promise.reject(new Error('not implemented')), - triggerCancel: () => Promise.reject(new Error('not implemented')), - triggerSubmitView: () => Promise.reject(new Error('not implemented')), - }} - > - {/* - - */} - {wrappers.reduce((children, wrapper) => wrapper(children), children)} - {/* - - */} - - {/* - - */} - - - {/* */} - - {/* - - - - - */} - - - - - - - ); - }; - } -} -export const mockAppRoot = () => new MockedAppRootBuilder(); diff --git a/apps/meteor/client/stories/contexts/TranslationContextMock.tsx b/apps/meteor/client/stories/contexts/TranslationContextMock.tsx index 7b8e8548094f..ac98cd15cd89 100644 --- a/apps/meteor/client/stories/contexts/TranslationContextMock.tsx +++ b/apps/meteor/client/stories/contexts/TranslationContextMock.tsx @@ -51,6 +51,7 @@ const TranslationContextMock = ({ children }: TranslationContextMockProps): Reac { name: 'English', en: 'English', + ogName: 'English', key: 'en', }, ], diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 0e3167a0886c..17ca54920e7b 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -180,7 +180,7 @@ "eslint-plugin-testing-library": "~5.11.0", "eslint-plugin-you-dont-need-lodash-underscore": "~6.12.0", "fast-glob": "^3.2.12", - "i18next": "^20.6.1", + "i18next": "~23.4.5", "jest": "~29.6.1", "jest-axe": "^8.0.0", "jsdom-global": "^3.0.2", @@ -398,8 +398,8 @@ "react-aria": "~3.23.1", "react-dom": "~17.0.2", "react-error-boundary": "^3.1.4", - "react-hook-form": "^7.30.0", - "react-i18next": "^11.16.7", + "react-hook-form": "~7.45.4", + "react-i18next": "~13.2.1", "react-keyed-flatten-children": "^1.3.0", "react-virtuoso": "^1.11.1", "redis": "^4.0.6", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index 6edabf409f00..4dfd49cabd30 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -5799,7 +5799,7 @@ "registration.component.login": "Login", "registration.component.login.userNotFound": "User not found", "registration.component.login.incorrectPassword": "Incorrect password", - "registration.component.switchLanguage": "Switch to <1>en", + "registration.component.switchLanguage": "Change to <1>{{name}}", "registration.component.resetPassword": "Reset password", "registration.component.form.emailOrUsername": "Email or username", "registration.component.form.username": "Username", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json index 0c7119b768d2..0fc914f509f0 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json @@ -5545,7 +5545,7 @@ "registration.component.login": "Kirjaudu", "registration.component.login.userNotFound": "Käyttäjää ei löydy", "registration.component.login.incorrectPassword": "Väärä salasana", - "registration.component.switchLanguage": "Vaihda kieleksi <1>en", + "registration.component.switchLanguage": "Vaihda kieleksi <1>{{name}}", "registration.component.resetPassword": "Nollaa salasana", "registration.component.form.emailOrUsername": "Sähköpostiosoite tai käyttäjätunnus", "registration.component.form.username": "Käyttäjätunnus", @@ -5760,4 +5760,4 @@ "Uninstall_grandfathered_app": "Poistetaanko {{appName}}?", "App_will_lose_grandfathered_status": "**Tämä {{context}}sovellus menettää aikaisemmin käytetössä olleen sovelluksen tilansa.** \n \nYhteisöversion työtiloissa voi olla käytössä enintään {{limit}} {{context}} sovellusta. aikaisemmin Aikaisemmin käytössä olleet sovellukset lasketaan mukaan rajoitukseen, mutta rajoitusta ei sovelleta niihin.", "Theme_Appearence": "Teeman ulkoasu" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json index 0402967c47a8..3fd57ecb9a7e 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json @@ -5339,7 +5339,7 @@ "registration.component.login": "Bejelentkezés", "registration.component.login.userNotFound": "A felhasználó nem található", "registration.component.login.incorrectPassword": "Hibás jelszó", - "registration.component.switchLanguage": "Átváltás <1>angolra", + "registration.component.switchLanguage": "Átváltás <1>{{name}}", "registration.component.resetPassword": "Jelszó visszaállítása", "registration.component.form.emailOrUsername": "E-mail-cím vagy felhasználónév", "registration.component.form.username": "Felhasználónév", @@ -5438,4 +5438,4 @@ "Join_your_team": "Csatlakozás csapathoz", "Create_an_account": "Fiók létrehozása", "RegisterWorkspace_Features_Marketplace_Title": "Piactér" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json index 97b4015b0c1f..e111ab9c3e42 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json @@ -5550,7 +5550,7 @@ "registration.component.login": "Logga in", "registration.component.login.userNotFound": "Användare inte hittad", "registration.component.login.incorrectPassword": "Felaktigt lösenord", - "registration.component.switchLanguage": "Växla till <1>en", + "registration.component.switchLanguage": "Växla till <1>{{name}}", "registration.component.resetPassword": "Återställ lösenord", "registration.component.form.emailOrUsername": "E-postadress eller lösenord", "registration.component.form.username": "Användarnamn", @@ -5765,4 +5765,4 @@ "Uninstall_grandfathered_app": "Avinstallera {{appName}}?", "App_will_lose_grandfathered_status": "**Denna {{context}}-app kommer att förlora sin status som gammal app.** \n \nArbetsytorna i Community Edition kan ha upp till {{limit}} __kontext__-appar aktiverade. Gamla appar inkluderas i gränsen, men gränsen tillämpas inte på dem.", "Theme_Appearence": "Utseende för tema" -} \ No newline at end of file +} diff --git a/apps/meteor/server/lib/i18n.ts b/apps/meteor/server/lib/i18n.ts index 4a0ffdce5e92..265305ef71d6 100644 --- a/apps/meteor/server/lib/i18n.ts +++ b/apps/meteor/server/lib/i18n.ts @@ -1,5 +1,6 @@ import type { RocketchatI18nKeys } from '@rocket.chat/i18n'; import i18nDict from '@rocket.chat/i18n'; +import type { TOptions } from 'i18next'; import { i18n } from '../../app/utils/lib/i18n'; diff --git a/package.json b/package.json index a87c30241658..47f10019e2cc 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "resolutions": { "minimist": "1.2.6", "adm-zip": "0.5.9", - "preact@10.15.1": "patch:preact@npm:10.15.1#.yarn/patches/preact-npm-10.15.1-bd458de913.patch" + "preact@10.15.1": "patch:preact@npm:10.15.1#.yarn/patches/preact-npm-10.15.1-bd458de913.patch", + "@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": "patch:@storybook/react-docgen-typescript-plugin@npm%3A1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0#./.yarn/patches/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40.patch" } } diff --git a/packages/i18n/babel.config.cjs b/packages/i18n/babel.config.cjs index 1f2e1d2aa3b1..ab413e04e571 100644 --- a/packages/i18n/babel.config.cjs +++ b/packages/i18n/babel.config.cjs @@ -1,3 +1,3 @@ module.exports = { - presets: ['@babel/preset-modules'], + presets: [['@babel/preset-env', { bugfixes: true }]], }; diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 146e7cc36a15..830807b7a12b 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -3,12 +3,8 @@ "version": "0.0.1", "private": true, "devDependencies": { - "@babel/core": "~7.22.9", - "@babel/preset-env": "~7.22.9", - "@babel/preset-typescript": "~7.22.5", - "@types/babel__core": "~7.20.1", - "@types/babel__preset-env": "~7.9.2", - "@types/jest": "~29.5.3", + "@babel/core": "~7.22.10", + "@babel/preset-env": "~7.22.10", "babel-jest": "^29.5.0", "eslint": "~8.45.0", "jest": "~29.6.1", @@ -20,8 +16,7 @@ "build": "node ./src/index.mjs", "lint": "eslint --ext .mjs,.js,.jsx,.ts,.tsx .", "lint:fix": "eslint --ext .mjs,.js,.jsx,.ts,.tsx . --fix", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "dev": "tsc -p tsconfig.json --watch --preserveWatchOutput" + "test": "NODE_OPTIONS=--experimental-vm-modules jest" }, "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json deleted file mode 100644 index 91cebf125bc5..000000000000 --- a/packages/i18n/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.base.client.json", - "compilerOptions": { - "rootDir": "./src", - "outDir": "./dist" - }, - "include": ["./src/**/*"], - "exclude": ["./dist/**/*"] -} diff --git a/packages/livechat/package.json b/packages/livechat/package.json index 196481935485..5857e427fc61 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -103,15 +103,15 @@ "date-fns": "^2.15.0", "emoji-mart": "^3.0.1", "history": "~5.3.0", - "i18next": "^21.8.10", + "i18next": "~23.4.5", "markdown-it": "^11.0.1", "mem": "^6.1.1", "mitt": "^2.1.0", "preact": "10.15.1", "preact-router": "^3.2.1", "query-string": "^7.1.3", - "react-hook-form": "^7.45.0", - "react-i18next": "^11.16.9", + "react-hook-form": "~7.45.4", + "react-i18next": "~13.2.1", "whatwg-fetch": "^3.6.2" }, "browserslist": [ diff --git a/packages/livechat/src/components/Calls/CallNotification.tsx b/packages/livechat/src/components/Calls/CallNotification.tsx index 5cde8fd22196..9805d45165e8 100644 --- a/packages/livechat/src/components/Calls/CallNotification.tsx +++ b/packages/livechat/src/components/Calls/CallNotification.tsx @@ -1,5 +1,5 @@ +import { type TFunction } from 'i18next'; import { useState } from 'preact/compat'; -import type { TFunction } from 'react-i18next'; import { withTranslation } from 'react-i18next'; import { Livechat } from '../../api'; @@ -9,8 +9,7 @@ import { isMobileDevice } from '../../helpers/isMobileDevice'; import PhoneAccept from '../../icons/phone.svg'; import PhoneDecline from '../../icons/phoneOff.svg'; import constants from '../../lib/constants'; -import type { Dispatch } from '../../store'; -import store from '../../store'; +import store, { type Dispatch } from '../../store'; import { Avatar } from '../Avatar'; import { Button } from '../Button'; import { CallStatus } from './CallStatus'; diff --git a/packages/livechat/src/components/Calls/JoinCallButton.tsx b/packages/livechat/src/components/Calls/JoinCallButton.tsx index 7ec1da02faf1..9a276b0e9180 100644 --- a/packages/livechat/src/components/Calls/JoinCallButton.tsx +++ b/packages/livechat/src/components/Calls/JoinCallButton.tsx @@ -1,4 +1,4 @@ -import type { TFunction } from 'react-i18next'; +import { type TFunction } from 'i18next'; import { withTranslation } from 'react-i18next'; import { getConnectionBaseUrl } from '../../helpers/baseUrl'; @@ -7,8 +7,7 @@ import VideoIcon from '../../icons/video.svg'; import constants from '../../lib/constants'; import store from '../../store'; import { Button } from '../Button'; -import type { CallStatus } from './CallStatus'; -import { isCallOngoing } from './CallStatus'; +import { type CallStatus, isCallOngoing } from './CallStatus'; import styles from './styles.scss'; type JoinCallButtonProps = { diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json index e42f4f3055ba..d739e442879e 100644 --- a/packages/mock-providers/package.json +++ b/packages/mock-providers/package.json @@ -2,8 +2,14 @@ "name": "@rocket.chat/mock-providers", "version": "0.0.1", "private": true, + "dependencies": { + "@rocket.chat/i18n": "workspace:~", + "i18next": "~23.4.5", + "react-i18next": "~13.2.1" + }, "devDependencies": { "@rocket.chat/ui-contexts": "workspace:*", + "@storybook/react": "~6.5.16", "@tanstack/react-query": "^4.16.1", "@types/jest": "~29.5.3", "eslint": "~8.45.0", diff --git a/packages/mock-providers/src/MockedAppRootBuilder.tsx b/packages/mock-providers/src/MockedAppRootBuilder.tsx index 03136e62ec86..9e114be87d15 100644 --- a/packages/mock-providers/src/MockedAppRootBuilder.tsx +++ b/packages/mock-providers/src/MockedAppRootBuilder.tsx @@ -1,7 +1,11 @@ -import type { ISetting, Serialized, SettingValue } from '@rocket.chat/core-typings'; -import type { Method, OperationParams, OperationResult, PathPattern, UrlParams } from '@rocket.chat/rest-typings'; -import type { ServerMethodName, ServerMethodParameters, ServerMethodReturn, TranslationKey } from '@rocket.chat/ui-contexts'; +import { type ISetting, type Serialized, type SettingValue } from '@rocket.chat/core-typings'; +import languages from '@rocket.chat/i18n/dist/languages'; +import { type Method, type OperationParams, type OperationResult, type PathPattern, type UrlParams } from '@rocket.chat/rest-typings'; import { + type ServerMethodName, + type ServerMethodParameters, + type ServerMethodReturn, + type TranslationKey, AuthorizationContext, ConnectionStatusContext, RouterContext, @@ -12,11 +16,13 @@ import { ActionManagerContext, ModalContext, } from '@rocket.chat/ui-contexts'; +import { type DecoratorFn } from '@storybook/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import type { WrapperComponent } from '@testing-library/react-hooks'; -import type { ObjectId } from 'mongodb'; -import type { ContextType, ReactNode } from 'react'; -import React from 'react'; +import { type WrapperComponent } from '@testing-library/react-hooks'; +import { createInstance } from 'i18next'; +import { type ObjectId } from 'mongodb'; +import React, { type ContextType, type ReactNode, useEffect, useReducer } from 'react'; +import { I18nextProvider, initReactI18next } from 'react-i18next'; type Mutable = { -readonly [P in keyof T]: T[P]; @@ -71,21 +77,6 @@ export class MockedAppRootBuilder { dispatch: async () => undefined, }; - private translation: ContextType = { - language: 'en', - languages: [ - { - en: 'English', - key: 'en', - name: 'English', - }, - ], - loadLanguage: () => Promise.resolve(), - translate: Object.assign((key: string) => key, { - has: (_key: string | number | symbol): _key is TranslationKey => true, - }), - }; - private user: ContextType = { loginWithPassword: () => Promise.reject(new Error('not implemented')), logout: () => Promise.reject(new Error('not implemented')), @@ -322,6 +313,40 @@ export class MockedAppRootBuilder { return this; } + private i18n = createInstance( + { + // debug: true, + lng: 'en', + fallbackLng: 'en', + ns: ['core'], + nsSeparator: '.', + partialBundledLanguages: true, + defaultNS: 'core', + interpolation: { + escapeValue: false, + }, + initImmediate: false, + }, + () => undefined, + ).use(initReactI18next); + + withTranslations(lng: string, ns: string, resources: Record): this { + const addResources = () => { + this.i18n.addResources(lng, ns, resources); + for (const [key, value] of Object.entries(resources)) { + this.i18n.addResource(lng, ns, key, value); + } + }; + + if (this.i18n.isInitialized) { + addResources(); + return this; + } + + this.i18n.on('initialized', addResources); + return this; + } + build(): WrapperComponent<{ children: ReactNode }> { const queryClient = new QueryClient({ defaultOptions: { @@ -330,65 +355,116 @@ export class MockedAppRootBuilder { }, }); - const { connectionStatus, server, router, settings, translation, user, modal, authorization, wrappers } = this; + const { connectionStatus, server, router, settings, user, modal, i18n, authorization, wrappers } = this; + + const reduceTranslation = (translation?: ContextType): ContextType => { + return { + ...translation, + language: i18n.isInitialized ? i18n.language : 'en', + languages: [ + { + en: 'Default', + name: i18n.isInitialized ? i18n.t('Default') : 'Default', + ogName: i18n.isInitialized ? i18n.t('Default') : 'Default', + key: '', + }, + ...(i18n.isInitialized + ? [...new Set([...i18n.languages, ...languages])].map((key) => ({ + en: key, + name: new Intl.DisplayNames([key], { type: 'language' }).of(key) ?? key, + ogName: new Intl.DisplayNames([key], { type: 'language' }).of(key) ?? key, + key, + })) + : []), + ], + loadLanguage: async (language) => { + if (!i18n.isInitialized) { + return; + } + + await i18n.changeLanguage(language); + }, + translate: Object.assign( + (key: TranslationKey, options?: unknown) => (i18n.isInitialized ? i18n.t(key, options as { lng?: string }) : ''), + { + has: (key: string, options?: { lng?: string }): key is TranslationKey => + !!key && i18n.isInitialized && i18n.exists(key, options), + }, + ), + }; + }; return function MockedAppRoot({ children }) { + const [translation, updateTranslation] = useReducer(reduceTranslation, undefined, () => reduceTranslation()); + + useEffect(() => { + i18n.on('initialized', updateTranslation); + i18n.on('languageChanged', updateTranslation); + + return () => { + i18n.off('initialized', updateTranslation); + i18n.off('languageChanged', updateTranslation); + }; + }, []); + return ( - - {/* + + + {/* */} - - {/* */} - - - {/* + + {/* */} + + + {/* */} - Promise.reject(new Error('not implemented')), - generateTriggerId: () => '', - getUserInteractionPayloadByViewId: () => undefined, - handlePayloadUserInteraction: () => undefined, - off: () => undefined, - on: () => undefined, - triggerActionButtonAction: () => Promise.reject(new Error('not implemented')), - triggerBlockAction: () => Promise.reject(new Error('not implemented')), - triggerCancel: () => Promise.reject(new Error('not implemented')), - triggerSubmitView: () => Promise.reject(new Error('not implemented')), - }} - > - {/* + Promise.reject(new Error('not implemented')), + generateTriggerId: () => '', + getUserInteractionPayloadByViewId: () => undefined, + handlePayloadUserInteraction: () => undefined, + off: () => undefined, + on: () => undefined, + triggerActionButtonAction: () => Promise.reject(new Error('not implemented')), + triggerBlockAction: () => Promise.reject(new Error('not implemented')), + triggerCancel: () => Promise.reject(new Error('not implemented')), + triggerSubmitView: () => Promise.reject(new Error('not implemented')), + }} + > + {/* */} - {wrappers.reduce((children, wrapper) => wrapper(children), children)} - {/* + {wrappers.reduce((children, wrapper) => wrapper(children), children)} + {/* */} - - {/* + + {/* */} - - - {/* */} - - {/* + + + {/* */} + + {/* */} - + + @@ -397,4 +473,11 @@ export class MockedAppRootBuilder { ); }; } + + buildStoryDecorator(): DecoratorFn { + const WrapperComponent = this.build(); + + // eslint-disable-next-line react/display-name, react/no-multi-comp + return (fn) => {fn()}; + } } diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 2a4e5e97bdba..4bc9a7d8c681 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -37,7 +37,7 @@ "jest": "~29.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-hook-form": "^7.30.0", + "react-hook-form": "~7.45.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/ui-client/src/components/PasswordVerifier/PasswordVerifiers.spec.tsx b/packages/ui-client/src/components/PasswordVerifier/PasswordVerifiers.spec.tsx index 95614491c3bd..cd2a5175e59f 100644 --- a/packages/ui-client/src/components/PasswordVerifier/PasswordVerifiers.spec.tsx +++ b/packages/ui-client/src/components/PasswordVerifier/PasswordVerifiers.spec.tsx @@ -16,15 +16,6 @@ type Response = { ][]; }; -jest.mock('react-i18next', () => ({ - useTranslation: () => ({ - t: (str: string) => str, - i18n: { - changeLanguage: () => new Promise(() => undefined), - }, - }), -})); - afterEach(() => { // restore the spy created with spyOn jest.restoreAllMocks(); diff --git a/packages/ui-contexts/src/TranslationContext.ts b/packages/ui-contexts/src/TranslationContext.ts index ce75d08d56e5..d0f9bb6318c3 100644 --- a/packages/ui-contexts/src/TranslationContext.ts +++ b/packages/ui-contexts/src/TranslationContext.ts @@ -7,6 +7,7 @@ export { keys }; export type TranslationLanguage = { en: string; name: string; + ogName: string; key: string; }; @@ -33,6 +34,7 @@ export const TranslationContext = createContext({ { name: 'Default', en: 'Default', + ogName: 'Default', key: '', }, ], diff --git a/packages/web-ui-registration/.babelrc.json b/packages/web-ui-registration/.babelrc.json new file mode 100644 index 000000000000..9398333d1322 --- /dev/null +++ b/packages/web-ui-registration/.babelrc.json @@ -0,0 +1,7 @@ +{ + "presets": [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript" + ] +} diff --git a/packages/web-ui-registration/.storybook/logo.svg b/packages/web-ui-registration/.storybook/logo.svg new file mode 100644 index 000000000000..6ae18fa4b93e --- /dev/null +++ b/packages/web-ui-registration/.storybook/logo.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/web-ui-registration/.storybook/logo.svg.d.ts b/packages/web-ui-registration/.storybook/logo.svg.d.ts new file mode 100644 index 000000000000..27c0914b230f --- /dev/null +++ b/packages/web-ui-registration/.storybook/logo.svg.d.ts @@ -0,0 +1,3 @@ +declare const path: string; + +export = path; diff --git a/packages/web-ui-registration/.storybook/main.ts b/packages/web-ui-registration/.storybook/main.ts new file mode 100644 index 000000000000..3f3c4d626f5a --- /dev/null +++ b/packages/web-ui-registration/.storybook/main.ts @@ -0,0 +1,12 @@ +import { type StorybookConfig } from '@storybook/core-common'; + +const config: StorybookConfig = { + stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: ['@storybook/addon-essentials', 'storybook-dark-mode'], + features: { + postcss: false, + }, + framework: '@storybook/react', +}; + +module.exports = config; diff --git a/packages/web-ui-registration/.storybook/preview.tsx b/packages/web-ui-registration/.storybook/preview.tsx new file mode 100644 index 000000000000..d2fd6e7552a4 --- /dev/null +++ b/packages/web-ui-registration/.storybook/preview.tsx @@ -0,0 +1,36 @@ +import { themes } from '@storybook/theming'; +import { type Parameters } from '@storybook/addons'; +import manifest from '../package.json'; +import logo from './logo.svg'; +import '@rocket.chat/fuselage/dist/fuselage.css'; +import '@rocket.chat/icons/dist/rocketchat.css'; + +export const parameters: Parameters = { + actions: { argTypesRegex: "^on[A-Z].*" }, + backgrounds: { + grid: { + cellSize: 4, + cellAmount: 4, + opacity: 0.5, + }, + }, + options: { + storySort: ([, a], [, b]) => a.kind.localeCompare(b.kind), + }, + layout: 'fullscreen', + darkMode: { + dark: { + ...themes.dark, + brandTitle: manifest.name, + brandImage: logo, + brandUrl: manifest.homepage, + }, + light: { + ...themes.normal, + brandTitle: manifest.name, + brandImage: logo, + brandUrl: manifest.homepage, + }, + }, +}; + diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index d19e6cd673db..a6e7332c948f 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -2,16 +2,48 @@ "name": "@rocket.chat/web-ui-registration", "version": "1.0.3", "private": true, + "homepage": "https://rocket.chat", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "files": [ + "/dist" + ], + "scripts": { + "lint": "eslint --ext .js,.jsx,.ts,.tsx .", + "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", + "test": "jest", + "storybook": "start-storybook -p 6006 --no-version-updates", + "build": "tsc -p tsconfig.build.json", + "dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput" + }, "devDependencies": { + "@babel/core": "~7.22.10", + "@babel/preset-env": "~7.22.10", + "@babel/preset-react": "~7.22.5", + "@babel/preset-typescript": "~7.22.5", + "@rocket.chat/i18n": "workspace:~", "@rocket.chat/layout": "next", + "@rocket.chat/mock-providers": "workspace:~", "@rocket.chat/ui-client": "workspace:^", "@rocket.chat/ui-contexts": "workspace:^", + "@storybook/addon-actions": "~6.5.16", + "@storybook/addon-docs": "~6.5.16", + "@storybook/addon-essentials": "~6.5.16", + "@storybook/builder-webpack4": "~6.5.16", + "@storybook/manager-webpack4": "~6.5.16", + "@storybook/react": "~6.5.16", + "@storybook/testing-library": "^0.2.0", "@tanstack/react-query": "^4.16.1", "@testing-library/react": "^13.3.0", "@types/jest": "~29.5.3", + "@types/react": "~17.0.62", + "babel-loader": "~8.3.0", "eslint": "~8.45.0", "jest": "~29.6.1", - "react-hook-form": "^7.34.2", + "react": "~17.0.2", + "react-hook-form": "~7.45.4", + "react-i18next": "~13.2.1", + "storybook-dark-mode": "~3.0.1", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, @@ -22,17 +54,5 @@ "react": "*", "react-hook-form": "*", "react-i18next": "*" - }, - "scripts": { - "lint": "eslint --ext .js,.jsx,.ts,.tsx .", - "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix", - "test": "jest", - "build": "tsc -p tsconfig.json", - "dev": "tsc -p tsconfig.json --watch --preserveWatchOutput" - }, - "main": "./dist/index.js", - "typings": "./dist/index.d.ts", - "files": [ - "/dist" - ] + } } diff --git a/packages/web-ui-registration/src/ResetPassword/ResetPassword.stories.tsx b/packages/web-ui-registration/src/ResetPassword/ResetPassword.stories.tsx index d2373c44e365..d3c213c7fcfb 100644 --- a/packages/web-ui-registration/src/ResetPassword/ResetPassword.stories.tsx +++ b/packages/web-ui-registration/src/ResetPassword/ResetPassword.stories.tsx @@ -1,8 +1,12 @@ +import { mockAppRoot } from '@rocket.chat/mock-providers'; +import { type ComponentMeta } from '@storybook/react'; + import ResetPasswordPage from './ResetPasswordPage'; export default { title: 'Login/ResetPassword', component: ResetPasswordPage, -}; + decorators: [mockAppRoot().buildStoryDecorator()], +} satisfies ComponentMeta; export const Basic = () => ; diff --git a/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.stories.tsx b/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.stories.tsx new file mode 100644 index 000000000000..a71d4410ff36 --- /dev/null +++ b/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.stories.tsx @@ -0,0 +1,42 @@ +import { Box, Tile } from '@rocket.chat/fuselage'; +import { mockAppRoot } from '@rocket.chat/mock-providers'; +import { type ComponentStory, type ComponentMeta } from '@storybook/react'; +import { createElement } from 'react'; +import { useTranslation } from 'react-i18next'; + +import LoginSwitchLanguageFooter from './LoginSwitchLanguageFooter'; + +export default { + title: 'components/LoginSwitchLanguageFooter', + component: LoginSwitchLanguageFooter, + decorators: [ + (fn) => + createElement(function ExampleTranslationDecorator() { + const { t } = useTranslation(); + + return ( + + {t('example.text')} + {fn()} + + ); + }), + mockAppRoot() + .withSetting('Language', 'fi') + .withTranslations('en', 'registration', { 'component.switchLanguage': 'Change to <1>{{ name }}' }) + .withTranslations('en', 'example', { text: 'Hello!' }) + .withTranslations('fi', 'registration', { 'component.switchLanguage': 'Vaihda kieleksi <1>{{ name }}' }) + .withTranslations('fi', 'example', { text: 'Hei!' }) + .withTranslations('pt-BR', 'registration', { 'component.switchLanguage': 'Mudar para <1>{{ name }}' }) + .withTranslations('pt', 'example', { text: 'Olá!' }) + .buildStoryDecorator(), + ], + args: { + browserLanguage: 'pt-BR', + }, + parameters: { + layout: 'centered', + }, +} satisfies ComponentMeta; + +export const Default: ComponentStory = (args) => ; diff --git a/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.tsx b/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.tsx index 9a23039f9336..17b45e9157cb 100644 --- a/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.tsx +++ b/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.tsx @@ -1,9 +1,11 @@ -import { useSetting, useLoadLanguage, useLanguage, useLanguages } from '@rocket.chat/ui-contexts'; -import type { ReactElement } from 'react'; -import { Fragment, useMemo } from 'react'; -import { Trans } from 'react-i18next'; +import { Button } from '@rocket.chat/fuselage'; +import { useLocalStorage } from '@rocket.chat/fuselage-hooks'; +import { HorizontalWizardLayoutCaption } from '@rocket.chat/layout'; +import { type TranslationLanguage, useSetting, useLoadLanguage, useLanguage, useLanguages } from '@rocket.chat/ui-contexts'; +import { type ReactElement, type UIEvent, useMemo, useEffect } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; -export const normalizeLanguage = (language: string): string => { +const normalizeLanguage = (language: string): string => { // Fix browsers having all-lowercase language settings eg. pt-br, en-us const regex = /([a-z]{2,3})-([a-z]{2,4})/; const matches = regex.exec(language); @@ -14,49 +16,67 @@ export const normalizeLanguage = (language: string): string => { return language; }; -const browserLanguage = normalizeLanguage(window.navigator.language ?? 'en'); - -const LoginSwitchLanguageFooter = (): ReactElement | null => { +const useSuggestedLanguages = ({ + browserLanguage = normalizeLanguage(window.navigator.language ?? 'en'), +}: { + browserLanguage?: string; +}) => { + const availableLanguages = useLanguages(); const currentLanguage = useLanguage(); - - const languages = useLanguages(); - const loadLanguage = useLoadLanguage(); - - const serverLanguage = normalizeLanguage((useSetting('Language') as string | undefined) || 'en'); + const serverLanguage = normalizeLanguage(useSetting('Language') || 'en'); const suggestions = useMemo(() => { - const potentialSuggestions = new Set([serverLanguage, browserLanguage, 'en'].map(normalizeLanguage)); - return Array.from(potentialSuggestions).filter( - (language) => language && language !== currentLanguage && Boolean(languages.find(({ key }) => key === language)), + const potentialLanguages = new Set([serverLanguage, browserLanguage, 'en'].map(normalizeLanguage)); + const potentialSuggestions = Array.from(potentialLanguages).map((potentialLanguageKey) => + availableLanguages.find((language) => language.key === potentialLanguageKey), ); - }, [serverLanguage, currentLanguage, languages]); + return potentialSuggestions.filter((language): language is TranslationLanguage => { + return !!language && language.key !== currentLanguage; + }); + }, [serverLanguage, browserLanguage, availableLanguages, currentLanguage]); + + const { i18n } = useTranslation(); + + useEffect(() => { + i18n.loadLanguages(suggestions.map((suggestion) => suggestion.key)); + }, [i18n, suggestions]); + + return { suggestions }; +}; + +type LoginSwitchLanguageFooterProps = { + browserLanguage?: string; +}; + +const LoginSwitchLanguageFooter = ({ + browserLanguage = normalizeLanguage(window.navigator.language ?? 'en'), +}: LoginSwitchLanguageFooterProps): ReactElement | null => { + const loadLanguage = useLoadLanguage(); + const { suggestions } = useSuggestedLanguages({ browserLanguage }); - const handleSwitchLanguageClick = (language: string) => (): void => { - loadLanguage(language); - }; + const [, setPreferedLanguage] = useLocalStorage('preferedLanguage', ''); + const handleSwitchLanguageClick = + (language: TranslationLanguage) => + async (event: UIEvent): Promise => { + event.preventDefault(); + await loadLanguage(language.key); + setPreferedLanguage(language.key); + }; if (!suggestions.length) { return null; } return ( -

- - Switch to - <> - {suggestions.map((language, index) => { - return ( - - {index > 0 ? : <>} - - - ); - })} - - -

+ + {suggestions.map((suggestion) => ( + + ))} + ); }; diff --git a/packages/web-ui-registration/tsconfig.build.json b/packages/web-ui-registration/tsconfig.build.json new file mode 100644 index 000000000000..a175aec991c8 --- /dev/null +++ b/packages/web-ui-registration/tsconfig.build.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext" + }, + "include": ["./src/**/*"], + "exclude": ["./src/**/*.spec.ts", "./src/**/*.stories.tsx"] +} diff --git a/packages/web-ui-registration/tsconfig.json b/packages/web-ui-registration/tsconfig.json index e2be47cf5499..47119e42b814 100644 --- a/packages/web-ui-registration/tsconfig.json +++ b/packages/web-ui-registration/tsconfig.json @@ -1,8 +1,9 @@ { "extends": "../../tsconfig.base.client.json", "compilerOptions": { - "rootDir": "./src", - "outDir": "./dist" + "rootDirs": ["./src","./.storybook"], + "outDir": "./dist", + "module": "CommonJS" }, - "include": ["./src/**/*"] + "include": ["./src", "./.storybook"], } diff --git a/yarn.lock b/yarn.lock index afc0f0262a95..5e42faea4480 100644 --- a/yarn.lock +++ b/yarn.lock @@ -964,23 +964,17 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.5.5, @babel/code-frame@npm:^7.8.3": - version: 7.22.5 - resolution: "@babel/code-frame@npm:7.22.5" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.5.5, @babel/code-frame@npm:^7.8.3": + version: 7.22.10 + resolution: "@babel/code-frame@npm:7.22.10" dependencies: - "@babel/highlight": ^7.22.5 - checksum: cfe804f518f53faaf9a1d3e0f9f74127ab9a004912c3a16fda07fb6a633393ecb9918a053cb71804204c1b7ec3d49e1699604715e2cfb0c9f7bc4933d324ebb6 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.20.5": - version: 7.20.5 - resolution: "@babel/compat-data@npm:7.20.5" - checksum: 523790c43ef6388fae91d1ca9acf1ab0e1b22208dcd39c0e5e7a6adf0b48a133f1831be8d5931a72ecd48860f3e3fb777cb89840794abd8647a5c8e5cfab484e + "@babel/highlight": ^7.22.10 + chalk: ^2.4.2 + checksum: 89a06534ad19759da6203a71bad120b1d7b2ddc016c8e07d4c56b35dea25e7396c6da60a754e8532a86733092b131ae7f661dbe6ba5d165ea777555daa2ed3c9 languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": version: 7.22.9 resolution: "@babel/compat-data@npm:7.22.9" checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 @@ -1011,26 +1005,26 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.7, @babel/core@npm:^7.21.4, @babel/core@npm:^7.7.5, @babel/core@npm:~7.22.9": - version: 7.22.9 - resolution: "@babel/core@npm:7.22.9" +"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.7, @babel/core@npm:^7.21.4, @babel/core@npm:^7.7.5, @babel/core@npm:~7.22.10, @babel/core@npm:~7.22.9": + version: 7.22.10 + resolution: "@babel/core@npm:7.22.10" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.9 + "@babel/code-frame": ^7.22.10 + "@babel/generator": ^7.22.10 + "@babel/helper-compilation-targets": ^7.22.10 "@babel/helper-module-transforms": ^7.22.9 - "@babel/helpers": ^7.22.6 - "@babel/parser": ^7.22.7 + "@babel/helpers": ^7.22.10 + "@babel/parser": ^7.22.10 "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.8 - "@babel/types": ^7.22.5 + "@babel/traverse": ^7.22.10 + "@babel/types": ^7.22.10 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 semver: ^6.3.1 - checksum: 7bf069aeceb417902c4efdaefab1f7b94adb7dea694a9aed1bda2edf4135348a080820529b1a300c6f8605740a00ca00c19b2d5e74b5dd489d99d8c11d5e56d1 + checksum: cc4efa09209fe1f733cf512e9e4bb50870b191ab2dee8014e34cd6e731f204e48476cc53b4bbd0825d4d342304d577ae43ff5fd8ab3896080673c343321acb32 languageName: node linkType: hard @@ -1048,15 +1042,15 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.12.5, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2": - version: 7.22.9 - resolution: "@babel/generator@npm:7.22.9" +"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.12.5, @babel/generator@npm:^7.22.10, @babel/generator@npm:^7.7.2": + version: 7.22.10 + resolution: "@babel/generator@npm:7.22.10" dependencies: - "@babel/types": ^7.22.5 + "@babel/types": ^7.22.10 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: 7c9d2c58b8d5ac5e047421a6ab03ec2ff5d9a5ff2c2212130a0055e063ac349e0b19d435537d6886c999771aef394832e4f54cd9fc810100a7f23d982f6af06b + checksum: 59a79730abdff9070692834bd3af179e7a9413fa2ff7f83dff3eb888765aeaeb2bfc7b0238a49613ed56e1af05956eff303cc139f2407eda8df974813e486074 languageName: node linkType: hard @@ -1078,18 +1072,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-compilation-targets@npm:7.22.9" +"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.10, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": + version: 7.22.10 + resolution: "@babel/helper-compilation-targets@npm:7.22.10" dependencies: "@babel/compat-data": ^7.22.9 "@babel/helper-validator-option": ^7.22.5 browserslist: ^4.21.9 lru-cache: ^5.1.1 semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: ea0006c6a93759025f4a35a25228ae260538c9f15023e8aac2a6d45ca68aef4cf86cfc429b19af9a402cbdd54d5de74ad3fbcf6baa7e48184dc079f1a791e178 + checksum: f6f1896816392bcff671bbe6e277307729aee53befb4a66ea126e2a91eda78d819a70d06fa384c74ef46c1595544b94dca50bef6c78438d9ffd31776dafbd435 languageName: node linkType: hard @@ -1240,17 +1232,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.5" +"@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-wrap-function": ^7.22.5 - "@babel/types": ^7.22.5 + "@babel/helper-wrap-function": ^7.22.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 1e51dcff1c22e97ea3d22034b77788048eb6d8c6860325bd7a1046b7a7135730cefd93b5c96fd9839d76031095d5ffb6f0cd6ee90a5d69a4c7de980d7f4623d9 + checksum: 05538079447829b13512157491cc77f9cf1ea7e1680e15cff0682c3ed9ee162de0c4862ece20a6d6b2df28177a1520bcfe45993fbeccf2747a81795a7c3f6290 languageName: node linkType: hard @@ -1295,14 +1286,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.19.4, @babel/helper-string-parser@npm:^7.22.5": +"@babel/helper-string-parser@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-string-parser@npm:7.22.5" checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.19.1, @babel/helper-validator-identifier@npm:^7.22.5": +"@babel/helper-validator-identifier@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-validator-identifier@npm:7.22.5" checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea @@ -1316,46 +1307,45 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-wrap-function@npm:7.22.5" +"@babel/helper-wrap-function@npm:^7.22.9": + version: 7.22.10 + resolution: "@babel/helper-wrap-function@npm:7.22.10" dependencies: "@babel/helper-function-name": ^7.22.5 "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: a4ba2d7577ad3ce92fadaa341ffce3b0e4b389808099b07c80847f9be0852f4b42344612bc1b3d1b796ffb75be56d5957c5c56a1734f6aee5ccbb7cd9ab12691 + "@babel/types": ^7.22.10 + checksum: 854bd85fc1de1d4c633f04aa1f5b6b022fbc013b47d012b6a11a7a9125a1f4a2a4f13a3e0d7a7056fe7eda8a9ecd1ea3daf8af685685a2d1b16578768cfdd28f languageName: node linkType: hard -"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helpers@npm:7.22.6" +"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/helpers@npm:7.22.10" dependencies: "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.6 - "@babel/types": ^7.22.5 - checksum: 5c1f33241fe7bf7709868c2105134a0a86dca26a0fbd508af10a89312b1f77ca38ebae43e50be3b208613c5eacca1559618af4ca236f0abc55d294800faeff30 + "@babel/traverse": ^7.22.10 + "@babel/types": ^7.22.10 + checksum: 3b1219e362df390b6c5d94b75a53fc1c2eb42927ced0b8022d6a29b833a839696206b9bdad45b4805d05591df49fc16b6fb7db758c9c2ecfe99e3e94cb13020f languageName: node linkType: hard -"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/highlight@npm:7.22.5" +"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/highlight@npm:7.22.10" dependencies: "@babel/helper-validator-identifier": ^7.22.5 - chalk: ^2.0.0 + chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: f61ae6de6ee0ea8d9b5bcf2a532faec5ab0a1dc0f7c640e5047fc61630a0edb88b18d8c92eb06566d30da7a27db841aca11820ecd3ebe9ce514c9350fbed39c4 + checksum: f714a1e1a72dd9d72f6383f4f30fd342e21a8df32d984a4ea8f5eab691bb6ba6db2f8823d4b4cf135d98869e7a98925b81306aa32ee3c429f8cfa52c75889e1b languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.22.7": - version: 7.22.7 - resolution: "@babel/parser@npm:7.22.7" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.10, @babel/parser@npm:^7.22.5": + version: 7.22.10 + resolution: "@babel/parser@npm:7.22.10" bin: parser: ./bin/babel-parser.js - checksum: 02209ddbd445831ee8bf966fdf7c29d189ed4b14343a68eb2479d940e7e3846340d7cc6bd654a5f3d87d19dc84f49f50a58cf9363bee249dc5409ff3ba3dab54 + checksum: af51567b7d3cdf523bc608eae057397486c7fa6c2e5753027c01fe5c36f0767b2d01ce3049b222841326cc5b8c7fda1d810ac1a01af0a97bb04679e2ef9f7049 languageName: node linkType: hard @@ -1510,18 +1500,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951 - languageName: node - linkType: hard - "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -1809,17 +1787,17 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.22.7": - version: 7.22.7 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.7" +"@babel/plugin-transform-async-generator-functions@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.22.10" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-remap-async-to-generator": ^7.22.5 + "@babel/helper-remap-async-to-generator": ^7.22.9 "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 57cd2cce3fb696dadf00e88f168683df69e900b92dadeae07429243c43bc21d5ccdc0c2db61cf5c37bd0fbd893fc455466bef6babe4aa5b79d9cb8ba89f40ae7 + checksum: 87d77b66fda05b42450aa285fa031aa3963c52aab00190f95f6c3ddefbed683035c1f314347c888f8406fba5d436b888ff75b5e36b8ab23afd4ca4c3f086f88c languageName: node linkType: hard @@ -1847,14 +1825,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.12.12, @babel/plugin-transform-block-scoping@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-block-scoping@npm:7.22.5" +"@babel/plugin-transform-block-scoping@npm:^7.12.12, @babel/plugin-transform-block-scoping@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/plugin-transform-block-scoping@npm:7.22.10" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 26987002cfe6e24544e60fa35f07052b6557f590c1a1cc5cf35d6dc341d7fea163c1222a2d70d5d2692f0b9860d942fd3ba979848b2995d4debffa387b9b19ae + checksum: b1d06f358dedcb748a57e5feea4b9285c60593fb2912b921f22898c57c552c78fe18128678c8f84dd4ea1d4e5aebede8783830b24cd63f22c30261156d78bc77 languageName: node linkType: hard @@ -1914,18 +1892,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.12.1, @babel/plugin-transform-destructuring@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-destructuring@npm:7.22.5" +"@babel/plugin-transform-destructuring@npm:^7.12.1, @babel/plugin-transform-destructuring@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/plugin-transform-destructuring@npm:7.22.10" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 76f6ea2aee1fcfa1c3791eb7a5b89703c6472650b993e8666fff0f1d6e9d737a84134edf89f63c92297f3e75064c1263219463b02dd9bc7434b6e5b9935e3f20 + checksum: 011707801bd0029fd4f0523d24d06fdc0cbe8c9da280d75728f76713d639c4dc976e1b56a1ba7bff25468f86867efb71c9b4cac81140adbdd0abf2324b19a8bb languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.4.4": +"@babel/plugin-transform-dotall-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" dependencies: @@ -2203,16 +2181,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.6" +"@babel/plugin-transform-optional-chaining@npm:^7.22.10, @babel/plugin-transform-optional-chaining@npm:^7.22.5": + version: 7.22.10 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.22.10" dependencies: "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9713f7920ed04090c149fc5ec024dd1638e8b97aa4ae3753b93072d84103b8de380afb96d6cf03e53b285420db4f705f3ac13149c6fd54f322b61dc19e33c54f + checksum: 522d6214bb9f6ede8a2fc56a873e791aabd62f0b3be78fb8e62ca801a9033bcadabfb77aec6739f0e67f0f15f7c739c08bafafd66d3676edf1941fe6429cebcd languageName: node linkType: hard @@ -2335,15 +2313,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.22.5" +"@babel/plugin-transform-regenerator@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/plugin-transform-regenerator@npm:7.22.10" dependencies: "@babel/helper-plugin-utils": ^7.22.5 - regenerator-transform: ^0.15.1 + regenerator-transform: ^0.15.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f7c5ca5151321963df777cc02725d10d1ccc3b3b8323da0423aecd9ac6144cbdd2274af5281a5580db2fc2f8b234e318517b5d76b85669118906533a559f2b6a + checksum: e13678d62d6fa96f11cb8b863f00e8693491e7adc88bfca3f2820f80cbac8336e7dec3a596eee6a1c4663b7ececc3564f2cd7fb44ed6d4ce84ac2bb7f39ecc6e languageName: node linkType: hard @@ -2428,14 +2406,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.5" +"@babel/plugin-transform-unicode-escapes@npm:^7.22.10": + version: 7.22.10 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.10" dependencies: "@babel/helper-plugin-utils": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: da5e85ab3bb33a75cbf6181bfd236b208dc934702fd304db127232f17b4e0f42c6d3f238de8589470b4190906967eea8ca27adf3ae9d8ee4de2a2eae906ed186 + checksum: 807f40ed1324c8cb107c45358f1903384ca3f0ef1d01c5a3c5c9b271c8d8eec66936a3dcc8d75ddfceea9421420368c2e77ae3adef0a50557e778dfe296bf382 languageName: node linkType: hard @@ -2475,12 +2453,12 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.12.11, @babel/preset-env@npm:~7.22.9": - version: 7.22.9 - resolution: "@babel/preset-env@npm:7.22.9" +"@babel/preset-env@npm:^7.12.11, @babel/preset-env@npm:~7.22.10, @babel/preset-env@npm:~7.22.9": + version: 7.22.10 + resolution: "@babel/preset-env@npm:7.22.10" dependencies: "@babel/compat-data": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.10 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-validator-option": ^7.22.5 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.5 @@ -2505,15 +2483,15 @@ __metadata: "@babel/plugin-syntax-top-level-await": ^7.14.5 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 "@babel/plugin-transform-arrow-functions": ^7.22.5 - "@babel/plugin-transform-async-generator-functions": ^7.22.7 + "@babel/plugin-transform-async-generator-functions": ^7.22.10 "@babel/plugin-transform-async-to-generator": ^7.22.5 "@babel/plugin-transform-block-scoped-functions": ^7.22.5 - "@babel/plugin-transform-block-scoping": ^7.22.5 + "@babel/plugin-transform-block-scoping": ^7.22.10 "@babel/plugin-transform-class-properties": ^7.22.5 "@babel/plugin-transform-class-static-block": ^7.22.5 "@babel/plugin-transform-classes": ^7.22.6 "@babel/plugin-transform-computed-properties": ^7.22.5 - "@babel/plugin-transform-destructuring": ^7.22.5 + "@babel/plugin-transform-destructuring": ^7.22.10 "@babel/plugin-transform-dotall-regex": ^7.22.5 "@babel/plugin-transform-duplicate-keys": ^7.22.5 "@babel/plugin-transform-dynamic-import": ^7.22.5 @@ -2536,32 +2514,32 @@ __metadata: "@babel/plugin-transform-object-rest-spread": ^7.22.5 "@babel/plugin-transform-object-super": ^7.22.5 "@babel/plugin-transform-optional-catch-binding": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.6 + "@babel/plugin-transform-optional-chaining": ^7.22.10 "@babel/plugin-transform-parameters": ^7.22.5 "@babel/plugin-transform-private-methods": ^7.22.5 "@babel/plugin-transform-private-property-in-object": ^7.22.5 "@babel/plugin-transform-property-literals": ^7.22.5 - "@babel/plugin-transform-regenerator": ^7.22.5 + "@babel/plugin-transform-regenerator": ^7.22.10 "@babel/plugin-transform-reserved-words": ^7.22.5 "@babel/plugin-transform-shorthand-properties": ^7.22.5 "@babel/plugin-transform-spread": ^7.22.5 "@babel/plugin-transform-sticky-regex": ^7.22.5 "@babel/plugin-transform-template-literals": ^7.22.5 "@babel/plugin-transform-typeof-symbol": ^7.22.5 - "@babel/plugin-transform-unicode-escapes": ^7.22.5 + "@babel/plugin-transform-unicode-escapes": ^7.22.10 "@babel/plugin-transform-unicode-property-regex": ^7.22.5 "@babel/plugin-transform-unicode-regex": ^7.22.5 "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.22.5 - babel-plugin-polyfill-corejs2: ^0.4.4 - babel-plugin-polyfill-corejs3: ^0.8.2 - babel-plugin-polyfill-regenerator: ^0.5.1 + "@babel/preset-modules": 0.1.6-no-external-plugins + "@babel/types": ^7.22.10 + babel-plugin-polyfill-corejs2: ^0.4.5 + babel-plugin-polyfill-corejs3: ^0.8.3 + babel-plugin-polyfill-regenerator: ^0.5.2 core-js-compat: ^3.31.0 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6caa2897bbda30c6932aed0a03827deb1337c57108050c9f97dc9a857e1533c7125b168b6d70b9d191965bf05f9f233f0ad20303080505dff7ce39740aaa759d + checksum: 4145a660a7b05e21e6d8b6cdf348c6931238abb15282a258bdb5e04cd3cca9356dc120ecfe0d1b977819ade4aac50163127c86db2300227ff60392d24daa0b7c languageName: node linkType: hard @@ -2578,18 +2556,16 @@ __metadata: languageName: node linkType: hard -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" dependencies: "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 - "@babel/plugin-transform-dotall-regex": ^7.4.4 "@babel/types": ^7.4.4 esutils: ^2.0.2 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 4855e799bc50f2449fb5210f78ea9e8fd46cf4f242243f1e2ed838e2bd702e25e73e822e7f8447722a5f4baa5e67a8f7a0e403f3e7ce04540ff743a9c411c375 languageName: node linkType: hard @@ -2655,12 +2631,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.17.2, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2, @babel/runtime@npm:~7.22.6": - version: 7.22.6 - resolution: "@babel/runtime@npm:7.22.6" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.17.2, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2, @babel/runtime@npm:~7.22.6": + version: 7.22.10 + resolution: "@babel/runtime@npm:7.22.10" dependencies: - regenerator-runtime: ^0.13.11 - checksum: e585338287c4514a713babf4fdb8fc2a67adcebab3e7723a739fc62c79cfda875b314c90fd25f827afb150d781af97bc16c85bfdbfa2889f06053879a1ddb597 + regenerator-runtime: ^0.14.0 + checksum: 524d41517e68953dbc73a4f3616b8475e5813f64e28ba89ff5fca2c044d535c2ea1a3f310df1e5bb06162e1f0b401b5c4af73fe6e2519ca2450d9d8c44cf268d languageName: node linkType: hard @@ -2684,43 +2660,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": - version: 7.22.8 - resolution: "@babel/traverse@npm:7.22.8" +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.22.10, @babel/traverse@npm:^7.22.5": + version: 7.22.10 + resolution: "@babel/traverse@npm:7.22.10" dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.7 + "@babel/code-frame": ^7.22.10 + "@babel/generator": ^7.22.10 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.7 - "@babel/types": ^7.22.5 + "@babel/parser": ^7.22.10 + "@babel/types": ^7.22.10 debug: ^4.1.0 globals: ^11.1.0 - checksum: a381369bc3eedfd13ed5fef7b884657f1c29024ea7388198149f0edc34bd69ce3966e9f40188d15f56490a5e12ba250ccc485f2882b53d41b054fccefb233e33 + checksum: 9f7b358563bfb0f57ac4ed639f50e5c29a36b821a1ce1eea0c7db084f5b925e3275846d0de63bde01ca407c85d9804e0efbe370d92cd2baaafde3bd13b0f4cdb languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.7, @babel/types@npm:^7.2.0, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.22.5 - resolution: "@babel/types@npm:7.22.5" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.7, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.22.10 + resolution: "@babel/types@npm:7.22.10" dependencies: "@babel/helper-string-parser": ^7.22.5 "@babel/helper-validator-identifier": ^7.22.5 to-fast-properties: ^2.0.0 - checksum: c13a9c1dc7d2d1a241a2f8363540cb9af1d66e978e8984b400a20c4f38ba38ca29f06e26a0f2d49a70bad9e57615dac09c35accfddf1bb90d23cd3e0a0bab892 - languageName: node - linkType: hard - -"@babel/types@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/types@npm:7.20.7" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: b39af241f0b72bba67fd6d0d23914f6faec8c0eba8015c181cbd5ea92e59fc91a52a1ab490d3520c7dbd19ddb9ebb76c476308f6388764f16d8201e37fae6811 + checksum: 095c4f4b7503fa816e4094113f0ec2351ef96ff32012010b771693066ff628c7c664b21c6bd3fb93aeb46fe7c61f6b3a3c9e4ed0034d6a2481201c417371c8af languageName: node linkType: hard @@ -3348,6 +3313,15 @@ __metadata: languageName: node linkType: hard +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": + version: 1.0.1 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" + peerDependencies: + react: ">=16.8.0" + checksum: 700b6e5bbb37a9231f203bb3af11295eed01d73b2293abece0bc2a2237015e944d7b5114d4887ad9a79776504aa51ed2a8b0ddbc117c54495dd01a6b22f93786 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/android-arm64@npm:0.17.19" @@ -3568,6 +3542,44 @@ __metadata: languageName: node linkType: hard +"@floating-ui/core@npm:^1.4.1": + version: 1.4.1 + resolution: "@floating-ui/core@npm:1.4.1" + dependencies: + "@floating-ui/utils": ^0.1.1 + checksum: be4ab864fe17eeba5e205bd554c264b9a4895a57c573661bbf638357fa3108677fed7ba3269ec15b4da90e29274c9b626d5a15414e8d1fe691e210d02a03695c + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.3.0": + version: 1.5.1 + resolution: "@floating-ui/dom@npm:1.5.1" + dependencies: + "@floating-ui/core": ^1.4.1 + "@floating-ui/utils": ^0.1.1 + checksum: ddb509030978536ba7b321cf8c764ae9d0142a3b1fefb7e6bc050a5de7e825e12131fa5089009edabf7c125fb274886da211a5220fe17a71d875a7a96eb1386c + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.0.0": + version: 2.0.1 + resolution: "@floating-ui/react-dom@npm:2.0.1" + dependencies: + "@floating-ui/dom": ^1.3.0 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 00fef2cf69ac2b15952e47505fd9e23f6cc5c20a26adc707862932826d1682f3c30f83c9887abfc93574fdca2d34dd2fc00271527318b1db403549cd6bc9eb00 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.1.1": + version: 0.1.1 + resolution: "@floating-ui/utils@npm:0.1.1" + checksum: 548acdda7902f45b0afbe34e2e7f4cbff0696b95bad8c039f80936519de24ef2ec20e79902825b7815294b37f51a7c52ee86288b0688869a57cc229a164d86b4 + languageName: node + linkType: hard + "@formatjs/ecma402-abstract@npm:1.12.0": version: 1.12.0 resolution: "@formatjs/ecma402-abstract@npm:1.12.0" @@ -4162,7 +4174,7 @@ __metadata: languageName: node linkType: hard -"@juggle/resize-observer@npm:^3.4.0": +"@juggle/resize-observer@npm:^3.3.1, @juggle/resize-observer@npm:^3.4.0": version: 3.4.0 resolution: "@juggle/resize-observer@npm:3.4.0" checksum: 2505028c05cc2e17639fcad06218b1c4b60f932a4ebb4b41ab546ef8c157031ae377e3f560903801f6d01706dbefd4943b6c4704bf19ed86dfa1c62f1473a570 @@ -5085,6 +5097,574 @@ __metadata: languageName: node linkType: hard +"@radix-ui/number@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/number@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 621ea8b7d4195d1a65a9c0aee918e8335e7f198088eec91577512c89c2ba3a3bab4a767cfb872a2b9c3092a78ff41cad9a924845a939f6bb87fe9356241ea0ea + languageName: node + linkType: hard + +"@radix-ui/primitive@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/primitive@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: 2b93e161d3fdabe9a64919def7fa3ceaecf2848341e9211520c401181c9eaebb8451c630b066fad2256e5c639c95edc41de0ba59c40eff37e799918d019822d1 + languageName: node + linkType: hard + +"@radix-ui/react-arrow@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-arrow@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 8cca086f0dbb33360e3c0142adf72f99fc96352d7086d6c2356dbb2ea5944cfb720a87d526fc48087741c602cd8162ca02b0af5e6fdf5f56d20fddb44db8b4c3 + languageName: node + linkType: hard + +"@radix-ui/react-collection@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-collection@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-slot": 1.0.2 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: acfbc9b0b2c553d343c22f02c9f098bc5cfa99e6e48df91c0d671855013f8b877ade9c657b7420a7aa523b5aceadea32a60dd72c23b1291f415684fb45d00cff + languageName: node + linkType: hard + +"@radix-ui/react-compose-refs@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-compose-refs@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 2b9a613b6db5bff8865588b6bf4065f73021b3d16c0a90b2d4c23deceeb63612f1f15de188227ebdc5f88222cab031be617a9dd025874c0487b303be3e5cc2a8 + languageName: node + linkType: hard + +"@radix-ui/react-context@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-context@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 60e9b81d364f40c91a6213ec953f7c64fcd9d75721205a494a5815b3e5ae0719193429b62ee6c7002cd6aaf70f8c0e2f08bdbaba9ffcc233044d32b56d2127d1 + languageName: node + linkType: hard + +"@radix-ui/react-direction@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-direction@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 5336a8b0d4f1cde585d5c2b4448af7b3d948bb63a1aadb37c77771b0e5902dc6266e409cf35fd0edaca7f33e26424be19e64fb8f9d7f7be2d6f1714ea2764210 + languageName: node + linkType: hard + +"@radix-ui/react-dismissable-layer@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-dismissable-layer@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-escape-keydown": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: ea86004ed56a10609dd84eef39dc1e57b400d687a35be41bb4aaa06dc7ad6dbd0a8da281e08c8c077fdbd523122e4d860cb7438a60c664f024f77c8b41299ec6 + languageName: node + linkType: hard + +"@radix-ui/react-focus-guards@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-focus-guards@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 1f8ca8f83b884b3612788d0742f3f054e327856d90a39841a47897dbed95e114ee512362ae314177de226d05310047cabbf66b686ae86ad1b65b6b295be24ef7 + languageName: node + linkType: hard + +"@radix-ui/react-focus-scope@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-focus-scope@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: e5b1a089071fbe77aca11124a4ad9623fc2bcaf4c019759b0cd044bf0878ecc924131ee09c6a22d38a3f094684ef68ed18fa65c8d891918412e0afc685a464e0 + languageName: node + linkType: hard + +"@radix-ui/react-id@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-id@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-layout-effect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 446a453d799cc790dd2a1583ff8328da88271bff64530b5a17c102fa7fb35eece3cf8985359d416f65e330cd81aa7b8fe984ea125fc4f4eaf4b3801d698e49fe + languageName: node + linkType: hard + +"@radix-ui/react-popper@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-popper@npm:1.1.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@floating-ui/react-dom": ^2.0.0 + "@radix-ui/react-arrow": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-layout-effect": 1.0.1 + "@radix-ui/react-use-rect": 1.0.1 + "@radix-ui/react-use-size": 1.0.1 + "@radix-ui/rect": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 4929daa0d1cccada3cff50de0e00c0d186ffea97a5f28545c77fa85ff9bc5c105a54dddac400c2e2dcac631f0f7ea88e59f2e5ad0f80bb2cb7b62cc7cd30400f + languageName: node + linkType: hard + +"@radix-ui/react-portal@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-portal@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: d352bcd6ad65eb43c9e0d72d0755c2aae85e03fb287770866262be3a2d5302b2885aee3cd99f2bbf62ecd14fcb1460703f1dcdc40351f77ad887b931c6f0012a + languageName: node + linkType: hard + +"@radix-ui/react-primitive@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-primitive@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-slot": 1.0.2 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 9402bc22923c8e5c479051974a721c301535c36521c0237b83e5fa213d013174e77f3ad7905e6d60ef07e14f88ec7f4ea69891dc7a2b39047f8d3640e8f8d713 + languageName: node + linkType: hard + +"@radix-ui/react-roving-focus@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-roving-focus@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-collection": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-id": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-controllable-state": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 69b1c82c2d9db3ba71549a848f2704200dab1b2cd22d050c1e081a78b9a567dbfdc7fd0403ee010c19b79652de69924d8ca2076cd031d6552901e4213493ffc7 + languageName: node + linkType: hard + +"@radix-ui/react-select@npm:^1.2.2": + version: 1.2.2 + resolution: "@radix-ui/react-select@npm:1.2.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/number": 1.0.1 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-collection": 1.0.3 + "@radix-ui/react-compose-refs": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-dismissable-layer": 1.0.4 + "@radix-ui/react-focus-guards": 1.0.1 + "@radix-ui/react-focus-scope": 1.0.3 + "@radix-ui/react-id": 1.0.1 + "@radix-ui/react-popper": 1.1.2 + "@radix-ui/react-portal": 1.0.3 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-slot": 1.0.2 + "@radix-ui/react-use-callback-ref": 1.0.1 + "@radix-ui/react-use-controllable-state": 1.0.1 + "@radix-ui/react-use-layout-effect": 1.0.1 + "@radix-ui/react-use-previous": 1.0.1 + "@radix-ui/react-visually-hidden": 1.0.3 + aria-hidden: ^1.1.1 + react-remove-scroll: 2.5.5 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: af7b63cc9e2c6006ec08163392d244941e9e03534e7add1b7c5a86059d0eb8a0398d4f3e80d43ff22126874a02b985e44f1722d1de9218922f7aa653d09412e3 + languageName: node + linkType: hard + +"@radix-ui/react-separator@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-separator@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 42f8c95e404de2ce9387040d78049808a48d423cd4c3bad8cca92c4b0bcbdcb3566b5b52a920d4e939a74b51188697f20a012221f0e630fc7f56de64096c15d2 + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.0.2": + version: 1.0.2 + resolution: "@radix-ui/react-slot@npm:1.0.2" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-compose-refs": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: edf5edf435ff594bea7e198bf16d46caf81b6fb559493acad4fa8c308218896136acb16f9b7238c788fd13e94a904f2fd0b6d834e530e4cae94522cdb8f77ce9 + languageName: node + linkType: hard + +"@radix-ui/react-toggle-group@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-toggle-group@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-roving-focus": 1.0.4 + "@radix-ui/react-toggle": 1.0.3 + "@radix-ui/react-use-controllable-state": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: b6c11fbbc3ca857ff68c0fa31f293c0d0111bcc8aa0cde2566214c090907530bfcb3b862f81585c2b02d8989b5c7971acff4d5c07c429870d80bd5602e30d376 + languageName: node + linkType: hard + +"@radix-ui/react-toggle@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-toggle@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-use-controllable-state": 1.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: ed5407f48254f20cda542017774f259d0b2c0007ea4bd7287d10d751016dbf269cb13d1142591432c269c3ab768cde2f1ba0344743027d36bbec10af909f19de + languageName: node + linkType: hard + +"@radix-ui/react-toolbar@npm:^1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-toolbar@npm:1.0.4" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-context": 1.0.1 + "@radix-ui/react-direction": 1.0.1 + "@radix-ui/react-primitive": 1.0.3 + "@radix-ui/react-roving-focus": 1.0.4 + "@radix-ui/react-separator": 1.0.3 + "@radix-ui/react-toggle-group": 1.0.4 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 7ebee1f8add6510108979433c5b38627e2de9d48ef2172ca15274b9edbbc106ff43bcd47ff733b03ed2215b92e7af364ff82c79e5a1728374847e2b1e315552c + languageName: node + linkType: hard + +"@radix-ui/react-use-callback-ref@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-callback-ref@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: b9fd39911c3644bbda14a84e4fca080682bef84212b8d8931fcaa2d2814465de242c4cfd8d7afb3020646bead9c5e539d478cea0a7031bee8a8a3bb164f3bc4c + languageName: node + linkType: hard + +"@radix-ui/react-use-controllable-state@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-controllable-state@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: dee2be1937d293c3a492cb6d279fc11495a8f19dc595cdbfe24b434e917302f9ac91db24e8cc5af9a065f3f209c3423115b5442e65a5be9fd1e9091338972be9 + languageName: node + linkType: hard + +"@radix-ui/react-use-escape-keydown@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-callback-ref": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: c6ed0d9ce780f67f924980eb305af1f6cce2a8acbaf043a58abe0aa3cc551d9aa76ccee14531df89bbee302ead7ecc7fce330886f82d4672c5eda52f357ef9b8 + languageName: node + linkType: hard + +"@radix-ui/react-use-layout-effect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-layout-effect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: bed9c7e8de243a5ec3b93bb6a5860950b0dba359b6680c84d57c7a655e123dec9b5891c5dfe81ab970652e7779fe2ad102a23177c7896dde95f7340817d47ae5 + languageName: node + linkType: hard + +"@radix-ui/react-use-previous@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-previous@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 66b4312e857c58b75f3bf62a2048ef090b79a159e9da06c19a468c93e62336969c33dbef60ff16969f00b20386cc25d138f6a353f1658b35baac0a6eff4761b9 + languageName: node + linkType: hard + +"@radix-ui/react-use-rect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-rect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/rect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 433f07e61e04eb222349825bb05f3591fca131313a1d03709565d6226d8660bd1d0423635553f95ee4fcc25c8f2050972d848808d753c388e2a9ae191ebf17f3 + languageName: node + linkType: hard + +"@radix-ui/react-use-size@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-size@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-use-layout-effect": 1.0.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6cc150ad1e9fa85019c225c5a5d50a0af6cdc4653dad0c21b4b40cd2121f36ee076db326c43e6bc91a69766ccff5a84e917d27970176b592577deea3c85a3e26 + languageName: node + linkType: hard + +"@radix-ui/react-visually-hidden@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-visually-hidden@npm:1.0.3" + dependencies: + "@babel/runtime": ^7.13.10 + "@radix-ui/react-primitive": 1.0.3 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 2e9d0c8253f97e7d6ffb2e52a5cfd40ba719f813b39c3e2e42c496d54408abd09ef66b5aec4af9b8ab0553215e32452a5d0934597a49c51dd90dc39181ed0d57 + languageName: node + linkType: hard + +"@radix-ui/rect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/rect@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.13.10 + checksum: aeec13b234a946052512d05239067d2d63422f9ec70bf2fe7acfd6b9196693fc33fbaf43c2667c167f777d90a095c6604eb487e0bce79e230b6df0f6cacd6a55 + languageName: node + linkType: hard + "@react-aria/breadcrumbs@npm:^3.5.0": version: 3.5.1 resolution: "@react-aria/breadcrumbs@npm:3.5.1" @@ -7324,60 +7904,38 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/css-in-js@npm:^0.31.24, @rocket.chat/css-in-js@npm:~0.31.23-dev.180": - version: 0.31.24 - resolution: "@rocket.chat/css-in-js@npm:0.31.24" - dependencies: - "@emotion/hash": ^0.9.0 - "@rocket.chat/css-supports": ^0.31.24 - "@rocket.chat/memo": ^0.31.24 - "@rocket.chat/stylis-logical-props-middleware": ^0.31.24 - stylis: ~4.1.3 - checksum: aa343748e7eebdbcd95d6593fd9e039479fe7fe5fd579f81910ccf6130018a8d20a96556c19b16b356a6ce07e90b544520a839699a682fdbd943400b24ba6269 - languageName: node - linkType: hard - "@rocket.chat/css-in-js@npm:next": - version: 0.31.23-dev.180 - resolution: "@rocket.chat/css-in-js@npm:0.31.23-dev.180" + version: 0.31.26-dev.2 + resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.2" dependencies: "@emotion/hash": ^0.9.0 - "@rocket.chat/css-supports": ~0.31.23-dev.180 - "@rocket.chat/memo": ~0.31.23-dev.180 - "@rocket.chat/stylis-logical-props-middleware": ~0.31.23-dev.180 + "@rocket.chat/css-supports": ~0.31.26-dev.7 + "@rocket.chat/memo": ~0.31.26-dev.7 + "@rocket.chat/stylis-logical-props-middleware": ~0.31.26-dev.7 stylis: ~4.1.3 - checksum: e89833effb8d1a8a8e5cc3621540530e53c7aa98833f309b0df73f497afad25903252afc77da52186df975779b5a05dcfb18eee275fea81b473caf78c66d2005 + checksum: f4b1260109583ce9e47f1e7021138dae967fb5fdbd16ce1b506be5423ea39f8349f8a4a5a5aff46d3b74805370e0f9da0a6c14a3b97b954b96722938295712cb languageName: node linkType: hard -"@rocket.chat/css-in-js@npm:~0.31.26-dev.16": - version: 0.31.26-dev.16 - resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.16" +"@rocket.chat/css-in-js@npm:~0.31.26-dev.7": + version: 0.31.26-dev.7 + resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.7" dependencies: "@emotion/hash": ^0.9.0 - "@rocket.chat/css-supports": ~0.31.26-dev.16 - "@rocket.chat/memo": ~0.31.26-dev.16 - "@rocket.chat/stylis-logical-props-middleware": ~0.31.26-dev.16 + "@rocket.chat/css-supports": ~0.31.26-dev.7 + "@rocket.chat/memo": ~0.31.26-dev.7 + "@rocket.chat/stylis-logical-props-middleware": ~0.31.26-dev.7 stylis: ~4.1.3 - checksum: 232d4e31d6439cc215982f5512921b6bfc607866fa0df07aa98a1f25e6b538e9604adb6ffbc3914dc820d7b6ee455643560199da544c2d7882818cdff8b00504 - languageName: node - linkType: hard - -"@rocket.chat/css-supports@npm:^0.31.24, @rocket.chat/css-supports@npm:~0.31.23-dev.180": - version: 0.31.24 - resolution: "@rocket.chat/css-supports@npm:0.31.24" - dependencies: - "@rocket.chat/memo": ^0.31.24 - checksum: 4efe737d588566ea7a95f1f29a33dc90987aae9e6c2f0b2b7995f9c813728dd72f62472f2a2f3e1bf0350ce3ad75807ec0c842ac6e61b6ddc8f89c69dc1086d0 + checksum: ca0e2d2a1df144360e06408f6f7e2c7480d72b915402e9b7c6d29abdc030cd0b9100940f4f7803e9463f61ac1a1466882c999d1524146221916b5bf04b0b1a00 languageName: node linkType: hard -"@rocket.chat/css-supports@npm:~0.31.26-dev.16": - version: 0.31.26-dev.16 - resolution: "@rocket.chat/css-supports@npm:0.31.26-dev.16" +"@rocket.chat/css-supports@npm:~0.31.26-dev.7": + version: 0.31.26-dev.7 + resolution: "@rocket.chat/css-supports@npm:0.31.26-dev.7" dependencies: - "@rocket.chat/memo": ~0.31.26-dev.16 - checksum: f7239f70ddef249e23825c1ac5143825cab012170aa67f44a232cf6b4b33d1cc3a365bfc3be4c29150fb494107155867881722ff1ebd610067f281d9b43207d1 + "@rocket.chat/memo": ~0.31.26-dev.7 + checksum: c359422b4a7ce5047a703887a5693b6514d289028bbf36bd62049b184e6e34999ea373842d9bc8314705668bfbad7aeb0ce42bdea346d9073dd9e8a571509634 languageName: node linkType: hard @@ -7451,9 +8009,9 @@ __metadata: linkType: soft "@rocket.chat/emitter@npm:next": - version: 0.31.23-dev.180 - resolution: "@rocket.chat/emitter@npm:0.31.23-dev.180" - checksum: 4a63bed9aa5260db85cc01b0131dd7fd6e8dfef956d64298c1fee805bca5a74b971dbcaff408efb497437daf672fb13b3d3caab6fef03720991c1c56349d96da + version: 0.31.26-dev.2 + resolution: "@rocket.chat/emitter@npm:0.31.26-dev.2" + checksum: db6f527026419d84e926526c3a67f81db320d3b774930226b9fe82c436692a793ce6a2c380b57e2ea1cc11e1c9cfb48f3eaa34fda91cecc9fb9ce7add53259d0 languageName: node linkType: hard @@ -7546,21 +8104,21 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/fuselage-hooks@npm:next, @rocket.chat/fuselage-hooks@npm:~0.32.0-dev.319": - version: 0.32.0-dev.319 - resolution: "@rocket.chat/fuselage-hooks@npm:0.32.0-dev.319" +"@rocket.chat/fuselage-hooks@npm:next, @rocket.chat/fuselage-hooks@npm:~0.32.0-dev.325": + version: 0.32.0-dev.325 + resolution: "@rocket.chat/fuselage-hooks@npm:0.32.0-dev.325" dependencies: use-sync-external-store: ~1.2.0 peerDependencies: "@rocket.chat/fuselage-tokens": "*" react: ^17.0.2 - checksum: 20b28d5297a252e35e7f63c9b18825fc1d3538ad7482389cf625a8fc1d6db9e8beb12abc0260e304295bd80af9a4da466c6e08e55c1fb0756a8eaeb07a41a22e + checksum: b34f4d337db932f754999034ebb6bb00327b7afe33f30c67330dfe432fda003d62b2264b965d2d12ecc55d9e66eb5e7ce59f6b7d7d7e5f19532f50cdadec4a46 languageName: node linkType: hard "@rocket.chat/fuselage-polyfills@npm:next": - version: 0.31.23-dev.180 - resolution: "@rocket.chat/fuselage-polyfills@npm:0.31.23-dev.180" + version: 0.31.26-dev.2 + resolution: "@rocket.chat/fuselage-polyfills@npm:0.31.26-dev.2" dependencies: "@juggle/resize-observer": ^3.4.0 clipboard-polyfill: ^3.0.3 @@ -7568,13 +8126,13 @@ __metadata: focus-visible: ^5.2.0 focus-within-polyfill: ^5.2.1 new-event-polyfill: ^1.0.1 - checksum: 4eccf1cc0e1137cfe44ef39bfacd384ece58c7225d8b1d0a9acbd1f422b7d67ef117340c1fe6768142e4f8e8caba38953ba339e583fcfe6259c6560fa470ca39 + checksum: ffa346ef683bd5add3ede98d156dbf951dedfb80f35e2ce54fd2d78db6a75822f22d5f64ab469e07ca340b57783cbfa2e969a615522f1f4f11384466554e3abc languageName: node linkType: hard "@rocket.chat/fuselage-toastbar@npm:next": - version: 0.32.0-dev.380 - resolution: "@rocket.chat/fuselage-toastbar@npm:0.32.0-dev.380" + version: 0.32.0-dev.386 + resolution: "@rocket.chat/fuselage-toastbar@npm:0.32.0-dev.386" peerDependencies: "@rocket.chat/fuselage": "*" "@rocket.chat/fuselage-hooks": "*" @@ -7582,21 +8140,21 @@ __metadata: "@rocket.chat/styled": "*" react: ^17.0.2 react-dom: ^17.0.2 - checksum: 8c69007addc3831e52be3ba8e79613f16f174eca052e692a28ae89fd0ab1ca318c66c98bc60c53b39b6a12a2f805caed41f6930317f0f8990612e57e12a82fe2 + checksum: d609f2b818e39a630021239ebaa385525cfe2e3c3984cadc30aec7785f0cf43671eccda13f0deba1dd56f6cb9614f01ac0a212a99bfa19b986bfb4624bbc559e languageName: node linkType: hard "@rocket.chat/fuselage-tokens@npm:next": - version: 0.32.0-dev.356 - resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.356" - checksum: 7b5786b06c458cc93cdd229e899459f25eb428a545c79eb8c98d28163b20ffa603e43b48bb3640c8b581d53ca259c7fe177007e1b232c6e950eea496706590df + version: 0.32.0-dev.362 + resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.362" + checksum: 6e5964c967fd5e265f75bf8d604d00b0d1de0f798993015b9fada4d7b8a581f7f1260e6d1fcace3244cb62b682cd55a1b8bb023981a5ba4d8d20563331aac3bf languageName: node linkType: hard -"@rocket.chat/fuselage-tokens@npm:~0.32.0-dev.376": - version: 0.32.0-dev.376 - resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.376" - checksum: 8054593aa24eb77c0ec71e93ec07bf91b65c0d9d6f413641bce2f451a12416432c43271ceebb3a8439d5ed7148795d632716231907a93a35715d736fed4d834a +"@rocket.chat/fuselage-tokens@npm:~0.32.0-dev.367": + version: 0.32.0-dev.367 + resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.367" + checksum: ae3781d7220a45ba813f78ba7d08dec9e333204808f6c93d41d7197e44f031496706dec78249001021ff1af300169e5440924b3dba419fae45bccbbc683fec02 languageName: node linkType: hard @@ -7656,14 +8214,14 @@ __metadata: linkType: soft "@rocket.chat/fuselage@npm:next": - version: 0.32.0-dev.426 - resolution: "@rocket.chat/fuselage@npm:0.32.0-dev.426" - dependencies: - "@rocket.chat/css-in-js": ~0.31.26-dev.16 - "@rocket.chat/css-supports": ~0.31.26-dev.16 - "@rocket.chat/fuselage-tokens": ~0.32.0-dev.376 - "@rocket.chat/memo": ~0.31.26-dev.16 - "@rocket.chat/styled": ~0.31.26-dev.16 + version: 0.32.0-dev.417 + resolution: "@rocket.chat/fuselage@npm:0.32.0-dev.417" + dependencies: + "@rocket.chat/css-in-js": ~0.31.26-dev.7 + "@rocket.chat/css-supports": ~0.31.26-dev.7 + "@rocket.chat/fuselage-tokens": ~0.32.0-dev.367 + "@rocket.chat/memo": ~0.31.26-dev.7 + "@rocket.chat/styled": ~0.31.26-dev.7 invariant: ^2.2.4 react-aria: ~3.23.1 react-keyed-flatten-children: ^1.3.0 @@ -7675,7 +8233,7 @@ __metadata: react: ^17.0.2 react-dom: ^17.0.2 react-virtuoso: 1.2.4 - checksum: 477a54211e5cb4676fdd5783f96a9a91622c8c99a3cb74a8f574d2d4a604a0f8c3fb415ea51ecfbabba17063fbfff077228cfbdacfed6449208ecd5f5312488a + checksum: 5b94df847d0714bf96ac09277d62178345a4ccee2f50e87985bebd9ed366da7950643315870a2c1f92732f0f06728219ebbd4d9ce0fe24434e3bf84da8e7f0f3 languageName: node linkType: hard @@ -7743,16 +8301,12 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/i18n@workspace:^, @rocket.chat/i18n@workspace:packages/i18n": +"@rocket.chat/i18n@workspace:^, @rocket.chat/i18n@workspace:packages/i18n, @rocket.chat/i18n@workspace:~": version: 0.0.0-use.local resolution: "@rocket.chat/i18n@workspace:packages/i18n" dependencies: - "@babel/core": ~7.22.9 - "@babel/preset-env": ~7.22.9 - "@babel/preset-typescript": ~7.22.5 - "@types/babel__core": ~7.20.1 - "@types/babel__preset-env": ~7.9.2 - "@types/jest": ~29.5.3 + "@babel/core": ~7.22.10 + "@babel/preset-env": ~7.22.10 babel-jest: ^29.5.0 eslint: ~8.45.0 jest: ~29.6.1 @@ -7763,9 +8317,9 @@ __metadata: linkType: soft "@rocket.chat/icons@npm:next": - version: 0.32.0-dev.388 - resolution: "@rocket.chat/icons@npm:0.32.0-dev.388" - checksum: 5b82b1f2c9b29b163c92fd5e9391e1c501e2a687aa0b4dc751b573430d2702454497bdc539d60b32c9b8f4403dc2168c78b5ffb5cbb9c18a216f16157e03d68c + version: 0.32.0-dev.394 + resolution: "@rocket.chat/icons@npm:0.32.0-dev.394" + checksum: 12bd6cda25f2dd45b41afd471578dc6f45f62b383bae38623eee0c457d51fd57eab5330ba67e525fc3204e7fd20cabf22ef5fb49c1483a7b5f51b8e00e91cdf3 languageName: node linkType: hard @@ -7783,14 +8337,14 @@ __metadata: linkType: soft "@rocket.chat/layout@npm:next": - version: 0.32.0-dev.289 - resolution: "@rocket.chat/layout@npm:0.32.0-dev.289" + version: 0.32.0-dev.295 + resolution: "@rocket.chat/layout@npm:0.32.0-dev.295" peerDependencies: "@rocket.chat/fuselage": "*" react: 17.0.2 react-dom: 17.0.2 react-i18next: ~11.15.4 - checksum: 369dc1b5052c367f249a0cd142e77329d4a2ebcb26598d8e5fc43f53896f71d6bc2ff9c36c6caa431f5319e3c32304626364832dc853a819202745e77a5e8257 + checksum: 5c6bb793fe92b2b47ebe6ba3e2d5529c38a45b9bc2c4485eb2bf04ab7d88454592d90d7bfb8c55eb18ee442f2d6d1de0d45667824c96eb4a1102f02b5cdd4bc2 languageName: node linkType: hard @@ -7842,7 +8396,7 @@ __metadata: history: ~5.3.0 html-webpack-plugin: ^4.4.1 husky: ^4.3.8 - i18next: ^21.8.10 + i18next: ~23.4.5 if-env: ^1.0.4 image-webpack-loader: ~8.1.0 lorem-ipsum: ^2.0.8 @@ -7863,8 +8417,8 @@ __metadata: preact-router: ^3.2.1 query-string: ^7.1.3 react-dom: ~17.0.2 - react-hook-form: ^7.45.0 - react-i18next: ^11.16.9 + react-hook-form: ~7.45.4 + react-i18next: ~13.2.1 rimraf: ^3.0.2 sass: ~1.62.1 sass-loader: ~10.4.1 @@ -7918,45 +8472,38 @@ __metadata: linkType: soft "@rocket.chat/logo@npm:next": - version: 0.32.0-dev.356 - resolution: "@rocket.chat/logo@npm:0.32.0-dev.356" + version: 0.32.0-dev.362 + resolution: "@rocket.chat/logo@npm:0.32.0-dev.362" dependencies: - "@rocket.chat/fuselage-hooks": ~0.32.0-dev.319 - "@rocket.chat/styled": ~0.31.23-dev.180 + "@rocket.chat/fuselage-hooks": ~0.32.0-dev.325 + "@rocket.chat/styled": ~0.31.26-dev.2 peerDependencies: react: 17.0.2 react-dom: 17.0.2 - checksum: 5d40f3e346e51dcfad348add801b03d64fd3dccad7bbf7ea07995f8b366a09d825e40e902c9525d845fb3604937507f00974ef0c3742a56faaf8f5a7aac1f684 - languageName: node - linkType: hard - -"@rocket.chat/memo@npm:^0.31.24, @rocket.chat/memo@npm:~0.31.23-dev.180": - version: 0.31.24 - resolution: "@rocket.chat/memo@npm:0.31.24" - checksum: f63baeac39f50f67ced26c0770334b7e6fa35c81e227b813b7e49015bcd7f102aafff3b6a1fef3e2720ee483e729882dd5734ea339dcfdc30e6f193681a02487 + checksum: baa199af19493bc13e3e547702ec411f29db23a631ed409319266231b27a76ef81f0b57d89c4a8dcbb2ccd51a40e906c41a06640bf6ebbbe3a7292fb16eb7049 languageName: node linkType: hard "@rocket.chat/memo@npm:next": - version: 0.31.23-dev.180 - resolution: "@rocket.chat/memo@npm:0.31.23-dev.180" - checksum: 5a96849f893833081b3ce4c1c5035b8a9717dc219eb1da072014cb82778654a6eaa0a595f627fdf16882adf0caaab77e881b04329369ca9e7c59970d5e572ec5 + version: 0.31.26-dev.2 + resolution: "@rocket.chat/memo@npm:0.31.26-dev.2" + checksum: 3a8cc7414bb893d225a72968dc4717eec4cf81d8911c00717884ceef8d541146a19ffedb6cf38e9481ab3956c8e6cf8d20820e7bbcc96ad0c7bbcbaf779fc2d9 languageName: node linkType: hard -"@rocket.chat/memo@npm:~0.31.26-dev.16": - version: 0.31.26-dev.16 - resolution: "@rocket.chat/memo@npm:0.31.26-dev.16" - checksum: e50a53c5574e5f133ced89b8d7d85e839c565e6e2ee1e0e4ee6d07d1af51de67f5e02fe10cf8e652a91f10b0e4e06705dd5734aebfde10b7986bcde618779ea5 +"@rocket.chat/memo@npm:~0.31.26-dev.7": + version: 0.31.26-dev.7 + resolution: "@rocket.chat/memo@npm:0.31.26-dev.7" + checksum: 7a73682525be39b058d643b8435b4259d6f1e409df8425bda0830dc0ff7d3e02593d3d80a0fdacbb20d9ce74ab9cd5c442f531bc9694d31aca9b3d0a113a39c5 languageName: node linkType: hard "@rocket.chat/message-parser@npm:next": - version: 0.32.0-dev.354 - resolution: "@rocket.chat/message-parser@npm:0.32.0-dev.354" + version: 0.32.0-dev.360 + resolution: "@rocket.chat/message-parser@npm:0.32.0-dev.360" dependencies: tldts: ~5.7.112 - checksum: 90b19e3d475b2b93d7edb9568fce4662373d15c6b4741a863a8aab901602a42eaa5533e0a1bb2da6880bde0c5853813837a9134c25bf3c2ba278582fea52cdc2 + checksum: 96255da8711890b393ac58520400394a18c48de5760a6b9fb782c17ce7560bd2aa3eaf101077aa5b66052da8134130e08d4a03268ecb499b9cbbece60691e69d languageName: node linkType: hard @@ -8211,7 +8758,7 @@ __metadata: hljs9: "npm:highlight.js@^9.18.5" http-proxy-agent: ^5.0.0 human-interval: ^2.0.1 - i18next: ^20.6.1 + i18next: ~23.4.5 i18next-http-backend: ^1.4.5 i18next-sprintf-postprocessor: ^0.2.2 iconv-lite: ^0.6.3 @@ -8289,8 +8836,8 @@ __metadata: react-docgen-typescript-plugin: ^1.0.5 react-dom: ~17.0.2 react-error-boundary: ^3.1.4 - react-hook-form: ^7.30.0 - react-i18next: ^11.16.7 + react-hook-form: ~7.45.4 + react-i18next: ~13.2.1 react-keyed-flatten-children: ^1.3.0 react-virtuoso: ^1.11.1 redis: ^4.0.6 @@ -8335,16 +8882,20 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/mock-providers@workspace:^, @rocket.chat/mock-providers@workspace:packages/mock-providers": +"@rocket.chat/mock-providers@workspace:^, @rocket.chat/mock-providers@workspace:packages/mock-providers, @rocket.chat/mock-providers@workspace:~": version: 0.0.0-use.local resolution: "@rocket.chat/mock-providers@workspace:packages/mock-providers" dependencies: + "@rocket.chat/i18n": "workspace:~" "@rocket.chat/ui-contexts": "workspace:*" + "@storybook/react": ~6.5.16 "@tanstack/react-query": ^4.16.1 "@types/jest": ~29.5.3 eslint: ~8.45.0 + i18next: ~23.4.5 jest: ~29.6.1 react: ~17.0.2 + react-i18next: ~13.2.1 ts-jest: ~29.0.5 typescript: ~5.2.2 peerDependencies: @@ -8463,8 +9014,8 @@ __metadata: linkType: soft "@rocket.chat/onboarding-ui@npm:next": - version: 0.32.0-dev.406 - resolution: "@rocket.chat/onboarding-ui@npm:0.32.0-dev.406" + version: 0.32.0-dev.412 + resolution: "@rocket.chat/onboarding-ui@npm:0.32.0-dev.412" dependencies: i18next: ~21.6.16 react-hook-form: ~7.27.1 @@ -8479,7 +9030,7 @@ __metadata: react: 17.0.2 react-dom: 17.0.2 react-i18next: ~11.15.4 - checksum: aa573204f13bf501edb9ddbad074837191d8319bb0f916cedcae438098a48605aaa65171e61c27d60e1a9cfad2a452ccb8b0583ca1a33790a65f9d0aa129a66e + checksum: c6e234d7b395c51b9d5efea5aca2a8921004af3a74a863140e414aa0862472559e02fcaab34fae2a463bbd311cf8c4da894c4103e42b009e2a94717ca366b558 languageName: node linkType: hard @@ -8763,58 +9314,38 @@ __metadata: linkType: soft "@rocket.chat/string-helpers@npm:next": - version: 0.31.23-dev.180 - resolution: "@rocket.chat/string-helpers@npm:0.31.23-dev.180" - checksum: 2cd9958e35628e483a76abe3db0e4b490b1cacc0c3d21d1440fa61cf6a1fe76befca493e962a4009988f06faf5131240a322de00b30ec0ccb8ca7efc23223407 + version: 0.31.26-dev.2 + resolution: "@rocket.chat/string-helpers@npm:0.31.26-dev.2" + checksum: a4affc666d14dcb559ba5efee96837a9061e8d935e383f0f97645850765c28f78795a02498ae4d4e76fb26726d051e3058d0a83c320103b9378c39361fd718be languageName: node linkType: hard "@rocket.chat/styled@npm:next": - version: 0.31.23-dev.180 - resolution: "@rocket.chat/styled@npm:0.31.23-dev.180" - dependencies: - "@rocket.chat/css-in-js": ~0.31.23-dev.180 - checksum: 6cc47d1ca1c5dfa5dc9d1a9fba1d04ceb7eb80f78b97f2f35929955e1e4de243ee1cb9d81538e6e58efdc599781c6e95ee492f8dc2b24a59cf084a22f76254eb - languageName: node - linkType: hard - -"@rocket.chat/styled@npm:~0.31.23-dev.180": - version: 0.31.24 - resolution: "@rocket.chat/styled@npm:0.31.24" - dependencies: - "@rocket.chat/css-in-js": ^0.31.24 - checksum: 357f05974d1e33adc9a085ecb16aeba2eeb2d68328cb8e3606e5570fb6979092648164ec3d8dce2d6a34a672afd7163963e5ee155225c7ed9b7872f100232c27 - languageName: node - linkType: hard - -"@rocket.chat/styled@npm:~0.31.26-dev.16": - version: 0.31.26-dev.16 - resolution: "@rocket.chat/styled@npm:0.31.26-dev.16" + version: 0.31.26-dev.2 + resolution: "@rocket.chat/styled@npm:0.31.26-dev.2" dependencies: - "@rocket.chat/css-in-js": ~0.31.26-dev.16 - checksum: 337de6bfc6b1dde0d42e2aa1d9bb089ceaba53119371bc6c5008e8e74a3a84fad2f90d00bdfdcb76360e6530ede75ef2bf1889ee0a9f2eacf1f1b02c337206b1 + "@rocket.chat/css-in-js": ~0.31.26-dev.7 + checksum: 065b92e40b519cafe0f731fd397e6202ad409a9d3947212dc31e8468babf4df59d105d09e867617d51e1914470fd6a4e321c7e00e244d7200497998f200d3cfe languageName: node linkType: hard -"@rocket.chat/stylis-logical-props-middleware@npm:^0.31.24, @rocket.chat/stylis-logical-props-middleware@npm:~0.31.23-dev.180": - version: 0.31.24 - resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.24" +"@rocket.chat/styled@npm:~0.31.26-dev.2, @rocket.chat/styled@npm:~0.31.26-dev.7": + version: 0.31.26-dev.7 + resolution: "@rocket.chat/styled@npm:0.31.26-dev.7" dependencies: - "@rocket.chat/css-supports": ^0.31.24 - peerDependencies: - stylis: 4.0.10 - checksum: 11a6e1395976005e3156b9838ab1ef0d1e8d827bca8804a9befd54c32eccf62415b8940ca99999588f6001c291f560d92e134a0d4e4078fe477389b0f99bb7ff + "@rocket.chat/css-in-js": ~0.31.26-dev.7 + checksum: 750ff71076cc8beb8c8280790303e167dd5d84db79aa6ce1d6a4912891474388d6c88cf35bde4103ec9cd91baa8323c3bd65065b3c800a8f6e29c4c3a18d39ad languageName: node linkType: hard -"@rocket.chat/stylis-logical-props-middleware@npm:~0.31.26-dev.16": - version: 0.31.26-dev.16 - resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.26-dev.16" +"@rocket.chat/stylis-logical-props-middleware@npm:~0.31.26-dev.7": + version: 0.31.26-dev.7 + resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.26-dev.7" dependencies: - "@rocket.chat/css-supports": ~0.31.26-dev.16 + "@rocket.chat/css-supports": ~0.31.26-dev.7 peerDependencies: stylis: 4.0.10 - checksum: 37e47fb2912349edeb8fba9c08614394ce88b9438fff61647f55dbc3d78c8ad88516b49e03e969a096089db0372c23b9c45994d43db7fb76d20bcfbebb73b4b1 + checksum: a60bdeb134db3666887fa858475a07cb6506a4c616e5b30e32e02a5693554e688db4b062b7a8f2fe18eb401fb9047442fce6c35c790f375a0fc73b6fd15b7272 languageName: node linkType: hard @@ -8869,7 +9400,7 @@ __metadata: jest: ~29.6.1 react: ^17.0.2 react-dom: ^17.0.2 - react-hook-form: ^7.30.0 + react-hook-form: ~7.45.4 ts-jest: ~29.0.5 typescript: ~5.2.2 peerDependencies: @@ -8947,11 +9478,11 @@ __metadata: linkType: soft "@rocket.chat/ui-kit@npm:next": - version: 0.32.0-dev.341 - resolution: "@rocket.chat/ui-kit@npm:0.32.0-dev.341" + version: 0.32.0-dev.347 + resolution: "@rocket.chat/ui-kit@npm:0.32.0-dev.347" peerDependencies: "@rocket.chat/icons": "*" - checksum: cdfe3f464472266194aeda6e4f7cf61239ebc46531c00ebcb6b1d9c05ce7ea0206c79d257922b6d8c83a3212457d855fde1f416844c15eb39bebbba814135608 + checksum: 602a4c25b7db388f54ade335f1390c791204bce3837735504816cba0853eb7df48790f8f9c297bb11c600e3e772601ce437d1897425ef03a237112b8f27af9fc languageName: node linkType: hard @@ -9084,15 +9615,33 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/web-ui-registration@workspace:packages/web-ui-registration" dependencies: + "@babel/core": ~7.22.10 + "@babel/preset-env": ~7.22.10 + "@babel/preset-react": ~7.22.5 + "@babel/preset-typescript": ~7.22.5 + "@rocket.chat/i18n": "workspace:~" "@rocket.chat/layout": next + "@rocket.chat/mock-providers": "workspace:~" "@rocket.chat/ui-client": "workspace:^" "@rocket.chat/ui-contexts": "workspace:^" + "@storybook/addon-actions": ~6.5.16 + "@storybook/addon-docs": ~6.5.16 + "@storybook/addon-essentials": ~6.5.16 + "@storybook/builder-webpack4": ~6.5.16 + "@storybook/manager-webpack4": ~6.5.16 + "@storybook/react": ~6.5.16 + "@storybook/testing-library": ^0.2.0 "@tanstack/react-query": ^4.16.1 "@testing-library/react": ^13.3.0 "@types/jest": ~29.5.3 + "@types/react": ~17.0.62 + babel-loader: ~8.3.0 eslint: ~8.45.0 jest: ~29.6.1 - react-hook-form: ^7.34.2 + react: ~17.0.2 + react-hook-form: ~7.45.4 + react-i18next: ~13.2.1 + storybook-dark-mode: ~3.0.1 ts-jest: ~29.0.5 typescript: ~5.2.2 peerDependencies: @@ -9682,6 +10231,20 @@ __metadata: languageName: node linkType: hard +"@storybook/addons@npm:^7.0.0": + version: 7.3.2 + resolution: "@storybook/addons@npm:7.3.2" + dependencies: + "@storybook/manager-api": 7.3.2 + "@storybook/preview-api": 7.3.2 + "@storybook/types": 7.3.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: acde96c9480a25299067229666da596174e4e07827a8ac4aa687b253fc09471eb7123a28cd8e2f3fdb9567596d7ab49482df7ddf5479f435f71b46f1c7a41771 + languageName: node + linkType: hard + "@storybook/api@npm:6.5.16": version: 6.5.16 resolution: "@storybook/api@npm:6.5.16" @@ -9710,6 +10273,24 @@ __metadata: languageName: node linkType: hard +"@storybook/api@npm:^7.0.0": + version: 7.3.2 + resolution: "@storybook/api@npm:7.3.2" + dependencies: + "@storybook/client-logger": 7.3.2 + "@storybook/manager-api": 7.3.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: dfe5f976256fc74c82548ca35f7052b82ca87a21d44e8554c0913ecc8f5d0e0d317a57b0308057473c3b8efa95428590d4350c9c4d1ef7f7c02ee8c7c2d2e8ee + languageName: node + linkType: hard + "@storybook/builder-webpack4@npm:6.5.16, @storybook/builder-webpack4@npm:~6.5.16": version: 6.5.16 resolution: "@storybook/builder-webpack4@npm:6.5.16" @@ -9862,6 +10443,20 @@ __metadata: languageName: node linkType: hard +"@storybook/channels@npm:7.3.2": + version: 7.3.2 + resolution: "@storybook/channels@npm:7.3.2" + dependencies: + "@storybook/client-logger": 7.3.2 + "@storybook/core-events": 7.3.2 + "@storybook/global": ^5.0.0 + qs: ^6.10.0 + telejson: ^7.0.3 + tiny-invariant: ^1.3.1 + checksum: a32a204d36f1b778f9d23329846c48f3f8a77db4afa40cf6829185a2e21a7bf65150c7fe33309febda4f5fbc78f5ed36f751519ccdcd9f0f92a32fdbba03390e + languageName: node + linkType: hard + "@storybook/client-api@npm:6.5.16": version: 6.5.16 resolution: "@storybook/client-api@npm:6.5.16" @@ -9903,6 +10498,15 @@ __metadata: languageName: node linkType: hard +"@storybook/client-logger@npm:7.3.2": + version: 7.3.2 + resolution: "@storybook/client-logger@npm:7.3.2" + dependencies: + "@storybook/global": ^5.0.0 + checksum: bf52aa9567d3b849976553bafc70da9d55fb2abdbea2e51487e8c8d597d12ba84c0fa952b9225d5c9be489b6bed99eb9250d93682fc66547acf2ff28df17b2e7 + languageName: node + linkType: hard + "@storybook/components@npm:6.5.16": version: 6.5.16 resolution: "@storybook/components@npm:6.5.16" @@ -9922,6 +10526,28 @@ __metadata: languageName: node linkType: hard +"@storybook/components@npm:^7.0.0": + version: 7.3.2 + resolution: "@storybook/components@npm:7.3.2" + dependencies: + "@radix-ui/react-select": ^1.2.2 + "@radix-ui/react-toolbar": ^1.0.4 + "@storybook/client-logger": 7.3.2 + "@storybook/csf": ^0.1.0 + "@storybook/global": ^5.0.0 + "@storybook/icons": ^1.1.6 + "@storybook/theming": 7.3.2 + "@storybook/types": 7.3.2 + memoizerific: ^1.11.3 + use-resize-observer: ^9.1.0 + util-deprecate: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: cbb501ee896a7bde88e8136589bc38ab2af534a4325ac64db64c5424cc2efc32cfc5e9f5756c17c2ee3a10d49f1b5268dbdca179e503f18d9021f4700e8dcb35 + languageName: node + linkType: hard + "@storybook/core-client@npm:6.5.16": version: 6.5.16 resolution: "@storybook/core-client@npm:6.5.16" @@ -10030,6 +10656,13 @@ __metadata: languageName: node linkType: hard +"@storybook/core-events@npm:7.3.2, @storybook/core-events@npm:^7.0.0": + version: 7.3.2 + resolution: "@storybook/core-events@npm:7.3.2" + checksum: 86c809250fc3ad05e3254fc86d163339108569749ffee47496a2717bf1a9052304975007e8c05075415361cda0e0c530cc1f2ae6d4fa682d9573240ebfd1d170 + languageName: node + linkType: hard + "@storybook/core-server@npm:6.5.16": version: 6.5.16 resolution: "@storybook/core-server@npm:6.5.16" @@ -10159,6 +10792,15 @@ __metadata: languageName: node linkType: hard +"@storybook/csf@npm:^0.1.0": + version: 0.1.1 + resolution: "@storybook/csf@npm:0.1.1" + dependencies: + type-fest: ^2.19.0 + checksum: 1fbb827b50f0c15f21026a95d02cc096be4f9f2705ad8fd29f0a99330233606e69f6af7551d844ace2a4b8f08fcc9f81496d4d69160ba8c458698291efb60954 + languageName: node + linkType: hard + "@storybook/docs-tools@npm:6.5.16": version: 6.5.16 resolution: "@storybook/docs-tools@npm:6.5.16" @@ -10174,6 +10816,23 @@ __metadata: languageName: node linkType: hard +"@storybook/global@npm:^5.0.0": + version: 5.0.0 + resolution: "@storybook/global@npm:5.0.0" + checksum: ede0ad35ec411fe31c61150dbd118fef344d1d0e72bf5d3502368e35cf68126f6b7ae4a0ab5e2ffe2f0baa3b4286f03ad069ba3e098e1725449ef08b7e154ba8 + languageName: node + linkType: hard + +"@storybook/icons@npm:^1.1.6": + version: 1.1.6 + resolution: "@storybook/icons@npm:1.1.6" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: b5774c9e61622886e006d1a87252352246af5236668d9fb2fad00c56c0bb2e1ddbdbab3535b4c806672e62d4e280d7be438596bc3888f74349490e138d9f3acf + languageName: node + linkType: hard + "@storybook/instrumenter@npm:6.5.16, @storybook/instrumenter@npm:^6.4.0": version: 6.5.16 resolution: "@storybook/instrumenter@npm:6.5.16" @@ -10187,6 +10846,32 @@ __metadata: languageName: node linkType: hard +"@storybook/manager-api@npm:7.3.2": + version: 7.3.2 + resolution: "@storybook/manager-api@npm:7.3.2" + dependencies: + "@storybook/channels": 7.3.2 + "@storybook/client-logger": 7.3.2 + "@storybook/core-events": 7.3.2 + "@storybook/csf": ^0.1.0 + "@storybook/global": ^5.0.0 + "@storybook/router": 7.3.2 + "@storybook/theming": 7.3.2 + "@storybook/types": 7.3.2 + dequal: ^2.0.2 + lodash: ^4.17.21 + memoizerific: ^1.11.3 + semver: ^7.3.7 + store2: ^2.14.2 + telejson: ^7.0.3 + ts-dedent: ^2.0.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 6b733fe83739288ac74d600d45f5e10f36a359f98b9f0a3574753173e1824f7f7e45407e7e73d476bbf66e40a8246e74bb7cf64eb332a85f8b49f2c9b59d8459 + languageName: node + linkType: hard + "@storybook/manager-webpack4@npm:6.5.16, @storybook/manager-webpack4@npm:~6.5.16": version: 6.5.16 resolution: "@storybook/manager-webpack4@npm:6.5.16" @@ -10354,6 +11039,28 @@ __metadata: languageName: node linkType: hard +"@storybook/preview-api@npm:7.3.2": + version: 7.3.2 + resolution: "@storybook/preview-api@npm:7.3.2" + dependencies: + "@storybook/channels": 7.3.2 + "@storybook/client-logger": 7.3.2 + "@storybook/core-events": 7.3.2 + "@storybook/csf": ^0.1.0 + "@storybook/global": ^5.0.0 + "@storybook/types": 7.3.2 + "@types/qs": ^6.9.5 + dequal: ^2.0.2 + lodash: ^4.17.21 + memoizerific: ^1.11.3 + qs: ^6.10.0 + synchronous-promise: ^2.0.15 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + checksum: 3fbf417685a2eb8e952d24361997c32530a161225f1f7b131c726b7517bd3e57fdfbc117e0b62591674465bb82a66086b0cee0d3acda66f4d2b431f4a4846931 + languageName: node + linkType: hard + "@storybook/preview-web@npm:6.5.16": version: 6.5.16 resolution: "@storybook/preview-web@npm:6.5.16" @@ -10399,6 +11106,24 @@ __metadata: languageName: node linkType: hard +"@storybook/react-docgen-typescript-plugin@patch:@storybook/react-docgen-typescript-plugin@npm%3A1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0#./.yarn/patches/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40.patch::locator=rocket.chat%40workspace%3A.": + version: 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 + resolution: "@storybook/react-docgen-typescript-plugin@patch:@storybook/react-docgen-typescript-plugin@npm%3A1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0#./.yarn/patches/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40.patch::version=1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0&hash=c5d5d9&locator=rocket.chat%40workspace%3A." + dependencies: + debug: ^4.1.1 + endent: ^2.0.1 + find-cache-dir: ^3.3.1 + flat-cache: ^3.0.4 + micromatch: ^4.0.2 + react-docgen-typescript: ^2.1.1 + tslib: ^2.0.0 + peerDependencies: + typescript: ">= 3.x" + webpack: ">= 4" + checksum: 1734e438561dd47b44364815e2bf0da07a5ea57505d748f696892582cde5d4d6f31bb4ae6263ee236b4cb081ba2571d575b11aa5dd9ce13f48021cfc63ce52c1 + languageName: node + linkType: hard + "@storybook/react@npm:~6.5.16": version: 6.5.16 resolution: "@storybook/react@npm:6.5.16" @@ -10480,6 +11205,20 @@ __metadata: languageName: node linkType: hard +"@storybook/router@npm:7.3.2": + version: 7.3.2 + resolution: "@storybook/router@npm:7.3.2" + dependencies: + "@storybook/client-logger": 7.3.2 + memoizerific: ^1.11.3 + qs: ^6.10.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 9a67a2f30f47deec1ff4588ce9d3c16cdab4084bdc6523edc54700c89a44023e0c6e17da5e0524f73109f8697cc5e728400b086342c58f14df8e01dfad58f1a2 + languageName: node + linkType: hard + "@storybook/semver@npm:^7.3.2": version: 7.3.2 resolution: "@storybook/semver@npm:7.3.2" @@ -10572,6 +11311,17 @@ __metadata: languageName: node linkType: hard +"@storybook/testing-library@npm:^0.2.0": + version: 0.2.0 + resolution: "@storybook/testing-library@npm:0.2.0" + dependencies: + "@testing-library/dom": ^9.0.0 + "@testing-library/user-event": ^14.0.0 + ts-dedent: ^2.2.0 + checksum: 1c1c16aea6f961de344f5d43bdfd2847bc5f44df1037c2e1383312bb6b842e2c17a805670fc9cfe1a8425f9e48e240fe5d025ab3d4802a198cfe9eb6ed8e7636 + languageName: node + linkType: hard + "@storybook/theming@npm:6.5.16, @storybook/theming@npm:~6.5.16": version: 6.5.16 resolution: "@storybook/theming@npm:6.5.16" @@ -10587,6 +11337,33 @@ __metadata: languageName: node linkType: hard +"@storybook/theming@npm:7.3.2, @storybook/theming@npm:^7.0.0": + version: 7.3.2 + resolution: "@storybook/theming@npm:7.3.2" + dependencies: + "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 + "@storybook/client-logger": 7.3.2 + "@storybook/global": ^5.0.0 + memoizerific: ^1.11.3 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: aab7d83213ac3df7062fd39e33587311c972bfa3879a32dbc2f4dfa899c7b716ffa6c81496c18032bc8b4f0961cc50de0b0486aacf0e512aaec295cb635d8d4d + languageName: node + linkType: hard + +"@storybook/types@npm:7.3.2": + version: 7.3.2 + resolution: "@storybook/types@npm:7.3.2" + dependencies: + "@storybook/channels": 7.3.2 + "@types/babel__core": ^7.0.0 + "@types/express": ^4.7.0 + file-system-cache: 2.3.0 + checksum: 5986ca2780c6049c08f65cda0dc2b1f063476d0a5ad337a96d641bb91131e7d4a600dcf87b25aedba747f8beb66ac0805562c46e73dc0d20222be4fc4b02309c + languageName: node + linkType: hard + "@storybook/ui@npm:6.5.16": version: 6.5.16 resolution: "@storybook/ui@npm:6.5.16" @@ -10813,6 +11590,22 @@ __metadata: languageName: node linkType: hard +"@testing-library/dom@npm:^9.0.0": + version: 9.3.1 + resolution: "@testing-library/dom@npm:9.3.1" + dependencies: + "@babel/code-frame": ^7.10.4 + "@babel/runtime": ^7.12.5 + "@types/aria-query": ^5.0.1 + aria-query: 5.1.3 + chalk: ^4.1.0 + dom-accessibility-api: ^0.5.9 + lz-string: ^1.5.0 + pretty-format: ^27.0.2 + checksum: 8ee3136451644e39990edea93709c38cf1e8ce5306f3c66273ca00935963faa51ca74e8d92b02eb442ccb842cfa28ca62833e393e075eb269cf9bef6f5600663 + languageName: node + linkType: hard + "@testing-library/jest-dom@npm:^5.16.5, @testing-library/jest-dom@npm:~5.16.5": version: 5.16.5 resolution: "@testing-library/jest-dom@npm:5.16.5" @@ -10891,6 +11684,15 @@ __metadata: languageName: node linkType: hard +"@testing-library/user-event@npm:^14.0.0": + version: 14.4.3 + resolution: "@testing-library/user-event@npm:14.4.3" + peerDependencies: + "@testing-library/dom": ">=7.21.4" + checksum: 852c48ea6db1c9471b18276617c84fec4320771e466cd58339a732ca3fd73ad35e5a43ae14f51af51a8d0a150dcf60fcaab049ef367871207bea8f92c4b8195e + languageName: node + linkType: hard + "@tokenizer/token@npm:^0.3.0": version: 0.3.0 resolution: "@tokenizer/token@npm:0.3.0" @@ -10972,7 +11774,14 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:~7.20.1": +"@types/aria-query@npm:^5.0.1": + version: 5.0.1 + resolution: "@types/aria-query@npm:5.0.1" + checksum: 69fd7cceb6113ed370591aef04b3fd0742e9a1b06dd045c43531448847b85de181495e4566f98e776b37c422a12fd71866e0a1dfd904c5ec3f84d271682901de + languageName: node + linkType: hard + +"@types/babel__core@npm:^7, @types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:~7.20.1": version: 7.20.1 resolution: "@types/babel__core@npm:7.20.1" dependencies: @@ -10994,7 +11803,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__preset-env@npm:^7, @types/babel__preset-env@npm:~7.9.2": +"@types/babel__preset-env@npm:^7": version: 7.9.2 resolution: "@types/babel__preset-env@npm:7.9.2" checksum: a905ed92a3f602384966153e74a94790425e98af54e392a7fcfb5c5ded2f2a58c49a9fa64a0cb506fbffb8169ad25b56ea87983c812a4fb880f0716668c8c085 @@ -11304,7 +12113,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.17, @types/express@npm:^4.17.8": +"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.17, @types/express@npm:^4.17.8, @types/express@npm:^4.7.0": version: 4.17.17 resolution: "@types/express@npm:4.17.17" dependencies: @@ -13756,10 +14565,21 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0": - version: 5.0.0 - resolution: "aria-query@npm:5.0.0" - checksum: c41f98866c5a304561ee8cae55856711cddad6f3f85d8cb43cc5f79667078d9b8979ce32d244c1ff364e6463a4d0b6865804a33ccc717fed701b281cf7dc6296 +"aria-hidden@npm:^1.1.1": + version: 1.2.3 + resolution: "aria-hidden@npm:1.2.3" + dependencies: + tslib: ^2.0.0 + checksum: 7d7d211629eef315e94ed3b064c6823d13617e609d3f9afab1c2ed86399bb8e90405f9bdd358a85506802766f3ecb468af985c67c846045a34b973bcc0289db9 + languageName: node + linkType: hard + +"aria-query@npm:5.1.3, aria-query@npm:^5.0.0": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: ^2.0.5 + checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b languageName: node linkType: hard @@ -13784,6 +14604,16 @@ __metadata: languageName: node linkType: hard +"array-buffer-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "array-buffer-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + is-array-buffer: ^3.0.1 + checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 + languageName: node + linkType: hard + "array-find-index@npm:^1.0.1": version: 1.0.2 resolution: "array-find-index@npm:1.0.2" @@ -14273,7 +15103,7 @@ __metadata: languageName: node linkType: hard -"babel-loader@npm:^8.0.0, babel-loader@npm:^8.3.0": +"babel-loader@npm:^8.0.0, babel-loader@npm:^8.3.0, babel-loader@npm:~8.3.0": version: 8.3.0 resolution: "babel-loader@npm:8.3.0" dependencies: @@ -14381,7 +15211,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.4": +"babel-plugin-polyfill-corejs2@npm:^0.4.5": version: 0.4.5 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.5" dependencies: @@ -14406,7 +15236,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.8.2": +"babel-plugin-polyfill-corejs3@npm:^0.8.3": version: 0.8.3 resolution: "babel-plugin-polyfill-corejs3@npm:0.8.3" dependencies: @@ -14418,7 +15248,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.5.1": +"babel-plugin-polyfill-regenerator@npm:^0.5.2": version: 0.5.2 resolution: "babel-plugin-polyfill-regenerator@npm:0.5.2" dependencies: @@ -15807,7 +16637,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:2.4.2, chalk@npm:^2.0.0, chalk@npm:^2.0.1, chalk@npm:^2.1.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": +"chalk@npm:2.4.2, chalk@npm:^2.0.1, chalk@npm:^2.1.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -17990,6 +18820,32 @@ __metadata: languageName: node linkType: hard +"deep-equal@npm:^2.0.5": + version: 2.2.2 + resolution: "deep-equal@npm:2.2.2" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.2 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.1 + is-arguments: ^1.1.1 + is-array-buffer: ^3.0.2 + is-date-object: ^1.0.5 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + isarray: ^2.0.5 + object-is: ^1.1.5 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.5.0 + side-channel: ^1.0.4 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.1 + which-typed-array: ^1.1.9 + checksum: eb61c35157b6ecb96a5359b507b083fbff8ddb4c86a78a781ee38485f77a667465e45d63ee2ebd8a00e86d94c80e499906900cd82c2debb400237e1662cd5397 + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -18058,13 +18914,13 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" +"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": + version: 1.2.0 + resolution: "define-properties@npm:1.2.0" dependencies: has-property-descriptors: ^1.0.0 object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b + checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 languageName: node linkType: hard @@ -18164,6 +19020,13 @@ __metadata: languageName: node linkType: hard +"dequal@npm:^2.0.2": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 + languageName: node + linkType: hard + "des.js@npm:^1.0.0": version: 1.0.1 resolution: "des.js@npm:1.0.1" @@ -18236,6 +19099,13 @@ __metadata: languageName: node linkType: hard +"detect-node-es@npm:^1.1.0": + version: 1.1.0 + resolution: "detect-node-es@npm:1.1.0" + checksum: e46307d7264644975b71c104b9f028ed1d3d34b83a15b8a22373640ce5ea630e5640b1078b8ea15f202b54641da71e4aa7597093bd4b91f113db520a26a37449 + languageName: node + linkType: hard + "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -19055,7 +19925,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.2, es-abstract@npm:^1.18.5, es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.4": +"es-abstract@npm:^1.17.2, es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.4": version: 1.20.4 resolution: "es-abstract@npm:1.20.4" dependencies: @@ -19094,19 +19964,20 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.0.2": - version: 1.1.2 - resolution: "es-get-iterator@npm:1.1.2" +"es-get-iterator@npm:^1.0.2, es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" dependencies: call-bind: ^1.0.2 - get-intrinsic: ^1.1.0 - has-symbols: ^1.0.1 - is-arguments: ^1.1.0 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + is-arguments: ^1.1.1 is-map: ^2.0.2 is-set: ^2.0.2 - is-string: ^1.0.5 + is-string: ^1.0.7 isarray: ^2.0.5 - checksum: f75e66acb6a45686fa08b3ade9c9421a70d36a0c43ed4363e67f4d7aab2226cb73dd977cb48abbaf75721b946d3cd810682fcf310c7ad0867802fbf929b17dcf + stop-iteration-iterator: ^1.0.0 + checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d languageName: node linkType: hard @@ -20444,6 +21315,16 @@ __metadata: languageName: node linkType: hard +"file-system-cache@npm:2.3.0": + version: 2.3.0 + resolution: "file-system-cache@npm:2.3.0" + dependencies: + fs-extra: 11.1.1 + ramda: 0.29.0 + checksum: 74afa2870a062500643d41e02d1fbd47a3f30100f9e153dec5233d59f05545f4c8ada6085629d624e043479ac28c0cafc31824f7b49a3f997efab8cc5d05bfee + languageName: node + linkType: hard + "file-system-cache@npm:^1.0.5": version: 1.0.5 resolution: "file-system-cache@npm:1.0.5" @@ -20814,6 +21695,15 @@ __metadata: languageName: node linkType: hard +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: ^1.1.3 + checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + languageName: node + linkType: hard + "for-in@npm:^1.0.2": version: 1.0.2 resolution: "for-in@npm:1.0.2" @@ -20821,13 +21711,6 @@ __metadata: languageName: node linkType: hard -"foreach@npm:^2.0.5": - version: 2.0.5 - resolution: "foreach@npm:2.0.5" - checksum: dab4fbfef0b40b69ee5eab81bcb9626b8fa8b3469c8cfa26480f3e5e1ee08c40eae07048c9a967c65aeda26e774511ccc70b3f10a604c01753c6ef24361f0fc8 - languageName: node - linkType: hard - "foreground-child@npm:^2.0.0": version: 2.0.0 resolution: "foreground-child@npm:2.0.0" @@ -21001,6 +21884,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:11.1.1": + version: 11.1.1 + resolution: "fs-extra@npm:11.1.1" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: fb883c68245b2d777fbc1f2082c9efb084eaa2bbf9fddaa366130d196c03608eebef7fb490541276429ee1ca99f317e2d73e96f5ca0999eefedf5a624ae1edfd + languageName: node + linkType: hard + "fs-extra@npm:^0.30.0": version: 0.30.0 resolution: "fs-extra@npm:0.30.0" @@ -21168,10 +22062,10 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": - version: 1.2.2 - resolution: "functions-have-names@npm:1.2.2" - checksum: 25f44b6d1c41ac86ffdf41f25d1de81c0a5b4a3fcf4307a33cdfb23b9d4bd5d0d8bf312eaef5ad368c6500c8a9e19f692b8ce9f96aaab99db9dd936554165558 +"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 languageName: node linkType: hard @@ -21329,14 +22223,22 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.1.3 - resolution: "get-intrinsic@npm:1.1.3" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": + version: 1.2.1 + resolution: "get-intrinsic@npm:1.2.1" dependencies: function-bind: ^1.1.1 has: ^1.0.3 + has-proto: ^1.0.1 has-symbols: ^1.0.3 - checksum: 152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a + checksum: 5b61d88552c24b0cf6fa2d1b3bc5459d7306f699de060d76442cce49a4721f52b8c560a33ab392cf5575b7810277d54ded9d4d39a1ea61855619ebc005aa7e5f + languageName: node + linkType: hard + +"get-nonce@npm:^1.0.0": + version: 1.0.1 + resolution: "get-nonce@npm:1.0.1" + checksum: e2614e43b4694c78277bb61b0f04583d45786881289285c73770b07ded246a98be7e1f78b940c80cbe6f2b07f55f0b724e6db6fd6f1bcbd1e8bdac16521074ed languageName: node linkType: hard @@ -21851,6 +22753,15 @@ __metadata: languageName: node linkType: hard +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: ^1.1.3 + checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + languageName: node + linkType: hard + "got@npm:^6.7.1": version: 6.7.1 resolution: "got@npm:6.7.1" @@ -22083,6 +22994,13 @@ __metadata: languageName: node linkType: hard +"has-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "has-proto@npm:1.0.1" + checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e + languageName: node + linkType: hard + "has-symbol-support-x@npm:^1.4.1": version: 1.4.2 resolution: "has-symbol-support-x@npm:1.4.2" @@ -22904,30 +23822,12 @@ __metadata: languageName: node linkType: hard -"i18next@npm:>=17.0.11": - version: 22.4.15 - resolution: "i18next@npm:22.4.15" - dependencies: - "@babel/runtime": ^7.20.6 - checksum: fced898227983e439c59e7aa6e7b87e53ad1b8a1c85f0613a968881418266e5336e9443831125590559796075d516fe3dbf8118679c894094a0a404be78b02a2 - languageName: node - linkType: hard - -"i18next@npm:^20.6.1": - version: 20.6.1 - resolution: "i18next@npm:20.6.1" +"i18next@npm:>=17.0.11, i18next@npm:~23.4.5": + version: 23.4.5 + resolution: "i18next@npm:23.4.5" dependencies: - "@babel/runtime": ^7.12.0 - checksum: 313cd4b17f9092eaf8ca92a02bb74d099f4a8b26de6e38018f438ce6f706220e5f72d865e1f50d815e13504ec38bc77e0f6341f670ca5162689f8d11a859e564 - languageName: node - linkType: hard - -"i18next@npm:^21.8.10": - version: 21.8.11 - resolution: "i18next@npm:21.8.11" - dependencies: - "@babel/runtime": ^7.17.2 - checksum: 94b9de3811456c2720b96d54febb89fe66cef3146044cdba9cc35543f93bf04843ccffb191ff4dbed614e7d4a64f2e29391dd514e054331738f2411c1936d85f + "@babel/runtime": ^7.22.5 + checksum: b39a1edc19fc6fb34df4fd95581e2b86dd5d8c8345e3409a3366df606a72b62f25ee31a82fb9b0e22161cd856408989c91b74ee737b0cce00d547e6d371a14f5 languageName: node linkType: hard @@ -23385,14 +24285,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" +"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4": + version: 1.0.5 + resolution: "internal-slot@npm:1.0.5" dependencies: - get-intrinsic: ^1.1.0 + get-intrinsic: ^1.2.0 has: ^1.0.3 side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf + checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a languageName: node linkType: hard @@ -23554,7 +24454,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.0": +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -23564,6 +24464,17 @@ __metadata: languageName: node linkType: hard +"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": + version: 3.0.2 + resolution: "is-array-buffer@npm:3.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + is-typed-array: ^1.1.10 + checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 + languageName: node + linkType: hard + "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -23629,7 +24540,7 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac @@ -23719,7 +24630,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -23924,7 +24835,7 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.2": +"is-map@npm:^2.0.1, is-map@npm:^2.0.2": version: 2.0.2 resolution: "is-map@npm:2.0.2" checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 @@ -24147,7 +25058,7 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.2": +"is-set@npm:^2.0.1, is-set@npm:^2.0.2": version: 2.0.2 resolution: "is-set@npm:2.0.2" checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 @@ -24213,16 +25124,12 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.7": - version: 1.1.8 - resolution: "is-typed-array@npm:1.1.8" +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3": + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-abstract: ^1.18.5 - foreach: ^2.0.5 - has-tostringtag: ^1.0.0 - checksum: aa0f9f0716e19e2fb8aef69e69e4205479d25ace778e2339fc910948115cde4b0d9aff9d5d1e8b80f09a5664998278e05e54ad3dc9cb12cefcf86db71084ed00 + which-typed-array: ^1.1.11 + checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc4771796 languageName: node linkType: hard @@ -24261,6 +25168,13 @@ __metadata: languageName: node linkType: hard +"is-weakmap@npm:^2.0.1": + version: 2.0.1 + resolution: "is-weakmap@npm:2.0.1" + checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 + languageName: node + linkType: hard + "is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" @@ -24270,6 +25184,16 @@ __metadata: languageName: node linkType: hard +"is-weakset@npm:^2.0.1": + version: 2.0.2 + resolution: "is-weakset@npm:2.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 + languageName: node + linkType: hard + "is-what@npm:^4.1.8": version: 4.1.8 resolution: "is-what@npm:4.1.8" @@ -24650,7 +25574,7 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.2.1": +"jest-diff@npm:^29.2.1, jest-diff@npm:^29.6.1": version: 29.6.2 resolution: "jest-diff@npm:29.6.2" dependencies: @@ -24662,18 +25586,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-diff@npm:29.6.1" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.4.3 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.1 - checksum: c6350178ca27d92c7fd879790fb2525470c1ff1c5d29b1834a240fecd26c6904fb470ebddb98dc96dd85389c56c3b50e6965a1f5203e9236d213886ed9806219 - languageName: node - linkType: hard - "jest-docblock@npm:^29.4.3": version: 29.4.3 resolution: "jest-docblock@npm:29.4.3" @@ -26430,12 +27342,12 @@ __metadata: languageName: node linkType: hard -"lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" +"lz-string@npm:^1.4.4, lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" bin: lz-string: bin/bin.js - checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 + checksum: 1ee98b4580246fd90dd54da6e346fb1caefcf05f677c686d9af237a157fdea3fd7c83a4bc58f858cd5b10a34d27afe0fdcbd0505a47e0590726a873dc8b8f65d languageName: node linkType: hard @@ -28762,7 +29674,7 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.0.1": +"object-is@npm:^1.0.1, object-is@npm:^1.1.5": version: 1.1.5 resolution: "object-is@npm:1.1.5" dependencies: @@ -31122,18 +32034,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1": - version: 29.6.1 - resolution: "pretty-format@npm:29.6.1" - dependencies: - "@jest/schemas": ^29.6.0 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 6f923a2379a37a425241dc223d76f671c73c4f37dba158050575a54095867d565c068b441843afdf3d7c37bed9df4bbadf46297976e60d4149972b779474203a - languageName: node - linkType: hard - -"pretty-format@npm:^29.2.1, pretty-format@npm:^29.6.2": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.2.1, pretty-format@npm:^29.6.1, pretty-format@npm:^29.6.2": version: 29.6.2 resolution: "pretty-format@npm:29.6.2" dependencies: @@ -31669,6 +32570,13 @@ __metadata: languageName: node linkType: hard +"ramda@npm:0.29.0": + version: 0.29.0 + resolution: "ramda@npm:0.29.0" + checksum: 9ab26c06eb7545cbb7eebcf75526d6ee2fcaae19e338f165b2bf32772121e7b28192d6664d1ba222ff76188ba26ab307342d66e805dbb02c860560adc4d5dd57 + languageName: node + linkType: hard + "ramda@npm:^0.21.0": version: 0.21.0 resolution: "ramda@npm:0.21.0" @@ -32029,24 +32937,6 @@ __metadata: languageName: node linkType: hard -"react-hook-form@npm:^7.30.0, react-hook-form@npm:^7.34.2": - version: 7.34.2 - resolution: "react-hook-form@npm:7.34.2" - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - checksum: 485cde0248e668ad1845b927f9cc05b434c384141bb03bc143a7d7cc937eebf119c935114ccbfa397b463808283dab5b2334022fe5dba975402b201e601d6876 - languageName: node - linkType: hard - -"react-hook-form@npm:^7.45.0": - version: 7.45.0 - resolution: "react-hook-form@npm:7.45.0" - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - checksum: 3e35253f0efb0f77f5036c74f85cbdd425adb2fad20a14fc692d573fe552b3d9b7e7ac22193cd767f265fa292c33383d8721cfbdcc5ae41910a35a1ba3655f66 - languageName: node - linkType: hard - "react-hook-form@npm:~7.27.1": version: 7.27.1 resolution: "react-hook-form@npm:7.27.1" @@ -32056,21 +32946,30 @@ __metadata: languageName: node linkType: hard -"react-i18next@npm:^11.16.7, react-i18next@npm:^11.16.9": - version: 11.18.5 - resolution: "react-i18next@npm:11.18.5" +"react-hook-form@npm:~7.45.4": + version: 7.45.4 + resolution: "react-hook-form@npm:7.45.4" + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + checksum: 1d84c78dadf561bc9e360272c5c856c724426162e13a74929c0517c3eb8004a7f057561fff3bfd4c1121b36d6cf1437399df1dbfd01d0817b9f922503f407d8f + languageName: node + linkType: hard + +"react-i18next@npm:~13.2.1": + version: 13.2.1 + resolution: "react-i18next@npm:13.2.1" dependencies: - "@babel/runtime": ^7.14.5 + "@babel/runtime": ^7.22.5 html-parse-stringify: ^3.0.1 peerDependencies: - i18next: ">= 19.0.0" + i18next: ">= 23.2.3" react: ">= 16.8.0" peerDependenciesMeta: react-dom: optional: true react-native: optional: true - checksum: c5e4b5b8ecc49f799a93110cb4d99d91190a268cf3b14b48e005ac1453eefe75e10758952a7d01fef4cf55afc5a6e7170d23c41d602efaedc06d4d34a85cd725 + checksum: aa3bd7b0f9f3d794e756a7fe087471c20c13dc2fbf5e53400403a356973d87a1b76f0204720081914bd06cb94d92bf987ebbf33c3de3c67a0cc9b32dde8972f1 languageName: node linkType: hard @@ -32168,6 +33067,41 @@ __metadata: languageName: node linkType: hard +"react-remove-scroll-bar@npm:^2.3.3": + version: 2.3.4 + resolution: "react-remove-scroll-bar@npm:2.3.4" + dependencies: + react-style-singleton: ^2.2.1 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: b5ce5f2f98d65c97a3e975823ae4043a4ba2a3b63b5ba284b887e7853f051b5cd6afb74abde6d57b421931c52f2e1fdbb625dc858b1cb5a32c27c14ab85649d4 + languageName: node + linkType: hard + +"react-remove-scroll@npm:2.5.5": + version: 2.5.5 + resolution: "react-remove-scroll@npm:2.5.5" + dependencies: + react-remove-scroll-bar: ^2.3.3 + react-style-singleton: ^2.2.1 + tslib: ^2.1.0 + use-callback-ref: ^1.3.0 + use-sidecar: ^1.1.2 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 2c7fe9cbd766f5e54beb4bec2e2efb2de3583037b23fef8fa511ab426ed7f1ae992382db5acd8ab5bfb030a4b93a06a2ebca41377d6eeaf0e6791bb0a59616a4 + languageName: node + linkType: hard + "react-router-dom@npm:^6.11.2": version: 6.11.2 resolution: "react-router-dom@npm:6.11.2" @@ -32258,6 +33192,23 @@ __metadata: languageName: node linkType: hard +"react-style-singleton@npm:^2.2.1": + version: 2.2.1 + resolution: "react-style-singleton@npm:2.2.1" + dependencies: + get-nonce: ^1.0.0 + invariant: ^2.2.4 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 7ee8ef3aab74c7ae1d70ff34a27643d11ba1a8d62d072c767827d9ff9a520905223e567002e0bf6c772929d8ea1c781a3ba0cc4a563e92b1e3dc2eaa817ecbe8 + languageName: node + linkType: hard + "react-virtuoso@npm:^1.11.1": version: 1.11.1 resolution: "react-virtuoso@npm:1.11.1" @@ -32640,19 +33591,26 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.2, regenerator-runtime@npm:^0.13.7": +"regenerator-runtime@npm:^0.13.2, regenerator-runtime@npm:^0.13.7": version: 0.13.11 resolution: "regenerator-runtime@npm:0.13.11" checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 languageName: node linkType: hard -"regenerator-transform@npm:^0.15.1": - version: 0.15.1 - resolution: "regenerator-transform@npm:0.15.1" +"regenerator-runtime@npm:^0.14.0": + version: 0.14.0 + resolution: "regenerator-runtime@npm:0.14.0" + checksum: 1c977ad82a82a4412e4f639d65d22be376d3ebdd30da2c003eeafdaaacd03fc00c2320f18120007ee700900979284fc78a9f00da7fb593f6e6eeebc673fba9a3 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" dependencies: "@babel/runtime": ^7.8.4 - checksum: 2d15bdeadbbfb1d12c93f5775493d85874dbe1d405bec323da5c61ec6e701bc9eea36167483e1a5e752de9b2df59ab9a2dfff6bf3784f2b28af2279a673d29a4 + checksum: 20b6f9377d65954980fe044cfdd160de98df415b4bff38fbade67b3337efaf078308c4fed943067cd759827cc8cfeca9cb28ccda1f08333b85d6a2acbd022c27 languageName: node linkType: hard @@ -32666,14 +33624,14 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" +"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": + version: 1.5.0 + resolution: "regexp.prototype.flags@npm:1.5.0" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 + define-properties: ^1.2.0 + functions-have-names: ^1.2.3 + checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 languageName: node linkType: hard @@ -34816,10 +35774,43 @@ __metadata: languageName: node linkType: hard -"store2@npm:^2.12.0": - version: 2.13.2 - resolution: "store2@npm:2.13.2" - checksum: 9e760ea2a7f56eae47d5bafe507511b25ad983bba901e1e0c5f65713e631c15aafb8e031c658047af53c2008a5d21cb6c43f2383673b3493144e8e1ead5c8f91 +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: ^1.0.4 + checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 + languageName: node + linkType: hard + +"store2@npm:^2.12.0, store2@npm:^2.14.2": + version: 2.14.2 + resolution: "store2@npm:2.14.2" + checksum: 6f270fc5bab99b63f45fcc7bd8b99c2714b4adf880f557ed7ffb5ed3987131251165bccde425a00928aaf044870aee79ddeef548576d093c68703ed2edec45d7 + languageName: node + linkType: hard + +"storybook-dark-mode@npm:~3.0.1": + version: 3.0.1 + resolution: "storybook-dark-mode@npm:3.0.1" + dependencies: + "@storybook/addons": ^7.0.0 + "@storybook/api": ^7.0.0 + "@storybook/components": ^7.0.0 + "@storybook/core-events": ^7.0.0 + "@storybook/global": ^5.0.0 + "@storybook/theming": ^7.0.0 + fast-deep-equal: ^3.1.3 + memoizerific: ^1.11.3 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: d04213c92e8a4af0035e80eb02b75b8da725ba7b1ecbfe050eb04cb4018d91394f08c8fe7c1b106c971b2047ef5a1ba776e78050ae1f6d7563cdfdba5e701a29 languageName: node linkType: hard @@ -35774,6 +36765,15 @@ __metadata: languageName: node linkType: hard +"telejson@npm:^7.0.3": + version: 7.1.0 + resolution: "telejson@npm:7.1.0" + dependencies: + memoizerific: ^1.11.3 + checksum: 8000e43dc862a87ab1ca342a2635641923d55c2585f85ea8c7c60293681d6f920e8b9570cc12d90ecef286f065c176da5f769f42f4828ba18a626627bed1ac07 + languageName: node + linkType: hard + "temp-dir@npm:^1.0.0": version: 1.0.0 resolution: "temp-dir@npm:1.0.0" @@ -35881,20 +36881,7 @@ __metadata: languageName: node linkType: hard -"terser@npm:^4.1.2, terser@npm:^4.6.3": - version: 4.8.0 - resolution: "terser@npm:4.8.0" - dependencies: - commander: ^2.20.0 - source-map: ~0.6.1 - source-map-support: ~0.5.12 - bin: - terser: bin/terser - checksum: f980789097d4f856c1ef4b9a7ada37beb0bb022fb8aa3057968862b5864ad7c244253b3e269c9eb0ab7d0caf97b9521273f2d1cf1e0e942ff0016e0583859c71 - languageName: node - linkType: hard - -"terser@npm:^4.6.13": +"terser@npm:^4.1.2, terser@npm:^4.6.13, terser@npm:^4.6.3": version: 4.8.1 resolution: "terser@npm:4.8.1" dependencies: @@ -36078,7 +37065,7 @@ __metadata: languageName: node linkType: hard -"tiny-invariant@npm:^1.0.6, tiny-invariant@npm:^1.2.0": +"tiny-invariant@npm:^1.0.6, tiny-invariant@npm:^1.2.0, tiny-invariant@npm:^1.3.1": version: 1.3.1 resolution: "tiny-invariant@npm:1.3.1" checksum: 872dbd1ff20a21303a2fd20ce3a15602cfa7fcf9b228bd694a52e2938224313b5385a1078cb667ed7375d1612194feaca81c4ecbe93121ca1baebe344de4f84c @@ -36514,10 +37501,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.3": - version: 2.5.3 - resolution: "tslib@npm:2.5.3" - checksum: 88902b309afaf83259131c1e13da1dceb0ad1682a213143a1346a649143924d78cf3760c448b84d796938fd76127183894f8d85cbb3bf9c4fddbfcc140c0003c +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.3": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad languageName: node linkType: hard @@ -36843,6 +37830,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^2.19.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 + languageName: node + linkType: hard + "type-is@npm:1.6.18, type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -37449,6 +38443,21 @@ __metadata: languageName: node linkType: hard +"use-callback-ref@npm:^1.3.0": + version: 1.3.0 + resolution: "use-callback-ref@npm:1.3.0" + dependencies: + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 7913df383a5a6fcb399212eedefaac2e0c6f843555202d4e3010bac3848afe38ecaa3d0d6500ad1d936fbeffd637e6c517e68edb024af5e6beca7f27f3ce7b21 + languageName: node + linkType: hard + "use-memo-one@npm:^1.1.1": version: 1.1.3 resolution: "use-memo-one@npm:1.1.3" @@ -37458,6 +38467,34 @@ __metadata: languageName: node linkType: hard +"use-resize-observer@npm:^9.1.0": + version: 9.1.0 + resolution: "use-resize-observer@npm:9.1.0" + dependencies: + "@juggle/resize-observer": ^3.3.1 + peerDependencies: + react: 16.8.0 - 18 + react-dom: 16.8.0 - 18 + checksum: 92be0ac34a3b3cf884cd55847c90792b5b44833dc258e96d650152815ad246afe45825aa223332203004d836535a927ab74f18dc0313229e2c7c69510eddf382 + languageName: node + linkType: hard + +"use-sidecar@npm:^1.1.2": + version: 1.1.2 + resolution: "use-sidecar@npm:1.1.2" + dependencies: + detect-node-es: ^1.1.0 + tslib: ^2.0.0 + peerDependencies: + "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 925d1922f9853e516eaad526b6fed1be38008073067274f0ecc3f56b17bb8ab63480140dd7c271f94150027c996cea4efe83d3e3525e8f3eda22055f6a39220b + languageName: node + linkType: hard + "use-strict@npm:1.0.1": version: 1.0.1 resolution: "use-strict@npm:1.0.1" @@ -38368,44 +39405,7 @@ __metadata: languageName: node linkType: hard -"webpack@npm:>=4.0.0 <6.0.0, webpack@npm:>=4.43.0 <6.0.0, webpack@npm:^5.9.0": - version: 5.88.0 - resolution: "webpack@npm:5.88.0" - dependencies: - "@types/eslint-scope": ^3.7.3 - "@types/estree": ^1.0.0 - "@webassemblyjs/ast": ^1.11.5 - "@webassemblyjs/wasm-edit": ^1.11.5 - "@webassemblyjs/wasm-parser": ^1.11.5 - acorn: ^8.7.1 - acorn-import-assertions: ^1.9.0 - browserslist: ^4.14.5 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.15.0 - es-module-lexer: ^1.2.1 - eslint-scope: 5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.9 - json-parse-even-better-errors: ^2.3.1 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.2.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.3.7 - watchpack: ^2.4.0 - webpack-sources: ^3.2.3 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 9fd1568b34ec2e99ba97c8509a15ab2576ec80c396e7015551ec814b24cfc11de173acba3e114dafe95f1a6d460781b09d6201e6a1fb15110e1d01a09f61a283 - languageName: node - linkType: hard - -"webpack@npm:^5": +"webpack@npm:>=4.0.0 <6.0.0, webpack@npm:>=4.43.0 <6.0.0, webpack@npm:^5, webpack@npm:^5.9.0": version: 5.88.2 resolution: "webpack@npm:5.88.2" dependencies: @@ -38554,6 +39554,18 @@ __metadata: languageName: node linkType: hard +"which-collection@npm:^1.0.1": + version: 1.0.1 + resolution: "which-collection@npm:1.0.1" + dependencies: + is-map: ^2.0.1 + is-set: ^2.0.1 + is-weakmap: ^2.0.1 + is-weakset: ^2.0.1 + checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c + languageName: node + linkType: hard + "which-module@npm:^2.0.0": version: 2.0.0 resolution: "which-module@npm:2.0.0" @@ -38578,17 +39590,16 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.2": - version: 1.1.7 - resolution: "which-typed-array@npm:1.1.7" +"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.11 + resolution: "which-typed-array@npm:1.1.11" dependencies: available-typed-arrays: ^1.0.5 call-bind: ^1.0.2 - es-abstract: ^1.18.5 - foreach: ^2.0.5 + for-each: ^0.3.3 + gopd: ^1.0.1 has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.7 - checksum: 147837cf5866e36b6b2e427731709e02f79f1578477cbde68ed773a5307520a6cb6836c73c79c30690a473266ee59010b83b6d9b25d8d677a40ff77fb37a8a84 + checksum: 711ffc8ef891ca6597b19539075ec3e08bb9b4c2ca1f78887e3c07a977ab91ac1421940505a197758fb5939aa9524976d0a5bbcac34d07ed6faa75cedbb17206 languageName: node linkType: hard @@ -38819,22 +39830,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^7.0.0, ws@npm:^7.4.6": - version: 7.5.7 - resolution: "ws@npm:7.5.7" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 5c1f669a166fb57560b4e07f201375137fa31d9186afde78b1508926345ce546332f109081574ddc4e38cc474c5406b5fc71c18d71eb75f6e2d2245576976cba - languageName: node - linkType: hard - -"ws@npm:^7.3.1": +"ws@npm:^7.0.0, ws@npm:^7.3.1, ws@npm:^7.4.6": version: 7.5.9 resolution: "ws@npm:7.5.9" peerDependencies: From 459c8574ed6deb4bbf152eed1c3cc2bc2f8d74d0 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 1 Sep 2023 11:45:44 -0300 Subject: [PATCH 014/115] fix: Custom OAuth services can't be fully removed (#30212) Co-authored-by: Hugo Costa <20212776+hugocostadev@users.noreply.github.com> --- .changeset/fifty-cars-divide.md | 5 +++++ .../app/lib/server/methods/removeOAuthService.ts | 1 + .../views/admin/settings/groups/OAuthGroupPage.tsx | 12 ++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 .changeset/fifty-cars-divide.md diff --git a/.changeset/fifty-cars-divide.md b/.changeset/fifty-cars-divide.md new file mode 100644 index 000000000000..6c09cf6869c8 --- /dev/null +++ b/.changeset/fifty-cars-divide.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Fixed issue with custom OAuth services' settings not being be fully removed diff --git a/apps/meteor/app/lib/server/methods/removeOAuthService.ts b/apps/meteor/app/lib/server/methods/removeOAuthService.ts index 1be3edeb2caa..6d1bb688979d 100644 --- a/apps/meteor/app/lib/server/methods/removeOAuthService.ts +++ b/apps/meteor/app/lib/server/methods/removeOAuthService.ts @@ -61,6 +61,7 @@ Meteor.methods({ Settings.removeById(`Accounts_OAuth_Custom-${name}-channels_admin`), Settings.removeById(`Accounts_OAuth_Custom-${name}-map_channels`), Settings.removeById(`Accounts_OAuth_Custom-${name}-groups_channel_map`), + Settings.removeById(`Accounts_OAuth_Custom-${name}-merge_users_distinct_services`), ]); }, }); diff --git a/apps/meteor/client/views/admin/settings/groups/OAuthGroupPage.tsx b/apps/meteor/client/views/admin/settings/groups/OAuthGroupPage.tsx index edfae92d0270..0bd65a3ad533 100644 --- a/apps/meteor/client/views/admin/settings/groups/OAuthGroupPage.tsx +++ b/apps/meteor/client/views/admin/settings/groups/OAuthGroupPage.tsx @@ -1,8 +1,9 @@ import type { ISetting } from '@rocket.chat/core-typings'; import { Button } from '@rocket.chat/fuselage'; +import { capitalize } from '@rocket.chat/string-helpers'; import { useToastMessageDispatch, useAbsoluteUrl, useMethod, useTranslation, useSetModal } from '@rocket.chat/ui-contexts'; import type { ReactElement } from 'react'; -import React, { memo } from 'react'; +import React, { memo, useEffect, useState } from 'react'; import { strRight } from '../../../../../lib/utils/stringUtils'; import GenericModal from '../../../../components/GenericModal'; @@ -18,6 +19,8 @@ function OAuthGroupPage({ _id, ...group }: OAuthGroupPageProps): ReactElement { const solo = sections.length === 1; const t = useTranslation(); + const [settingSections, setSettingSections] = useState(sections); + const sectionIsCustomOAuth = (sectionName: string): string | boolean => sectionName && /^Custom OAuth:\s.+/.test(sectionName); const getAbsoluteUrl = useAbsoluteUrl(); @@ -57,6 +60,10 @@ function OAuthGroupPage({ _id, ...group }: OAuthGroupPageProps): ReactElement { setModal( setModal(null)} />); }; + useEffect(() => { + setSettingSections(sections); + }, [sections]); + const removeCustomOauthFactory = (id: string): (() => void) => (): void => { @@ -64,6 +71,7 @@ function OAuthGroupPage({ _id, ...group }: OAuthGroupPageProps): ReactElement { try { await removeOAuthService(id); dispatchToastMessage({ type: 'success', message: t('Custom_OAuth_has_been_removed') }); + setSettingSections(settingSections.filter((section) => section !== `Custom OAuth: ${capitalize(id)}`)); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } finally { @@ -94,7 +102,7 @@ function OAuthGroupPage({ _id, ...group }: OAuthGroupPageProps): ReactElement { } > - {sections.map((sectionName) => { + {settingSections.map((sectionName) => { if (sectionIsCustomOAuth(sectionName)) { const id = strRight(sectionName, 'Custom OAuth: ').toLowerCase(); From 203304782f05216373e07b31df0c9153ad67b4bb Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 1 Sep 2023 12:10:12 -0300 Subject: [PATCH 015/115] fix: new `overrideDestinationChannelEnabled` param in integrations' endpoints is required (#30202) Co-authored-by: Gabriel Casals <83978645+casalsgh@users.noreply.github.com> --- .changeset/chilled-phones-give.md | 7 ++++++ .../incoming/addIncomingIntegration.ts | 3 ++- .../incoming/updateIncomingIntegration.ts | 4 ++- .../api/07-incoming-integrations.js | 25 +++++++++++++++++++ packages/core-typings/src/IIntegration.ts | 2 +- .../integrations/IntegrationsCreateProps.ts | 4 +-- .../integrations/IntegrationsUpdateProps.ts | 12 +++------ 7 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 .changeset/chilled-phones-give.md diff --git a/.changeset/chilled-phones-give.md b/.changeset/chilled-phones-give.md new file mode 100644 index 000000000000..cb0887db0883 --- /dev/null +++ b/.changeset/chilled-phones-give.md @@ -0,0 +1,7 @@ +--- +"@rocket.chat/meteor": patch +"@rocket.chat/core-typings": patch +"@rocket.chat/rest-typings": patch +--- + +Fixed `overrideDestinationChannelEnabled` treated as a required param in `integrations.create` and `integration.update` endpoints diff --git a/apps/meteor/app/integrations/server/methods/incoming/addIncomingIntegration.ts b/apps/meteor/app/integrations/server/methods/incoming/addIncomingIntegration.ts index 307e83f7aef7..bf84957ba8ea 100644 --- a/apps/meteor/app/integrations/server/methods/incoming/addIncomingIntegration.ts +++ b/apps/meteor/app/integrations/server/methods/incoming/addIncomingIntegration.ts @@ -32,7 +32,7 @@ export const addIncomingIntegration = async (userId: string, integration: INewIn alias: Match.Maybe(String), emoji: Match.Maybe(String), scriptEnabled: Boolean, - overrideDestinationChannelEnabled: Boolean, + overrideDestinationChannelEnabled: Match.Maybe(Boolean), script: Match.Maybe(String), avatar: Match.Maybe(String), }), @@ -92,6 +92,7 @@ export const addIncomingIntegration = async (userId: string, integration: INewIn ...integration, type: 'webhook-incoming', channel: channels, + overrideDestinationChannelEnabled: integration.overrideDestinationChannelEnabled ?? false, token: Random.id(48), userId: user._id, _createdAt: new Date(), diff --git a/apps/meteor/app/integrations/server/methods/incoming/updateIncomingIntegration.ts b/apps/meteor/app/integrations/server/methods/incoming/updateIncomingIntegration.ts index 5e5fe67f3977..b865c72e0cca 100644 --- a/apps/meteor/app/integrations/server/methods/incoming/updateIncomingIntegration.ts +++ b/apps/meteor/app/integrations/server/methods/incoming/updateIncomingIntegration.ts @@ -171,7 +171,9 @@ Meteor.methods({ script: integration.script, scriptEnabled: integration.scriptEnabled, }), - overrideDestinationChannelEnabled: integration.overrideDestinationChannelEnabled, + ...(typeof integration.overrideDestinationChannelEnabled !== 'undefined' && { + overrideDestinationChannelEnabled: integration.overrideDestinationChannelEnabled, + }), _updatedAt: new Date(), _updatedBy: await Users.findOne({ _id: this.userId }, { projection: { username: 1 } }), }, diff --git a/apps/meteor/tests/end-to-end/api/07-incoming-integrations.js b/apps/meteor/tests/end-to-end/api/07-incoming-integrations.js index 683cdb2e331b..b6eff60393e5 100644 --- a/apps/meteor/tests/end-to-end/api/07-incoming-integrations.js +++ b/apps/meteor/tests/end-to-end/api/07-incoming-integrations.js @@ -144,6 +144,31 @@ describe('[Incoming Integrations]', function () { }); }); + it('should set overrideDestinationChannelEnabled setting to false when it is not provided', async () => { + let integrationId; + await request + .post(api('integrations.create')) + .set(credentials) + .send({ + type: 'webhook-incoming', + name: 'Incoming test', + enabled: true, + alias: 'test', + username: 'rocket.cat', + scriptEnabled: false, + channel: '#general', + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('integration').and.to.be.an('object'); + expect(res.body.integration).to.have.property('overrideDestinationChannelEnabled', false); + integrationId = res.body.integration._id; + }); + await removeIntegration(integrationId, 'incoming'); + }); + it('should add the integration successfully when the user ONLY has the permission "manage-own-incoming-integrations" to add an incoming integration', (done) => { updatePermission('manage-incoming-integrations', []).then(() => { updatePermission('manage-own-incoming-integrations', ['admin']).then(() => { diff --git a/packages/core-typings/src/IIntegration.ts b/packages/core-typings/src/IIntegration.ts index 5f31c9f7879a..6b99424264b2 100644 --- a/packages/core-typings/src/IIntegration.ts +++ b/packages/core-typings/src/IIntegration.ts @@ -10,7 +10,6 @@ export interface IIncomingIntegration extends IRocketChatRecord { channel: string[]; token: string; - overrideDestinationChannelEnabled: boolean; scriptEnabled: boolean; script: string; scriptCompiled?: string; @@ -19,6 +18,7 @@ export interface IIncomingIntegration extends IRocketChatRecord { name: string; enabled: boolean; + overrideDestinationChannelEnabled?: boolean; alias?: string; avatar?: string; emoji?: string; diff --git a/packages/rest-typings/src/v1/integrations/IntegrationsCreateProps.ts b/packages/rest-typings/src/v1/integrations/IntegrationsCreateProps.ts index 2817d4beb0cf..e9ef650656cd 100644 --- a/packages/rest-typings/src/v1/integrations/IntegrationsCreateProps.ts +++ b/packages/rest-typings/src/v1/integrations/IntegrationsCreateProps.ts @@ -8,7 +8,7 @@ export type IntegrationsCreateProps = type: 'webhook-incoming'; username: string; channel: string; - overrideDestinationChannelEnabled: boolean; + overrideDestinationChannelEnabled?: boolean; scriptEnabled: boolean; script?: string; name: string; @@ -70,7 +70,7 @@ const integrationsCreateSchema = { }, overrideDestinationChannelEnabled: { type: 'boolean', - nullable: false, + nullable: true, }, script: { type: 'string', diff --git a/packages/rest-typings/src/v1/integrations/IntegrationsUpdateProps.ts b/packages/rest-typings/src/v1/integrations/IntegrationsUpdateProps.ts index 7237b73fdcc3..6b0e7ce046d1 100644 --- a/packages/rest-typings/src/v1/integrations/IntegrationsUpdateProps.ts +++ b/packages/rest-typings/src/v1/integrations/IntegrationsUpdateProps.ts @@ -9,7 +9,7 @@ export type IntegrationsUpdateProps = integrationId: string; channel: string; scriptEnabled: boolean; - overrideDestinationChannelEnabled: boolean; + overrideDestinationChannelEnabled?: boolean; script?: string; name: string; enabled: boolean; @@ -72,7 +72,7 @@ const integrationsUpdateSchema = { }, overrideDestinationChannelEnabled: { type: 'boolean', - nullable: false, + nullable: true, }, script: { type: 'string', @@ -99,7 +99,7 @@ const integrationsUpdateSchema = { nullable: true, }, }, - required: ['integrationId', 'type', 'channel', 'scriptEnabled', 'overrideDestinationChannelEnabled', 'name', 'enabled'], + required: ['integrationId', 'type', 'channel', 'scriptEnabled', 'name', 'enabled'], additionalProperties: true, }, { @@ -162,10 +162,6 @@ const integrationsUpdateSchema = { type: 'boolean', nullable: false, }, - overrideDestinationChannelEnabled: { - type: 'boolean', - nullable: false, - }, script: { type: 'string', nullable: true, @@ -211,7 +207,7 @@ const integrationsUpdateSchema = { nullable: true, }, }, - required: ['type', 'username', 'channel', 'event', 'scriptEnabled', 'overrideDestinationChannelEnabled', 'name', 'enabled'], + required: ['type', 'username', 'channel', 'event', 'scriptEnabled', 'name', 'enabled'], additionalProperties: false, }, ], From ba24f3c21fea75d91e983397e8dbba16f6f79ec8 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 1 Sep 2023 12:13:01 -0300 Subject: [PATCH 016/115] fix: `default` field is not returned from the `setDefault` endpoint when setting to false (#30194) --- .changeset/real-pets-visit.md | 6 ++ apps/meteor/server/models/raw/Rooms.ts | 18 ++---- .../tests/end-to-end/api/02-channels.js | 60 +++++++++++++------ packages/core-typings/src/IRoom.ts | 2 +- 4 files changed, 55 insertions(+), 31 deletions(-) create mode 100644 .changeset/real-pets-visit.md diff --git a/.changeset/real-pets-visit.md b/.changeset/real-pets-visit.md new file mode 100644 index 000000000000..d6531285597c --- /dev/null +++ b/.changeset/real-pets-visit.md @@ -0,0 +1,6 @@ +--- +"@rocket.chat/meteor": patch +"@rocket.chat/core-typings": patch +--- + +Fixed `default` field not being returned from the `setDefault` endpoints when setting to false diff --git a/apps/meteor/server/models/raw/Rooms.ts b/apps/meteor/server/models/raw/Rooms.ts index 9dad0fa60da3..673fd83f7800 100644 --- a/apps/meteor/server/models/raw/Rooms.ts +++ b/apps/meteor/server/models/raw/Rooms.ts @@ -1349,7 +1349,7 @@ export class RoomsRaw extends BaseRaw implements IRoomsModel { t: { $in: types, }, - ...(defaultValue ? { default: true } : { default: { $exists: false } }), + ...(defaultValue ? { default: true } : { default: { $ne: true } }), }; return this.find(query, options); @@ -1763,17 +1763,11 @@ export class RoomsRaw extends BaseRaw implements IRoomsModel { saveDefaultById(_id: IRoom['_id'], defaultValue: boolean): Promise { const query: Filter = { _id }; - const update: UpdateFilter = defaultValue - ? { - $set: { - default: true, - }, - } - : { - $unset: { - default: 1, - }, - }; + const update: UpdateFilter = { + $set: { + default: defaultValue, + }, + }; return this.updateOne(query, update); } diff --git a/apps/meteor/tests/end-to-end/api/02-channels.js b/apps/meteor/tests/end-to-end/api/02-channels.js index e1615dc34997..7cb2e2234e4e 100644 --- a/apps/meteor/tests/end-to-end/api/02-channels.js +++ b/apps/meteor/tests/end-to-end/api/02-channels.js @@ -1573,25 +1573,49 @@ describe('[Channels]', function () { }); }); - it('/channels.setDefault', async () => { - const roomInfo = await getRoomInfo(channel._id); + describe('/channels.setDefault', () => { + it('should set channel as default', async () => { + const roomInfo = await getRoomInfo(channel._id); - return request - .post(api('channels.setDefault')) - .set(credentials) - .send({ - roomId: channel._id, - default: true, - }) - .expect('Content-Type', 'application/json') - .expect(200) - .expect((res) => { - expect(res.body).to.have.property('success', true); - expect(res.body).to.have.nested.property('channel._id'); - expect(res.body).to.have.nested.property('channel.name', `EDITED${apiPublicChannelName}`); - expect(res.body).to.have.nested.property('channel.t', 'c'); - expect(res.body).to.have.nested.property('channel.msgs', roomInfo.channel.msgs); - }); + return request + .post(api('channels.setDefault')) + .set(credentials) + .send({ + roomId: channel._id, + default: true, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.nested.property('channel._id'); + expect(res.body).to.have.nested.property('channel.name', `EDITED${apiPublicChannelName}`); + expect(res.body).to.have.nested.property('channel.t', 'c'); + expect(res.body).to.have.nested.property('channel.msgs', roomInfo.channel.msgs); + expect(res.body).to.have.nested.property('channel.default', true); + }); + }); + it('should unset channel as default', async () => { + const roomInfo = await getRoomInfo(channel._id); + + return request + .post(api('channels.setDefault')) + .set(credentials) + .send({ + roomId: channel._id, + default: false, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.nested.property('channel._id'); + expect(res.body).to.have.nested.property('channel.name', `EDITED${apiPublicChannelName}`); + expect(res.body).to.have.nested.property('channel.t', 'c'); + expect(res.body).to.have.nested.property('channel.msgs', roomInfo.channel.msgs); + expect(res.body).to.have.nested.property('channel.default', false); + }); + }); }); it('/channels.leave', async () => { diff --git a/packages/core-typings/src/IRoom.ts b/packages/core-typings/src/IRoom.ts index 618c24a4fd3a..4ce8b84abb0e 100644 --- a/packages/core-typings/src/IRoom.ts +++ b/packages/core-typings/src/IRoom.ts @@ -23,7 +23,7 @@ export interface IRoom extends IRocketChatRecord { name?: string; fname?: string; msgs: number; - default?: true; + default?: boolean; broadcast?: true; featured?: true; announcement?: string; From b440346565e259986cc35195ca2839e8f643c400 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Fri, 1 Sep 2023 12:13:22 -0300 Subject: [PATCH 017/115] regression: Crash in livechat with manual routing (#30244) Co-authored-by: Guilherme Gazzo --- packages/livechat/src/routes/Chat/container.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/livechat/src/routes/Chat/container.js b/packages/livechat/src/routes/Chat/container.js index d3fab0102855..2d23645fb49e 100644 --- a/packages/livechat/src/routes/Chat/container.js +++ b/packages/livechat/src/routes/Chat/container.js @@ -40,7 +40,7 @@ class ChatContainer extends Component { this.state.queueSpot = newQueueSpot; this.state.estimatedWaitTime = newEstimatedWaitTime; await this.handleQueueMessage(connecting, queueInfo); - await this.handleConnectingAgentAlert(newConnecting, normalizeQueueAlert(queueInfo)); + await this.handleConnectingAgentAlert(newConnecting, await normalizeQueueAlert(queueInfo)); } }; From 5c80ce9ffd17d65ac94cd0be687649573dd1a84a Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Fri, 1 Sep 2023 12:46:17 -0300 Subject: [PATCH 018/115] chore: Add missing loading state on `AdminInviteUsers` (#30248) --- .../views/admin/users/AdminInviteUsers.tsx | 30 ++++++++++++------- .../views/admin/users/AdminUserForm.tsx | 5 ++-- .../views/admin/users/hooks/useSmtpConfig.ts | 14 --------- .../views/admin/users/hooks/useSmtpQuery.ts | 7 +++++ 4 files changed, 29 insertions(+), 27 deletions(-) delete mode 100644 apps/meteor/client/views/admin/users/hooks/useSmtpConfig.ts create mode 100644 apps/meteor/client/views/admin/users/hooks/useSmtpQuery.ts diff --git a/apps/meteor/client/views/admin/users/AdminInviteUsers.tsx b/apps/meteor/client/views/admin/users/AdminInviteUsers.tsx index 9d549ef19c0b..8976864f3430 100644 --- a/apps/meteor/client/views/admin/users/AdminInviteUsers.tsx +++ b/apps/meteor/client/views/admin/users/AdminInviteUsers.tsx @@ -10,31 +10,39 @@ import { TextAreaInput, } from '@rocket.chat/fuselage'; import { useTranslation, useRoute } from '@rocket.chat/ui-contexts'; -import type { ReactElement, ChangeEvent, ComponentProps } from 'react'; +import type { ChangeEvent } from 'react'; import React, { useCallback, useState } from 'react'; import { validateEmail } from '../../../../lib/emailValidator'; -import { ContextualbarScrollableContent, ContextualbarFooter } from '../../../components/Contextualbar'; +import { ContextualbarScrollableContent, ContextualbarFooter, ContextualbarContent } from '../../../components/Contextualbar'; +import { FormSkeleton } from '../../../components/Skeleton'; import { useSendInvitationEmailMutation } from './hooks/useSendInvitationEmailMutation'; -import { useSmtpConfig } from './hooks/useSmtpConfig'; +import { useSmtpQuery } from './hooks/useSmtpQuery'; -type InviteUsersProps = ComponentProps; - -const InviteUsers = (props: InviteUsersProps): ReactElement => { +// TODO: Replace using RHF +const AdminInviteUsers = () => { const t = useTranslation(); const [text, setText] = useState(''); const getEmails = useCallback((text) => text.split(/[\ ,;]+/i).filter((val: string) => validateEmail(val)), []); const adminRouter = useRoute('admin-settings'); const sendInvitationMutation = useSendInvitationEmailMutation(); - const isSmtpEnabled = useSmtpConfig(); + const { data, isLoading } = useSmtpQuery(); const handleClick = () => { sendInvitationMutation.mutate({ emails: getEmails(text) }); }; - if (!isSmtpEnabled) { + if (isLoading) { + return ( + + + + ); + } + + if (!data?.isSMTPConfigured) { return ( - + {t('SMTP_Server_Not_Setup_Title')} {t('SMTP_Server_Not_Setup_Description')} @@ -50,7 +58,7 @@ const InviteUsers = (props: InviteUsersProps): ReactElement => { return ( <> - + {t('Send_invitation_email')} @@ -70,4 +78,4 @@ const InviteUsers = (props: InviteUsersProps): ReactElement => { ); }; -export default InviteUsers; +export default AdminInviteUsers; diff --git a/apps/meteor/client/views/admin/users/AdminUserForm.tsx b/apps/meteor/client/views/admin/users/AdminUserForm.tsx index 4f8550a9410f..4d8f2a48395c 100644 --- a/apps/meteor/client/views/admin/users/AdminUserForm.tsx +++ b/apps/meteor/client/views/admin/users/AdminUserForm.tsx @@ -36,7 +36,7 @@ import UserAvatarEditor from '../../../components/avatar/UserAvatarEditor'; import { useEndpointAction } from '../../../hooks/useEndpointAction'; import { useUpdateAvatar } from '../../../hooks/useUpdateAvatar'; import { USER_STATUS_TEXT_MAX_LENGTH, BIO_TEXT_MAX_LENGTH } from '../../../lib/constants'; -import { useSmtpConfig } from './hooks/useSmtpConfig'; +import { useSmtpQuery } from './hooks/useSmtpQuery'; type AdminUserFormProps = { userData?: Serialized; @@ -72,7 +72,8 @@ const UserForm = ({ userData, onReload, ...props }: AdminUserFormProps) => { const defaultRoles = useSetting('Accounts_Registration_Users_Default_Roles') || ''; const defaultUserRoles = parseCSV(defaultRoles); - const isSmtpEnabled = useSmtpConfig(); + const { data } = useSmtpQuery(); + const isSmtpEnabled = data?.isSMTPConfigured; const eventStats = useEndpointAction('POST', '/v1/statistics.telemetry'); const updateUserAction = useEndpoint('POST', '/v1/users.update'); diff --git a/apps/meteor/client/views/admin/users/hooks/useSmtpConfig.ts b/apps/meteor/client/views/admin/users/hooks/useSmtpConfig.ts deleted file mode 100644 index fbf670e25ff0..000000000000 --- a/apps/meteor/client/views/admin/users/hooks/useSmtpConfig.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useEndpoint } from '@rocket.chat/ui-contexts'; -import { useQuery } from '@tanstack/react-query'; - -export const useSmtpConfig = () => { - const getSmtpConfig = useEndpoint('GET', '/v1/smtp.check'); - - const { data } = useQuery(['smtp.check'], async () => { - const smtpConfig = await getSmtpConfig(); - - return smtpConfig.isSMTPConfigured; - }); - - return data; -}; diff --git a/apps/meteor/client/views/admin/users/hooks/useSmtpQuery.ts b/apps/meteor/client/views/admin/users/hooks/useSmtpQuery.ts new file mode 100644 index 000000000000..471f28727af4 --- /dev/null +++ b/apps/meteor/client/views/admin/users/hooks/useSmtpQuery.ts @@ -0,0 +1,7 @@ +import { useEndpoint } from '@rocket.chat/ui-contexts'; +import { useQuery } from '@tanstack/react-query'; + +export const useSmtpQuery = () => { + const getSmtpConfig = useEndpoint('GET', '/v1/smtp.check'); + return useQuery(['smtp.check'], async () => getSmtpConfig()); +}; From 6098941931755cfea535399ad2ff736f35922f04 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Fri, 1 Sep 2023 13:32:35 -0300 Subject: [PATCH 019/115] regression: add deps props for useDebouncedCallback for app stream (#30251) --- apps/meteor/client/hooks/useAppActionButtons.ts | 10 +++++++--- apps/meteor/client/hooks/useAppSlashCommands.ts | 10 +++++++--- apps/meteor/client/hooks/useAppTranslations.ts | 10 +++++++--- apps/meteor/client/providers/AppsProvider.tsx | 12 ++++++++---- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/apps/meteor/client/hooks/useAppActionButtons.ts b/apps/meteor/client/hooks/useAppActionButtons.ts index 402c0f3c9775..8895535f9c26 100644 --- a/apps/meteor/client/hooks/useAppActionButtons.ts +++ b/apps/meteor/client/hooks/useAppActionButtons.ts @@ -29,9 +29,13 @@ export const useAppActionButtons = (context?: `${UIActionButtonContext}`) => { staleTime: Infinity, }); - const invalidate = useDebouncedCallback(() => { - queryClient.invalidateQueries(['apps', 'actionButtons']); - }, 100); + const invalidate = useDebouncedCallback( + () => { + queryClient.invalidateQueries(['apps', 'actionButtons']); + }, + 100, + [], + ); useEffect(() => { if (!uid) { diff --git a/apps/meteor/client/hooks/useAppSlashCommands.ts b/apps/meteor/client/hooks/useAppSlashCommands.ts index 3cb6ff2ce090..665e76b0ef9e 100644 --- a/apps/meteor/client/hooks/useAppSlashCommands.ts +++ b/apps/meteor/client/hooks/useAppSlashCommands.ts @@ -11,9 +11,13 @@ export const useAppSlashCommands = () => { const apps = useSingleStream('apps'); const uid = useUserId(); - const invalidate = useDebouncedCallback(() => { - queryClient.invalidateQueries(['apps', 'slashCommands']); - }, 100); + const invalidate = useDebouncedCallback( + () => { + queryClient.invalidateQueries(['apps', 'slashCommands']); + }, + 100, + [], + ); useEffect(() => { if (!uid) { diff --git a/apps/meteor/client/hooks/useAppTranslations.ts b/apps/meteor/client/hooks/useAppTranslations.ts index eba0686aab55..ad8ca5966c2b 100644 --- a/apps/meteor/client/hooks/useAppTranslations.ts +++ b/apps/meteor/client/hooks/useAppTranslations.ts @@ -26,9 +26,13 @@ export const useAppTranslations = () => { } }, [result.data]); - const invalidate = useDebouncedCallback(() => { - queryClient.invalidateQueries(['apps', 'translations']); - }, 100); + const invalidate = useDebouncedCallback( + () => { + queryClient.invalidateQueries(['apps', 'translations']); + }, + 100, + [], + ); useEffect(() => { if (!uid) { diff --git a/apps/meteor/client/providers/AppsProvider.tsx b/apps/meteor/client/providers/AppsProvider.tsx index 6b9de2344fa7..042ce8365474 100644 --- a/apps/meteor/client/providers/AppsProvider.tsx +++ b/apps/meteor/client/providers/AppsProvider.tsx @@ -22,10 +22,14 @@ const AppsProvider: FC = ({ children }) => { const stream = useSingleStream('apps'); - const invalidate = useDebouncedCallback(() => { - queryClient.invalidateQueries(['marketplace', 'apps-instance']); - invalidateAppsCountQuery(); - }, 100); + const invalidate = useDebouncedCallback( + () => { + queryClient.invalidateQueries(['marketplace', 'apps-instance']); + invalidateAppsCountQuery(); + }, + 100, + [], + ); useEffect(() => { return stream('apps', ([key]) => { From 4bf6d3ea00ce9c709e93b86dbbef74bb70ab6558 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Fri, 1 Sep 2023 14:22:12 -0300 Subject: [PATCH 020/115] chore: Fix envvar name in patch notes (#30235) --- .changeset/hip-hounds-ring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/hip-hounds-ring.md b/.changeset/hip-hounds-ring.md index be1ebb295afd..79dfba6dd031 100644 --- a/.changeset/hip-hounds-ring.md +++ b/.changeset/hip-hounds-ring.md @@ -2,4 +2,4 @@ '@rocket.chat/meteor': patch --- -Added ability to disable private app installation via envvar (DISABLED_PRIVATE_APP_INSTALLATION) +Added ability to disable private app installation via envvar (DISABLE_PRIVATE_APP_INSTALLATION) From 2615de9cc48d498fd74f06cba2f86d9b5464898f Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva Date: Fri, 1 Sep 2023 15:43:35 -0300 Subject: [PATCH 021/115] chore: Reports dashboard E2E tests (#30223) --- apps/meteor/client/lib/queryClient.ts | 1 + .../components/dashboards/PeriodSelector.tsx | 5 +- .../reports/components/BarChart.tsx | 1 + .../reports/components/ReportCard.tsx | 8 +- .../reports/hooks/useAgentsSection.tsx | 1 + .../reports/hooks/useChannelsSection.tsx | 1 + .../reports/hooks/useDepartmentsSection.tsx | 5 +- .../reports/hooks/useStatusSection.tsx | 1 + .../reports/hooks/useTagsSection.tsx | 1 + .../omnichannel/omnichannel-reports.spec.ts | 365 ++++++++++++++++++ .../e2e/page-objects/omnichannel-reports.ts | 89 +++++ 11 files changed, 473 insertions(+), 5 deletions(-) create mode 100644 apps/meteor/tests/e2e/omnichannel/omnichannel-reports.spec.ts create mode 100644 apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts diff --git a/apps/meteor/client/lib/queryClient.ts b/apps/meteor/client/lib/queryClient.ts index ec4a10d3f76b..2bb38d001242 100644 --- a/apps/meteor/client/lib/queryClient.ts +++ b/apps/meteor/client/lib/queryClient.ts @@ -5,6 +5,7 @@ export const queryClient = new QueryClient({ queries: { onError: console.warn, refetchOnWindowFocus: false, + retry: process.env.TEST_MODE === 'true', }, mutations: { onError: console.warn, diff --git a/apps/meteor/ee/client/components/dashboards/PeriodSelector.tsx b/apps/meteor/ee/client/components/dashboards/PeriodSelector.tsx index a14ee3075778..7d84a4df62d2 100644 --- a/apps/meteor/ee/client/components/dashboards/PeriodSelector.tsx +++ b/apps/meteor/ee/client/components/dashboards/PeriodSelector.tsx @@ -9,15 +9,16 @@ import { getPeriod } from './periods'; type PeriodSelectorProps = { periods: TPeriod[]; value: TPeriod; + name?: string; onChange: (value: TPeriod) => void; }; -const PeriodSelector = ({ periods, value, onChange }: PeriodSelectorProps): ReactElement => { +const PeriodSelector = ({ periods, value, name, onChange }: PeriodSelectorProps): ReactElement => { const t = useTranslation(); const options = useMemo<[string, string][]>(() => periods.map((period) => [period, t(...getPeriod(period).label)]), [periods, t]); - return onChange(value as TPeriod)} />; }; export default PeriodSelector; diff --git a/apps/meteor/ee/client/omnichannel/reports/components/BarChart.tsx b/apps/meteor/ee/client/omnichannel/reports/components/BarChart.tsx index eb58b54d06bc..440459e2910e 100644 --- a/apps/meteor/ee/client/omnichannel/reports/components/BarChart.tsx +++ b/apps/meteor/ee/client/omnichannel/reports/components/BarChart.tsx @@ -142,6 +142,7 @@ export const BarChart = ({ labelSkipHeight={direction === 'vertical' ? 16 : undefined} valueScale={{ type: 'linear' }} tooltip={({ data }) => {`${data.label}: ${data.value}`}} + barAriaLabel={({ data }) => data.label} /> diff --git a/apps/meteor/ee/client/omnichannel/reports/components/ReportCard.tsx b/apps/meteor/ee/client/omnichannel/reports/components/ReportCard.tsx index b1bd9d8df90b..92a4d8d44199 100644 --- a/apps/meteor/ee/client/omnichannel/reports/components/ReportCard.tsx +++ b/apps/meteor/ee/client/omnichannel/reports/components/ReportCard.tsx @@ -11,6 +11,7 @@ import { useIsResizing } from '../hooks/useIsResizing'; import { CardErrorState } from './CardErrorState'; type ReportCardProps = { + id: string; title: string; children: ReactNode; periodSelectorProps: ComponentProps; @@ -27,6 +28,7 @@ type ReportCardProps = { }; export const ReportCard = ({ + id, title, children, periodSelectorProps, @@ -56,6 +58,8 @@ export const ReportCard = ({ flexShrink={0} flexBasis='auto' margin={8} + data-qa={id} + aria-busy={isLoading} > @@ -63,12 +67,12 @@ export const ReportCard = ({ {title} - + {subtitle} - + diff --git a/apps/meteor/ee/client/omnichannel/reports/hooks/useAgentsSection.tsx b/apps/meteor/ee/client/omnichannel/reports/hooks/useAgentsSection.tsx index b80b4cf2d20f..a6da966b3606 100644 --- a/apps/meteor/ee/client/omnichannel/reports/hooks/useAgentsSection.tsx +++ b/apps/meteor/ee/client/omnichannel/reports/hooks/useAgentsSection.tsx @@ -58,6 +58,7 @@ export const useAgentsSection = () => { return useMemo( () => ({ + id: 'conversations-by-agent', title, subtitle, emptyStateSubtitle, diff --git a/apps/meteor/ee/client/omnichannel/reports/hooks/useChannelsSection.tsx b/apps/meteor/ee/client/omnichannel/reports/hooks/useChannelsSection.tsx index c17e36fee53c..ce13de2f546e 100644 --- a/apps/meteor/ee/client/omnichannel/reports/hooks/useChannelsSection.tsx +++ b/apps/meteor/ee/client/omnichannel/reports/hooks/useChannelsSection.tsx @@ -72,6 +72,7 @@ export const useChannelsSection = () => { return useMemo( () => ({ + id: 'conversations-by-channel', title, subtitle, emptyStateSubtitle, diff --git a/apps/meteor/ee/client/omnichannel/reports/hooks/useDepartmentsSection.tsx b/apps/meteor/ee/client/omnichannel/reports/hooks/useDepartmentsSection.tsx index b9075d3721af..0e207c3d113a 100644 --- a/apps/meteor/ee/client/omnichannel/reports/hooks/useDepartmentsSection.tsx +++ b/apps/meteor/ee/client/omnichannel/reports/hooks/useDepartmentsSection.tsx @@ -24,6 +24,7 @@ export const useDepartmentsSection = () => { isLoading, isError, isSuccess, + refetch, } = useQuery( ['omnichannel-reports', 'conversations-by-department', period], async () => { @@ -50,6 +51,7 @@ export const useDepartmentsSection = () => { return useMemo( () => ({ + id: 'conversations-by-department', title, subtitle, emptyStateSubtitle, @@ -61,7 +63,8 @@ export const useDepartmentsSection = () => { periodSelectorProps, period, downloadProps, + onRetry: refetch, }), - [title, subtitle, emptyStateSubtitle, data, total, isLoading, isError, isSuccess, periodSelectorProps, period, downloadProps], + [title, subtitle, emptyStateSubtitle, data, total, isLoading, isError, isSuccess, periodSelectorProps, period, downloadProps, refetch], ); }; diff --git a/apps/meteor/ee/client/omnichannel/reports/hooks/useStatusSection.tsx b/apps/meteor/ee/client/omnichannel/reports/hooks/useStatusSection.tsx index ba1c8a1a6d54..3c725f9bc85b 100644 --- a/apps/meteor/ee/client/omnichannel/reports/hooks/useStatusSection.tsx +++ b/apps/meteor/ee/client/omnichannel/reports/hooks/useStatusSection.tsx @@ -67,6 +67,7 @@ export const useStatusSection = () => { return useMemo( () => ({ + id: 'conversations-by-status', title, subtitle, emptyStateSubtitle, diff --git a/apps/meteor/ee/client/omnichannel/reports/hooks/useTagsSection.tsx b/apps/meteor/ee/client/omnichannel/reports/hooks/useTagsSection.tsx index a1a4dd8ed7b2..5688fc24c6b5 100644 --- a/apps/meteor/ee/client/omnichannel/reports/hooks/useTagsSection.tsx +++ b/apps/meteor/ee/client/omnichannel/reports/hooks/useTagsSection.tsx @@ -59,6 +59,7 @@ export const useTagsSection = () => { return useMemo( () => ({ + id: 'conversations-by-tags', title, subtitle, emptyStateSubtitle, diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-reports.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-reports.spec.ts new file mode 100644 index 000000000000..10e4db2cfd0b --- /dev/null +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-reports.spec.ts @@ -0,0 +1,365 @@ +import { Route } from '@playwright/test'; + +import { IS_EE } from '../config/constants'; +import { Users } from '../fixtures/userStates'; +import { OmnichannelReports } from '../page-objects/omnichannel-reports'; +import { test, expect } from '../utils/test'; + +const ENDPOINTS = { + BY_STATUS: /\/v1\/livechat\/analytics\/dashboards\/conversations-by-status/, + BY_SOURCE: /\/v1\/livechat\/analytics\/dashboards\/conversations-by-source/, + BY_DEPARTMENT: /\/v1\/livechat\/analytics\/dashboards\/conversations-by-department/, + BY_TAGS: /\/v1\/livechat\/analytics\/dashboards\/conversations-by-tags/, + BY_AGENT: /\/v1\/livechat\/analytics\/dashboards\/conversations-by-agent/, +}; + +test.skip(!IS_EE, 'Omnichannel Reports > Enterprise Only'); + +test.use({ storageState: Users.user1.state }); + +test.describe.serial('Omnichannel Reports', () => { + let poReports: OmnichannelReports; + + test.beforeAll(async ({ api }) => { + const requests = await Promise.all([ + api.post('/livechat/users/agent', { username: 'user1' }), + api.post('/livechat/users/manager', { username: 'user1' }), + ]); + await expect(requests.every((request) => request.status() === 200)).toBe(true); + }); + + test.beforeEach(async ({ page }) => { + poReports = new OmnichannelReports(page); + }); + + test.beforeEach(async ({ page }) => { + await page.goto('/omnichannel/reports'); + await page.locator('.main-content').waitFor(); + }); + + test.afterAll(async ({ api }) => { + await Promise.all([api.delete('/livechat/users/agent/user1'), api.delete('/livechat/users/manager/user1')]); + }); + + test('Status Section', async ({ page }) => { + await test.step('Empty state', async () => { + await page.route(ENDPOINTS.BY_STATUS, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + await poReports.statusSection.selectPeriod('this week'); + await expect(poReports.statusSection.txtStateTitle).toHaveText('No data available for the selected period'); + await expect(poReports.statusSection.txtStateSubtitle).toHaveText('This chart will update as soon as conversations start.'); + await expect(poReports.statusSection.txtSummary).toHaveText('0 conversations, this week'); + }); + + await test.step('Error state', async () => { + await page.route(ENDPOINTS.BY_STATUS, async (route: Route) => { + await route.abort(); + }); + + await poReports.statusSection.selectPeriod('this month'); + await expect(poReports.statusSection.element).toHaveAttribute('aria-busy', 'false'); + await expect(poReports.statusSection.btnRetry).toBeVisible(); + await expect(poReports.statusSection.txtStateTitle).toHaveText('Something went wrong'); + + await test.step('Retry', async () => { + await page.route(ENDPOINTS.BY_STATUS, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + const responsePromise = page.waitForResponse(ENDPOINTS.BY_STATUS); + await poReports.statusSection.btnRetry.click(); + await responsePromise; + }); + }); + + await test.step('Render data', async () => { + const mock = { + data: [ + { label: 'Open', value: 25 }, + { label: 'Queued', value: 25 }, + { label: 'Closed', value: 25 }, + { label: 'On_Hold', value: 25 }, + ], + total: 100, + }; + + await page.route(ENDPOINTS.BY_STATUS, async (route: Route) => { + const response = await route.fetch(); + await route.fulfill({ response, json: mock }); + }); + + await poReports.statusSection.selectPeriod('last year'); + await expect(poReports.statusSection.legendItem(`Closed 25 (25%)`)).toBeVisible(); + await expect(poReports.statusSection.legendItem(`Open 25 (25%)`)).toBeVisible(); + await expect(poReports.statusSection.legendItem(`Queued 25 (25%)`)).toBeVisible(); + await expect(poReports.statusSection.legendItem(`On hold 25 (25%)`)).toBeVisible(); + await expect(poReports.statusSection.txtSummary).toHaveText('100 conversations, last year'); + }); + }); + + test('Channels Section', async ({ page }) => { + await test.step('Empty state', async () => { + await page.route(ENDPOINTS.BY_SOURCE, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + await poReports.channelsSection.selectPeriod('this week'); + await expect(poReports.channelsSection.txtStateTitle).toHaveText('No data available for the selected period'); + await expect(poReports.channelsSection.txtStateSubtitle).toHaveText('This chart shows the most used channels.'); + await expect(poReports.channelsSection.txtSummary).toHaveText('0 conversations, this week'); + }); + + await test.step('Error state', async () => { + await page.route(ENDPOINTS.BY_SOURCE, async (route: Route) => { + await route.abort(); + }); + + await poReports.channelsSection.selectPeriod('last 15 days'); + await expect(poReports.channelsSection.element).toHaveAttribute('aria-busy', 'false'); + await expect(poReports.channelsSection.btnRetry).toBeVisible(); + await expect(poReports.channelsSection.txtStateTitle).toHaveText('Something went wrong'); + + await test.step('Retry', async () => { + await page.route(ENDPOINTS.BY_SOURCE, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + const responsePromise = page.waitForResponse(ENDPOINTS.BY_SOURCE); + await poReports.channelsSection.btnRetry.click(); + await responsePromise; + }); + }); + + await test.step('Render data', async () => { + const mock = { + data: [ + { label: 'Channel 1', value: 50 }, + { label: 'Channel 2', value: 50 }, + ], + total: 100, + }; + await page.route(ENDPOINTS.BY_SOURCE, async (route: Route) => { + const response = await route.fetch(); + await route.fulfill({ response, json: mock }); + }); + + await poReports.channelsSection.selectPeriod('last year'); + await expect(poReports.channelsSection.legendItem(`Channel 1 50 (50%)`)).toBeVisible(); + await expect(poReports.channelsSection.legendItem(`Channel 2 50 (50%)`)).toBeVisible(); + await expect(poReports.channelsSection.txtSummary).toHaveText('100 conversations, last year'); + }); + + await test.step('More than 5 channels', async () => { + const mock = { + data: [ + { label: 'Channel 1', value: 15 }, + { label: 'Channel 2', value: 15 }, + { label: 'Channel 3', value: 15 }, + { label: 'Channel 4', value: 15 }, + { label: 'Channel 5', value: 15 }, + { label: 'Channel 6', value: 15 }, + { label: 'Channel 7', value: 15 }, + { label: 'Channel 8', value: 15 }, + ], + total: 120, + }; + await page.route(ENDPOINTS.BY_SOURCE, async (route: Route) => { + const response = await route.fetch(); + await route.fulfill({ response, json: mock }); + }); + + await poReports.channelsSection.selectPeriod('last 6 months'); + await expect(poReports.channelsSection.legendItem(`Others 45 (37.5%)`)).toBeVisible(); + await expect(poReports.channelsSection.txtSummary).toHaveText('120 conversations, last 6 months'); + }); + }); + + test('Departments Section', async ({ page }) => { + await test.step('Empty state', async () => { + await page.route(ENDPOINTS.BY_DEPARTMENT, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + await poReports.departmentsSection.selectPeriod('this week'); + await expect(poReports.departmentsSection.txtStateTitle).toHaveText('No data available for the selected period'); + await expect(poReports.departmentsSection.txtStateSubtitle).toHaveText( + 'This chart displays the departments that receive the most conversations.', + ); + await expect(poReports.departmentsSection.txtSummary).toHaveText('0 departments and 0 conversations, this week'); + }); + + await test.step('Error state', async () => { + await page.route(ENDPOINTS.BY_DEPARTMENT, async (route: Route) => { + await route.abort(); + }); + + await poReports.departmentsSection.selectPeriod('this month'); + await expect(poReports.departmentsSection.element).toHaveAttribute('aria-busy', 'false'); + await expect(poReports.departmentsSection.btnRetry).toBeVisible(); + await expect(poReports.departmentsSection.txtStateTitle).toHaveText('Something went wrong'); + + await test.step('Retry', async () => { + await page.route(ENDPOINTS.BY_DEPARTMENT, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + const responsePromise = page.waitForResponse(ENDPOINTS.BY_DEPARTMENT); + await poReports.departmentsSection.btnRetry.click(); + await responsePromise; + }); + }); + + await test.step('Render data', async () => { + const mock = { + data: [ + { label: 'Department 1', value: 10 }, + { label: 'Department 2', value: 20 }, + { label: 'Department 3', value: 30 }, + { label: 'Department 4', value: 40 }, + ], + total: 100, + unspecified: 42, + }; + await page.route(ENDPOINTS.BY_DEPARTMENT, async (route: Route) => { + const response = await route.fetch(); + await route.fulfill({ response, json: mock }); + }); + + await poReports.departmentsSection.selectPeriod('last 6 months'); + await expect(poReports.departmentsSection.chartItem('Department 1', 10)).toBeVisible(); + await expect(poReports.departmentsSection.chartItem('Department 2', 20)).toBeVisible(); + await expect(poReports.departmentsSection.chartItem('Department 3', 30)).toBeVisible(); + await expect(poReports.departmentsSection.chartItem('Department 4', 40)).toBeVisible(); + await expect(poReports.departmentsSection.txtSummary).toHaveText( + '4 departments and 100 conversations, last 6 months (42 without department)', + ); + }); + }); + + test('Tags Section', async ({ page }) => { + await test.step('Empty state', async () => { + await page.route(ENDPOINTS.BY_TAGS, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + await poReports.tagsSection.selectPeriod('this week'); + await expect(poReports.tagsSection.txtStateTitle).toHaveText('No data available for the selected period'); + await expect(poReports.tagsSection.txtStateSubtitle).toHaveText('This chart shows the most frequently used tags.'); + await expect(poReports.tagsSection.txtSummary).toHaveText('0 tags and 0 conversations, this week'); + }); + + await test.step('Error state', async () => { + await page.route(ENDPOINTS.BY_TAGS, async (route: Route) => { + await route.abort(); + }); + + await poReports.tagsSection.selectPeriod('this month'); + await expect(poReports.tagsSection.element).toHaveAttribute('aria-busy', 'false'); + await expect(poReports.tagsSection.btnRetry).toBeVisible(); + await expect(poReports.tagsSection.txtStateTitle).toHaveText('Something went wrong'); + + await test.step('Retry', async () => { + await page.route(ENDPOINTS.BY_TAGS, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + const responsePromise = page.waitForResponse(ENDPOINTS.BY_TAGS); + await poReports.tagsSection.btnRetry.click(); + await responsePromise; + }); + }); + + await test.step('Render data', async () => { + const mock = { + data: [ + { label: 'Tag 1', value: 10 }, + { label: 'Tag 2', value: 20 }, + { label: 'Tag 3', value: 30 }, + { label: 'Tag 4', value: 40 }, + ], + total: 100, + unspecified: 42, + }; + await page.route(ENDPOINTS.BY_TAGS, async (route: Route) => { + const response = await route.fetch(); + await route.fulfill({ response, json: mock }); + }); + + await poReports.tagsSection.selectPeriod('last 6 months'); + await expect(poReports.tagsSection.chartItem('Tag 1', 10)).toBeVisible(); + await expect(poReports.tagsSection.chartItem('Tag 2', 20)).toBeVisible(); + await expect(poReports.tagsSection.chartItem('Tag 3', 30)).toBeVisible(); + await expect(poReports.tagsSection.chartItem('Tag 4', 40)).toBeVisible(); + await expect(poReports.tagsSection.txtSummary).toHaveText('4 tags and 100 conversations, last 6 months (42 without tags)'); + }); + }); + + test('Agents Section', async ({ page }) => { + await test.step('Empty state', async () => { + await page.route(ENDPOINTS.BY_AGENT, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + await poReports.agentsSection.selectPeriod('this week'); + await expect(poReports.agentsSection.txtStateTitle).toHaveText('No data available for the selected period'); + await expect(poReports.agentsSection.txtStateSubtitle).toHaveText( + 'This chart displays which agents receive the highest volume of conversations.', + ); + await expect(poReports.agentsSection.txtSummary).toHaveText('0 agents and 0 conversations, this week'); + }); + + await test.step('Error state', async () => { + await page.route(ENDPOINTS.BY_AGENT, async (route: Route) => { + await route.abort(); + }); + + await poReports.agentsSection.selectPeriod('this month'); + await expect(poReports.agentsSection.element).toHaveAttribute('aria-busy', 'false'); + await expect(poReports.agentsSection.btnRetry).toBeVisible(); + await expect(poReports.agentsSection.txtStateTitle).toHaveText('Something went wrong'); + + await test.step('Retry', async () => { + await page.route(ENDPOINTS.BY_AGENT, async (route: Route) => { + await route.fulfill({ json: { data: [], total: 0 } }); + }); + + const responsePromise = page.waitForResponse(ENDPOINTS.BY_AGENT); + await poReports.agentsSection.btnRetry.click(); + await responsePromise; + }); + }); + + await test.step('Render data', async () => { + const mock = { + data: [ + { label: 'Agent 1', value: 10 }, + { label: 'Agent 2', value: 20 }, + { label: 'Agent 3', value: 30 }, + { label: 'Agent 4', value: 40 }, + ], + total: 100, + unspecified: 42, + }; + await page.route(ENDPOINTS.BY_AGENT, async (route: Route) => { + const response = await route.fetch(); + await route.fulfill({ response, json: mock }); + }); + + await poReports.agentsSection.selectPeriod('last 6 months'); + + await expect(poReports.agentsSection.txtSummary).toHaveText('4 agents and 100 conversations, last 6 months (42 without assignee)'); + + await expect(poReports.agentsSection.chartItem('Agent 1', 10)).toBeVisible(); + await expect(poReports.agentsSection.chartItem('Agent 2', 20)).toBeVisible(); + await expect(poReports.agentsSection.chartItem('Agent 3', 30)).toBeVisible(); + await expect(poReports.agentsSection.chartItem('Agent 4', 40)).toBeVisible(); + + await expect(poReports.agentsSection.findRowByName('Agent 1')).toBeVisible(); + await expect(poReports.agentsSection.findRowByName('Agent 2')).toBeVisible(); + await expect(poReports.agentsSection.findRowByName('Agent 3')).toBeVisible(); + await expect(poReports.agentsSection.findRowByName('Agent 4')).toBeVisible(); + }); + }); +}); diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts new file mode 100644 index 000000000000..9a0db1c283e6 --- /dev/null +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts @@ -0,0 +1,89 @@ +import type { Locator, Page } from '@playwright/test'; + +class OmnichannelReportsSection { + private readonly page: Page; + + private readonly section: Locator; + + constructor(page: Page, sectionId: string) { + this.page = page; + this.section = page.locator(`[data-qa=${sectionId}]`); + } + + get element() { + return this.section; + } + + get inputPeriodSelector() { + return this.section.locator('button', { has: this.page.locator('select[name="periodSelector"]') }); + } + + get txtTitle() { + return this.section.locator(''); + } + + get txtDescription() { + return this.section.locator(''); + } + + get chart() { + return this.section.locator(''); + } + + get txtStateTitle() { + return this.section.locator('.rcx-states__title'); + } + + get txtStateSubtitle() { + return this.section.locator('.rcx-states__subtitle'); + } + + get btnRetry() { + return this.section.locator('role=button[name="Retry"]'); + } + + get txtSummary() { + return this.section.locator('[data-qa="report-summary"]'); + } + + get loadingSkeleton() { + return this.section.locator('.rcx-skeleton'); + } + + findRowByName(name: string) { + return this.section.locator('tr', { has: this.page.locator(`td >> text="${name}"`) }); + } + + chartItem(label: string, value: number) { + return this.section.locator(`rect[aria-label="${label}"] + text >> text=${value}`); + } + + legendItem(text: string) { + return this.section.locator(`text='${text}'`); + } + + async selectPeriod(period: string) { + await this.inputPeriodSelector.click({ force: true }); + await this.page.locator(`li.rcx-option[data-key="${period}"]`).click(); + } +} + +export class OmnichannelReports { + readonly statusSection: OmnichannelReportsSection; + + readonly channelsSection: OmnichannelReportsSection; + + readonly departmentsSection: OmnichannelReportsSection; + + readonly tagsSection: OmnichannelReportsSection; + + readonly agentsSection: OmnichannelReportsSection; + + constructor(page: Page) { + this.statusSection = new OmnichannelReportsSection(page, 'conversations-by-status'); + this.channelsSection = new OmnichannelReportsSection(page, 'conversations-by-channel'); + this.departmentsSection = new OmnichannelReportsSection(page, 'conversations-by-department'); + this.tagsSection = new OmnichannelReportsSection(page, 'conversations-by-tags'); + this.agentsSection = new OmnichannelReportsSection(page, 'conversations-by-agent'); + } +} From db26f8a8ee87c843d19651db4383a81dbec8bc42 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Fri, 1 Sep 2023 15:53:56 -0300 Subject: [PATCH 022/115] fix: Message Menu is cut vertically if screen is too small (#30197) Co-authored-by: Guilherme Jun Grillo <48109548+guijun13@users.noreply.github.com> --- .changeset/serious-shrimps-try.md | 5 ++ .../message/MessageToolboxHolder.tsx | 12 ++- .../toolbox/DesktopToolboxDropdown.tsx | 47 ++-------- .../message/toolbox/MessageActionMenu.tsx | 27 ++++-- .../message/toolbox/MessageToolbox.tsx | 10 ++- .../message/toolbox/ToolboxDropdown.tsx | 11 ++- yarn.lock | 89 ++++++++++++++----- 7 files changed, 127 insertions(+), 74 deletions(-) create mode 100644 .changeset/serious-shrimps-try.md diff --git a/.changeset/serious-shrimps-try.md b/.changeset/serious-shrimps-try.md new file mode 100644 index 000000000000..114293aa104e --- /dev/null +++ b/.changeset/serious-shrimps-try.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fixed an issue with the positioning of the message menu diff --git a/apps/meteor/client/components/message/MessageToolboxHolder.tsx b/apps/meteor/client/components/message/MessageToolboxHolder.tsx index 54f4ebab823d..06a9fbf42b77 100644 --- a/apps/meteor/client/components/message/MessageToolboxHolder.tsx +++ b/apps/meteor/client/components/message/MessageToolboxHolder.tsx @@ -2,7 +2,7 @@ import type { IMessage } from '@rocket.chat/core-typings'; import { MessageToolboxWrapper } from '@rocket.chat/fuselage'; import { useQuery } from '@tanstack/react-query'; import type { ReactElement } from 'react'; -import React, { Suspense, lazy, memo, useRef } from 'react'; +import React, { Suspense, lazy, memo, useRef, useState } from 'react'; import type { MessageActionContext } from '../../../app/ui-utils/client/lib/MessageAction'; import { useChat } from '../../views/room/contexts/ChatContext'; @@ -18,7 +18,10 @@ const MessageToolbox = lazy(() => import('./toolbox/MessageToolbox')); const MessageToolboxHolder = ({ message, context }: MessageToolboxHolderProps): ReactElement => { const ref = useRef(null); - const [visible] = useIsVisible(ref); + const [isVisible] = useIsVisible(ref); + const [kebabOpen, setKebabOpen] = useState(false); + + const showToolbox = isVisible || kebabOpen; const chat = useChat(); @@ -32,10 +35,11 @@ const MessageToolboxHolder = ({ message, context }: MessageToolboxHolderProps): }); return ( - - {visible && depsQueryResult.isSuccess && depsQueryResult.data.room && ( + + {showToolbox && depsQueryResult.isSuccess && depsQueryResult.data.room && ( { - for (let element = descendant ?? document.body; element !== document.body; element = element.parentElement ?? document.body) { - if ( - getComputedStyle(element).transform !== 'none' || - getComputedStyle(element).position === 'fixed' || - getComputedStyle(element).willChange === 'transform' - ) { - return element; - } - } - - return document.body; -}; - -const useDropdownPosition = (reference: RefObject, target: RefObject) => { - const innerContainer = getDropdownContainer(reference.current); - const boundingRect = innerContainer.getBoundingClientRect(); - - const { style } = usePosition(reference, target, { - placement: 'bottom-end', - container: innerContainer, - }); - - const left = `${parseFloat(String(style?.left ?? '0')) - boundingRect.left}px`; - const top = `${parseFloat(String(style?.top ?? '0')) - boundingRect.top}px`; - - return useMemo(() => ({ ...style, left, top }), [style, left, top]); -}; +import React, { forwardRef } from 'react'; type DesktopToolboxDropdownProps = { children: ReactNode; @@ -41,15 +11,12 @@ const DesktopToolboxDropdown = forwardRef(function ToolboxDropdownDesktop( { reference, children }: DesktopToolboxDropdownProps, ref: Ref, ) { - const targetRef = useRef(null); - const mergedRef = useMergedRefs(ref, targetRef); - - const style = useDropdownPosition(reference, targetRef); - return ( - - {children} - + + + {children} + + ); }); diff --git a/apps/meteor/client/components/message/toolbox/MessageActionMenu.tsx b/apps/meteor/client/components/message/toolbox/MessageActionMenu.tsx index 3d1796083112..4c5d442652f2 100644 --- a/apps/meteor/client/components/message/toolbox/MessageActionMenu.tsx +++ b/apps/meteor/client/components/message/toolbox/MessageActionMenu.tsx @@ -1,7 +1,7 @@ -import { Box, MessageToolboxItem, Option, OptionDivider, OptionTitle } from '@rocket.chat/fuselage'; +import { MessageToolboxItem, Option, OptionDivider, OptionTitle } from '@rocket.chat/fuselage'; import { useTranslation } from '@rocket.chat/ui-contexts'; import type { ComponentProps, MouseEvent, MouseEventHandler, ReactElement } from 'react'; -import React, { Fragment, useRef, useState } from 'react'; +import React, { Fragment, useCallback, useRef, useState } from 'react'; import type { MessageActionConfig } from '../../../../app/ui-utils/client/lib/MessageAction'; import { useEmbeddedLayout } from '../../../hooks/useEmbeddedLayout'; @@ -12,6 +12,7 @@ type MessageActionConfigOption = Omit void; options: MessageActionConfigOption[]; }; @@ -32,12 +33,20 @@ const getSectionOrder = (section: string): number => { } }; -const MessageActionMenu = ({ options, ...props }: MessageActionMenuProps): ReactElement => { - const ref = useRef(null); +const MessageActionMenu = ({ options, onChangeMenuVisibility, ...props }: MessageActionMenuProps): ReactElement => { + const buttonRef = useRef(null); const t = useTranslation(); const [visible, setVisible] = useState(false); const isLayoutEmbedded = useEmbeddedLayout(); + const handleChangeMenuVisibility = useCallback( + (visible: boolean): void => { + setVisible(visible); + onChangeMenuVisibility(visible); + }, + [onChangeMenuVisibility], + ); + const groupOptions = options.reduce((acc, option) => { const { type = '' } = option; @@ -62,20 +71,22 @@ const MessageActionMenu = ({ options, ...props }: MessageActionMenuProps): React return acc; }, [] as unknown as [section: string, options: Array][]); + const handleClose = useCallback(() => { + handleChangeMenuVisibility(false); + }, [handleChangeMenuVisibility]); return ( <> setVisible(!visible)} + onClick={(): void => handleChangeMenuVisibility(!visible)} data-qa-id='menu' data-qa-type='message-action-menu' title={t('More')} /> {visible && ( <> - setVisible(!visible)} /> - + {groupOptions.map(([section, options], index, arr) => ( {section === 'apps' && Apps} diff --git a/apps/meteor/client/components/message/toolbox/MessageToolbox.tsx b/apps/meteor/client/components/message/toolbox/MessageToolbox.tsx index 82775fe0cc53..3b9cdd84c25d 100644 --- a/apps/meteor/client/components/message/toolbox/MessageToolbox.tsx +++ b/apps/meteor/client/components/message/toolbox/MessageToolbox.tsx @@ -43,9 +43,16 @@ type MessageToolboxProps = { messageContext?: MessageActionContext; room: IRoom; subscription?: ISubscription; + onChangeMenuVisibility: (visible: boolean) => void; }; -const MessageToolbox = ({ message, messageContext, room, subscription }: MessageToolboxProps): ReactElement | null => { +const MessageToolbox = ({ + message, + messageContext, + room, + subscription, + onChangeMenuVisibility, +}: MessageToolboxProps): ReactElement | null => { const t = useTranslation(); const user = useUser() ?? undefined; const settings = useSettings(); @@ -109,6 +116,7 @@ const MessageToolbox = ({ message, messageContext, room, subscription }: Message ))} {actionsQueryResult.isSuccess && actionsQueryResult.data.menu.length > 0 && ( ({ ...action, action: (e): void => action.action(e, { message, tabbar: toolbox, room, chat, autoTranslateOptions }), diff --git a/apps/meteor/client/components/message/toolbox/ToolboxDropdown.tsx b/apps/meteor/client/components/message/toolbox/ToolboxDropdown.tsx index 7347245f3efb..eee619454f77 100644 --- a/apps/meteor/client/components/message/toolbox/ToolboxDropdown.tsx +++ b/apps/meteor/client/components/message/toolbox/ToolboxDropdown.tsx @@ -1,3 +1,5 @@ +import { Box } from '@rocket.chat/fuselage'; +import { useOutsideClick } from '@rocket.chat/fuselage-hooks'; import { useLayout } from '@rocket.chat/ui-contexts'; import type { ReactNode, ReactElement } from 'react'; import React, { useRef } from 'react'; @@ -8,20 +10,27 @@ import MobileToolboxDropdown from './MobileToolboxDropdown'; type ToolboxDropdownProps = { children: ReactNode; reference: React.RefObject; + handleClose: () => void; }; const ToolboxDropdown = ({ children, + handleClose, reference, }: ToolboxDropdownProps): ReactElement => { const { isMobile } = useLayout(); const target = useRef(null); + const boxRef = useRef(null); const Dropdown = isMobile ? MobileToolboxDropdown : DesktopToolboxDropdown; + useOutsideClick([boxRef], handleClose); + return ( - {children} + + {children} + ); }; diff --git a/yarn.lock b/yarn.lock index 5e42faea4480..092691ec4014 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7917,6 +7917,19 @@ __metadata: languageName: node linkType: hard +"@rocket.chat/css-in-js@npm:~0.31.26-dev.18": + version: 0.31.26-dev.18 + resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.18" + dependencies: + "@emotion/hash": ^0.9.0 + "@rocket.chat/css-supports": ~0.31.26-dev.18 + "@rocket.chat/memo": ~0.31.26-dev.18 + "@rocket.chat/stylis-logical-props-middleware": ~0.31.26-dev.18 + stylis: ~4.1.3 + checksum: 1b4190a2463a0fb9e60c588383951d10aa0d7b501855dd6340ffcc6f1af116c93b3370e9acf03724151a59a53c6f5a111678a3454b23e8fed04a1843ebb31331 + languageName: node + linkType: hard + "@rocket.chat/css-in-js@npm:~0.31.26-dev.7": version: 0.31.26-dev.7 resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.7" @@ -7930,6 +7943,15 @@ __metadata: languageName: node linkType: hard +"@rocket.chat/css-supports@npm:~0.31.26-dev.18": + version: 0.31.26-dev.18 + resolution: "@rocket.chat/css-supports@npm:0.31.26-dev.18" + dependencies: + "@rocket.chat/memo": ~0.31.26-dev.18 + checksum: 08fe45007b8edaa7a0baedfec0434dab51aa240e20c01f6762906b0841d7871aa5b9a1d91abb0dd0fcf7779b93067d6e6a67f31a59759bf178067c1d660670a2 + languageName: node + linkType: hard + "@rocket.chat/css-supports@npm:~0.31.26-dev.7": version: 0.31.26-dev.7 resolution: "@rocket.chat/css-supports@npm:0.31.26-dev.7" @@ -8151,10 +8173,10 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/fuselage-tokens@npm:~0.32.0-dev.367": - version: 0.32.0-dev.367 - resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.367" - checksum: ae3781d7220a45ba813f78ba7d08dec9e333204808f6c93d41d7197e44f031496706dec78249001021ff1af300169e5440924b3dba419fae45bccbbc683fec02 +"@rocket.chat/fuselage-tokens@npm:~0.32.0-dev.378": + version: 0.32.0-dev.378 + resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.378" + checksum: 2db23b7c013c3a1c290f0a663305dd9d3db4a8bd49b22fde8d17abf411c673f22147599d427595731380021649e125d410dc15e9b6e384530238688240630a64 languageName: node linkType: hard @@ -8204,9 +8226,9 @@ __metadata: "@rocket.chat/icons": "*" "@rocket.chat/prettier-config": "*" "@rocket.chat/styled": "*" - "@rocket.chat/ui-contexts": 1.0.2 + "@rocket.chat/ui-contexts": 1.0.3 "@rocket.chat/ui-kit": "*" - "@rocket.chat/ui-video-conf": 1.0.2 + "@rocket.chat/ui-video-conf": 1.0.3 "@tanstack/react-query": "*" react: "*" react-dom: "*" @@ -8214,14 +8236,14 @@ __metadata: linkType: soft "@rocket.chat/fuselage@npm:next": - version: 0.32.0-dev.417 - resolution: "@rocket.chat/fuselage@npm:0.32.0-dev.417" - dependencies: - "@rocket.chat/css-in-js": ~0.31.26-dev.7 - "@rocket.chat/css-supports": ~0.31.26-dev.7 - "@rocket.chat/fuselage-tokens": ~0.32.0-dev.367 - "@rocket.chat/memo": ~0.31.26-dev.7 - "@rocket.chat/styled": ~0.31.26-dev.7 + version: 0.32.0-dev.428 + resolution: "@rocket.chat/fuselage@npm:0.32.0-dev.428" + dependencies: + "@rocket.chat/css-in-js": ~0.31.26-dev.18 + "@rocket.chat/css-supports": ~0.31.26-dev.18 + "@rocket.chat/fuselage-tokens": ~0.32.0-dev.378 + "@rocket.chat/memo": ~0.31.26-dev.18 + "@rocket.chat/styled": ~0.31.26-dev.18 invariant: ^2.2.4 react-aria: ~3.23.1 react-keyed-flatten-children: ^1.3.0 @@ -8233,7 +8255,7 @@ __metadata: react: ^17.0.2 react-dom: ^17.0.2 react-virtuoso: 1.2.4 - checksum: 5b94df847d0714bf96ac09277d62178345a4ccee2f50e87985bebd9ed366da7950643315870a2c1f92732f0f06728219ebbd4d9ce0fe24434e3bf84da8e7f0f3 + checksum: 7f39b64138d77fb9956f821f0a3c638fee38d1f66f1cf243983eed7683ca442096b76ec09bf282fe6f9caf4c6fbab0b38b3fe6310f0fcbc9afd1f09d39f95cf3 languageName: node linkType: hard @@ -8288,7 +8310,7 @@ __metadata: ts-jest: ~29.0.5 typescript: ~5.2.2 peerDependencies: - "@rocket.chat/core-typings": 6.3.2 + "@rocket.chat/core-typings": 6.3.3 "@rocket.chat/css-in-js": "*" "@rocket.chat/fuselage": "*" "@rocket.chat/fuselage-tokens": "*" @@ -8491,6 +8513,13 @@ __metadata: languageName: node linkType: hard +"@rocket.chat/memo@npm:~0.31.26-dev.18": + version: 0.31.26-dev.18 + resolution: "@rocket.chat/memo@npm:0.31.26-dev.18" + checksum: c3006dc08e1f3e5e1ac95cc23f52a4d5445971c5dbb985023128a7e4f8e929913a5103d4c4b7fdbd2848b1982a32440dc64f3894caaa293c774232160fbe4b71 + languageName: node + linkType: hard + "@rocket.chat/memo@npm:~0.31.26-dev.7": version: 0.31.26-dev.7 resolution: "@rocket.chat/memo@npm:0.31.26-dev.7" @@ -9329,7 +9358,16 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/styled@npm:~0.31.26-dev.2, @rocket.chat/styled@npm:~0.31.26-dev.7": +"@rocket.chat/styled@npm:~0.31.26-dev.18": + version: 0.31.26-dev.18 + resolution: "@rocket.chat/styled@npm:0.31.26-dev.18" + dependencies: + "@rocket.chat/css-in-js": ~0.31.26-dev.18 + checksum: 54ede68d3ab24aa0a685bc55148e52a7e17e394d5f16f7114df64633733ca3c9fd39ba30036065ca16636cff6ef9c045a2a82024c0597d9864e77d49e1e56636 + languageName: node + linkType: hard + +"@rocket.chat/styled@npm:~0.31.26-dev.2": version: 0.31.26-dev.7 resolution: "@rocket.chat/styled@npm:0.31.26-dev.7" dependencies: @@ -9338,6 +9376,17 @@ __metadata: languageName: node linkType: hard +"@rocket.chat/stylis-logical-props-middleware@npm:~0.31.26-dev.18": + version: 0.31.26-dev.18 + resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.26-dev.18" + dependencies: + "@rocket.chat/css-supports": ~0.31.26-dev.18 + peerDependencies: + stylis: 4.0.10 + checksum: 5dd4b4d242d568549c6f2dfd8c0ef85d605176b05214d85f3bbd48f648836a287a404d8e44647e383400232f599e80ba34da377af9d960f452f8716489f862f6 + languageName: node + linkType: hard + "@rocket.chat/stylis-logical-props-middleware@npm:~0.31.26-dev.7": version: 0.31.26-dev.7 resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.26-dev.7" @@ -9408,7 +9457,7 @@ __metadata: "@rocket.chat/fuselage": "*" "@rocket.chat/fuselage-hooks": "*" "@rocket.chat/icons": "*" - "@rocket.chat/ui-contexts": 1.0.2 + "@rocket.chat/ui-contexts": 1.0.3 react: ~17.0.2 languageName: unknown linkType: soft @@ -9562,7 +9611,7 @@ __metadata: "@rocket.chat/fuselage-hooks": "*" "@rocket.chat/icons": "*" "@rocket.chat/styled": "*" - "@rocket.chat/ui-contexts": 1.0.2 + "@rocket.chat/ui-contexts": 1.0.3 react: ^17.0.2 react-dom: ^17.0.2 languageName: unknown @@ -9646,7 +9695,7 @@ __metadata: typescript: ~5.2.2 peerDependencies: "@rocket.chat/layout": "*" - "@rocket.chat/ui-contexts": 1.0.2 + "@rocket.chat/ui-contexts": 1.0.3 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" From a09a125af82a96db2cc92b8a8e1ea3f94c4668ef Mon Sep 17 00:00:00 2001 From: Tiago Evangelista Pinto Date: Fri, 1 Sep 2023 17:09:55 -0300 Subject: [PATCH 023/115] fix (#30253) Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- packages/fuselage-ui-kit/src/blocks/CalloutBlock.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/fuselage-ui-kit/src/blocks/CalloutBlock.tsx b/packages/fuselage-ui-kit/src/blocks/CalloutBlock.tsx index 89ffd0d9269a..91ef7f32da43 100644 --- a/packages/fuselage-ui-kit/src/blocks/CalloutBlock.tsx +++ b/packages/fuselage-ui-kit/src/blocks/CalloutBlock.tsx @@ -11,7 +11,7 @@ const CalloutBlock = ({ surfaceRenderer, }: CalloutBlockProps): ReactElement => { return ( - + {surfaceRenderer.renderTextObject(block.text, 0, UiKit.BlockContext.NONE)} ); From 51b988b3df346a9a02058cefa6f5d235bcb680c2 Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Fri, 1 Sep 2023 18:39:55 -0300 Subject: [PATCH 024/115] fix: importer filter not working (#30232) --- .changeset/red-zebras-clap.md | 5 +++++ .../app/importer/server/classes/ImportDataConverter.ts | 2 -- apps/meteor/app/importer/server/classes/ImporterBase.js | 7 +++++-- 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 .changeset/red-zebras-clap.md diff --git a/.changeset/red-zebras-clap.md b/.changeset/red-zebras-clap.md new file mode 100644 index 000000000000..cd8f832b1835 --- /dev/null +++ b/.changeset/red-zebras-clap.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Fix importer filters not working diff --git a/apps/meteor/app/importer/server/classes/ImportDataConverter.ts b/apps/meteor/app/importer/server/classes/ImportDataConverter.ts index dea6bbb845d1..f241879cdc67 100644 --- a/apps/meteor/app/importer/server/classes/ImportDataConverter.ts +++ b/apps/meteor/app/importer/server/classes/ImportDataConverter.ts @@ -445,8 +445,6 @@ export class ImportDataConverter { public async convertUsers({ beforeImportFn, afterImportFn, onErrorFn, afterBatchFn }: IConversionCallbacks = {}): Promise { const users = (await this.getUsersToImport()) as IImportUserRecord[]; - await callbacks.run('beforeUserImport', { userCount: users.length }); - const insertedIds = new Set(); const updatedIds = new Set(); let skippedCount = 0; diff --git a/apps/meteor/app/importer/server/classes/ImporterBase.js b/apps/meteor/app/importer/server/classes/ImporterBase.js index 47b5c91cd3dc..061644130a66 100644 --- a/apps/meteor/app/importer/server/classes/ImporterBase.js +++ b/apps/meteor/app/importer/server/classes/ImporterBase.js @@ -3,6 +3,7 @@ import { Settings, ImportData, Imports } from '@rocket.chat/models'; import AdmZip from 'adm-zip'; import { Selection, SelectionChannel, SelectionUser } from '..'; +import { callbacks } from '../../../../lib/callbacks'; import { t } from '../../../utils/lib/i18n'; import { ImporterInfo } from '../../lib/ImporterInfo'; import { ProgressStep, ImportPreparingStartedStates } from '../../lib/ImporterProgressStep'; @@ -96,7 +97,7 @@ export class Base { this.reloadCount(); const started = Date.now(); - const beforeImportFn = async (data, type) => { + const beforeImportFn = async ({ data, dataType: type }) => { if (this.importRecord.valid === false) { this.converter.aborted = true; throw new Error('The import operation is no longer valid.'); @@ -130,7 +131,7 @@ export class Base { } } - return true; + return false; }; const afterImportFn = async () => { @@ -167,6 +168,8 @@ export class Base { await this.applySettingValues({}); await this.updateProgress(ProgressStep.IMPORTING_USERS); + const usersToImport = importSelection.users.filter((user) => user.do_import); + await callbacks.run('beforeUserImport', { userCount: usersToImport.length }); await this.converter.convertUsers({ beforeImportFn, afterImportFn, onErrorFn, afterBatchFn }); await this.updateProgress(ProgressStep.IMPORTING_CHANNELS); From a3e6e7ab19c39d6b85e7d4e089a93b4e9814a611 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 1 Sep 2023 19:22:52 -0300 Subject: [PATCH 025/115] test: Avoid flakiness in failed login attempts end-to-end tests (#30233) --- .../meteor/tests/end-to-end/api/31-failed-login-attempts.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts b/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts index 3e6c664c8d8f..92ea1ac56ed3 100644 --- a/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts +++ b/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts @@ -10,8 +10,8 @@ import { createUser, deleteUser } from '../../data/users.helper'; describe('[Failed Login Attempts]', function () { this.retries(0); - const maxAttemptsByUser = 3; - const maxAttemptsByIp = 6; + const maxAttemptsByUser = 2; + const maxAttemptsByIp = 4; const userBlockSeconds = 3; const ipBlockSeconds = 8; @@ -115,7 +115,7 @@ describe('[Failed Login Attempts]', function () { await deleteUser(user); }); - it('should block by IP when the limit amount of failed attempts is reached', async () => { + it('should block by User when the limit amount of failed attempts is reached', async () => { await failMaxAttempts(user.username, `${password}-incorrect`); await shouldBlockLogin(user.username, password, 'user'); From e23ff448857ad1dc9a354b529dcbaa7e9c9b74ca Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva Date: Sat, 2 Sep 2023 00:55:52 -0300 Subject: [PATCH 026/115] chore: removed force click to prevent flaky test (#30257) --- apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts index 9a0db1c283e6..b4a9b81d35b5 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-reports.ts @@ -63,7 +63,7 @@ class OmnichannelReportsSection { } async selectPeriod(period: string) { - await this.inputPeriodSelector.click({ force: true }); + await this.inputPeriodSelector.click(); await this.page.locator(`li.rcx-option[data-key="${period}"]`).click(); } } From 9cd1649aa7f08f47293f3acc00b531af250e43ed Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Sat, 2 Sep 2023 00:56:24 -0300 Subject: [PATCH 027/115] chore: Improve form fields on `CreateChannelModal` (#30203) Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- .../UserAutoCompleteMultipleFederated.tsx | 9 +- .../CreateChannel/CreateChannelModal.tsx | 136 ++++++++++++------ .../tests/e2e/channel-management.spec.ts | 2 +- apps/meteor/tests/e2e/create-channel.spec.ts | 2 +- .../page-objects/fragments/home-sidenav.ts | 2 +- 5 files changed, 98 insertions(+), 53 deletions(-) diff --git a/apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultipleFederated.tsx b/apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultipleFederated.tsx index 7ee1078c859d..457593e2c5db 100644 --- a/apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultipleFederated.tsx +++ b/apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultipleFederated.tsx @@ -2,7 +2,7 @@ import { MultiSelectFiltered, Icon, Box, Chip } from '@rocket.chat/fuselage'; import { useDebouncedValue } from '@rocket.chat/fuselage-hooks'; import { useEndpoint } from '@rocket.chat/ui-contexts'; import { useQuery } from '@tanstack/react-query'; -import type { ReactElement } from 'react'; +import type { ReactElement, AllHTMLAttributes } from 'react'; import React, { memo, useState, useCallback, useMemo } from 'react'; import UserAvatar from '../avatar/UserAvatar'; @@ -12,7 +12,7 @@ type UserAutoCompleteMultipleFederatedProps = { onChange: (value: Array) => void; value: Array; placeholder?: string; -}; +} & Omit, 'is' | 'onChange'>; type UserAutoCompleteOptionType = { name: string; @@ -93,17 +93,18 @@ const UserAutoCompleteMultipleFederated = ({ return ( void }): ReactElement => { + renderSelected={({ value, onMouseDown }: { value: string; onMouseDown: () => void }) => { const currentCachedOption = selectedCache[value] || {}; return ( - + {currentCachedOption._federated ? : } {currentCachedOption.name || currentCachedOption.username || value} diff --git a/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx b/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx index 18023df3e39f..57ebffdbcf39 100644 --- a/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx +++ b/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx @@ -1,4 +1,5 @@ import { Box, Modal, Button, TextInput, Icon, Field, ToggleSwitch, FieldGroup } from '@rocket.chat/fuselage'; +import { useUniqueId } from '@rocket.chat/fuselage-hooks'; import type { TranslationKey } from '@rocket.chat/ui-contexts'; import { useSetting, @@ -48,18 +49,20 @@ const CreateChannelModal = ({ teamId = '', onClose }: CreateChannelModalProps): const e2eEnabled = useSetting('E2E_Enable'); const namesValidation = useSetting('UTF8_Channel_Names_Validation'); const allowSpecialNames = useSetting('UI_Allow_room_names_with_special_chars'); - const federationEnabled = useSetting('Federation_Matrix_enabled'); - const channelNameExists = useEndpoint('GET', '/v1/rooms.nameExists'); + const federationEnabled = useSetting('Federation_Matrix_enabled') || false; + const e2eEnabledForPrivateByDefault = useSetting('E2E_Enabled_Default_PrivateRooms'); + + const canCreateChannel = usePermission('create-c'); + const canCreatePrivateChannel = usePermission('create-p'); const channelNameRegex = useMemo(() => new RegExp(`^${namesValidation}$`), [namesValidation]); const federatedModule = useHasLicenseModule('federation'); const canUseFederation = federatedModule !== 'loading' && federatedModule && federationEnabled; + const channelNameExists = useEndpoint('GET', '/v1/rooms.nameExists'); const createChannel = useEndpoint('POST', '/v1/channels.create'); const createPrivateChannel = useEndpoint('POST', '/v1/groups.create'); - const canCreateChannel = usePermission('create-c'); - const canCreatePrivateChannel = usePermission('create-p'); - const e2eEnabledForPrivateByDefault = useSetting('E2E_Enabled_Default_PrivateRooms'); + const dispatchToastMessage = useToastMessageDispatch(); const canOnlyCreateOneType = useMemo(() => { @@ -74,12 +77,13 @@ const CreateChannelModal = ({ teamId = '', onClose }: CreateChannelModalProps): const { register, - formState: { isDirty, errors }, + formState: { errors }, handleSubmit, control, setValue, watch, } = useForm({ + mode: 'onBlur', defaultValues: { members: [], name: '', @@ -165,22 +169,37 @@ const CreateChannelModal = ({ teamId = '', onClose }: CreateChannelModalProps): [e2eEnabled, e2eEnabledForPrivateByDefault, broadcast, isPrivate], ); + const createChannelFormId = useUniqueId(); + const nameId = useUniqueId(); + const topicId = useUniqueId(); + const privateId = useUniqueId(); + const federatedId = useUniqueId(); + const readOnlyId = useUniqueId(); + const encryptedId = useUniqueId(); + const broadcastId = useUniqueId(); + const addMembersId = useUniqueId(); + return ( ) => } + aria-labelledby={`${createChannelFormId}-title`} + wrapperFunction={(props: ComponentProps) => ( + + )} > - {t('Create_channel')} - + {t('Create_channel')} + - {t('Name')} + + {t('Channel_name')} + } - placeholder={t('Channel_name')} + aria-invalid={errors.name ? 'true' : 'false'} + aria-describedby={`${nameId}-error`} + aria-required='true' /> - {errors.name && {errors.name.message}} + {errors.name && ( + + {errors.name.message} + + )} - - {t('Topic')}{' '} - - ({t('optional')}) - - + {t('Topic')} - + + {t('Channel_what_is_this_channel_about')} - {t('Private')} - + {t('Private')} + {isPrivate ? t('Only_invited_users_can_acess_this_channel') : t('Everyone_can_access_this_channel')} - + ( - + )} /> @@ -224,14 +252,21 @@ const CreateChannelModal = ({ teamId = '', onClose }: CreateChannelModalProps): - {t('Federation_Matrix_Federated')} - {t(getFederationHintKey(federatedModule, Boolean(federationEnabled)))} + {t('Federation_Matrix_Federated')} + {t(getFederationHintKey(federatedModule, federationEnabled))} ( - + )} /> @@ -239,16 +274,23 @@ const CreateChannelModal = ({ teamId = '', onClose }: CreateChannelModalProps): - {t('Read_only')} - + {t('Read_only')} + {readOnly ? t('Only_authorized_users_can_write_new_messages') : t('All_users_in_the_channel_can_write_new_messages')} - + ( - + )} /> @@ -256,8 +298,8 @@ const CreateChannelModal = ({ teamId = '', onClose }: CreateChannelModalProps): - {t('Encrypted')} - + {t('Encrypted')} + {isPrivate ? t('Encrypted_channel_Description') : t('Encrypted_not_available')} @@ -266,11 +308,12 @@ const CreateChannelModal = ({ teamId = '', onClose }: CreateChannelModalProps): name='encrypted' render={({ field: { onChange, value, ref } }): ReactElement => ( )} @@ -280,40 +323,41 @@ const CreateChannelModal = ({ teamId = '', onClose }: CreateChannelModalProps): - {t('Broadcast')} - {t('Broadcast_channel_Description')} + {t('Broadcast')} + {t('Broadcast_channel_Description')} ( - + )} /> - - {t('Add_members')}{' '} - - ({t('optional')}) - - + {t('Add_members')} ( - + )} /> - - diff --git a/apps/meteor/tests/e2e/channel-management.spec.ts b/apps/meteor/tests/e2e/channel-management.spec.ts index 8e92fba9ea49..7c1533282519 100644 --- a/apps/meteor/tests/e2e/channel-management.spec.ts +++ b/apps/meteor/tests/e2e/channel-management.spec.ts @@ -123,7 +123,7 @@ test.describe.serial('channel-management', () => { await poHomeChannel.sidenav.btnCreate.click(); await regularUserPage.goto(`/channel/${channelName}`); - await expect(regularUserPage.locator('button', { hasText: 'Join' })).toBeVisible(); + await expect(regularUserPage.locator('button >> text="Join"')).toBeVisible(); }); test.skip('expect all notification preferences of "targetChannel" to be "Mentions"', async () => { diff --git a/apps/meteor/tests/e2e/create-channel.spec.ts b/apps/meteor/tests/e2e/create-channel.spec.ts index 8a66ff6b9935..1feb819f8440 100644 --- a/apps/meteor/tests/e2e/create-channel.spec.ts +++ b/apps/meteor/tests/e2e/create-channel.spec.ts @@ -19,8 +19,8 @@ test.describe.serial('channel-management', () => { const channelName = faker.string.uuid(); await poHomeChannel.sidenav.openNewByLabel('Channel'); - await poHomeChannel.sidenav.checkboxPrivateChannel.click(); await poHomeChannel.sidenav.inputChannelName.type(channelName); + await poHomeChannel.sidenav.checkboxPrivateChannel.click(); await poHomeChannel.sidenav.btnCreate.click(); await expect(page).toHaveURL(`/channel/${channelName}`); diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index 314f4baadb55..5e5e3f93bfb6 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -14,7 +14,7 @@ export class HomeSidenav { } get checkboxEncryption(): Locator { - return this.page.locator('role=dialog[name="Create Channel"] >> role=checkbox[name="Encrypted"]').locator('..'); + return this.page.locator('role=dialog[name="Create Channel"] >> label >> text="Encrypted"'); } get checkboxReadOnly(): Locator { From 7dffec2e2fe536bb04f8c58bcab789d0b58e32cb Mon Sep 17 00:00:00 2001 From: csuadev <72958726+csuadev@users.noreply.github.com> Date: Mon, 4 Sep 2023 14:13:33 -0500 Subject: [PATCH 028/115] chore: Add danger variant to apps action button menus (#30214) --- .changeset/honest-glasses-roll.md | 5 +++++ apps/meteor/client/hooks/useAppActionButtons.ts | 1 + .../client/views/room/contexts/RoomToolboxContext.ts | 1 + .../views/room/providers/hooks/useAppsRoomActions.ts | 1 + apps/meteor/package.json | 2 +- yarn.lock | 10 +++++----- 6 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 .changeset/honest-glasses-roll.md diff --git a/.changeset/honest-glasses-roll.md b/.changeset/honest-glasses-roll.md new file mode 100644 index 000000000000..679f46fb8420 --- /dev/null +++ b/.changeset/honest-glasses-roll.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +chore: Add danger variant to apps action button menus diff --git a/apps/meteor/client/hooks/useAppActionButtons.ts b/apps/meteor/client/hooks/useAppActionButtons.ts index 8895535f9c26..28d62ef1b75a 100644 --- a/apps/meteor/client/hooks/useAppActionButtons.ts +++ b/apps/meteor/client/hooks/useAppActionButtons.ts @@ -146,6 +146,7 @@ export const useMessageActionAppsActionButtons = (context?: MessageActionContext label: Utilities.getI18nKeyForApp(action.labelI18n, action.appId), order: 7, type: 'apps', + variant: action.variant, action: (_, params) => { void actionManager.triggerActionButtonAction({ rid: params.message.rid, diff --git a/apps/meteor/client/views/room/contexts/RoomToolboxContext.ts b/apps/meteor/client/views/room/contexts/RoomToolboxContext.ts index fbf4fe5e7764..7f58eec3aa4c 100644 --- a/apps/meteor/client/views/room/contexts/RoomToolboxContext.ts +++ b/apps/meteor/client/views/room/contexts/RoomToolboxContext.ts @@ -28,6 +28,7 @@ export type RoomToolboxActionConfig = { onClickBack?: () => void; }>; type?: 'organization' | 'communication' | 'customization' | 'apps'; + variant?: 'danger'; }; export type RoomToolboxContextValue = { diff --git a/apps/meteor/client/views/room/providers/hooks/useAppsRoomActions.ts b/apps/meteor/client/views/room/providers/hooks/useAppsRoomActions.ts index e20f1465e2dc..935da2a23c46 100644 --- a/apps/meteor/client/views/room/providers/hooks/useAppsRoomActions.ts +++ b/apps/meteor/client/views/room/providers/hooks/useAppsRoomActions.ts @@ -19,6 +19,7 @@ export const useAppsRoomActions = () => { (action): RoomToolboxActionConfig => ({ id: action.actionId, icon: undefined, + variant: action.variant, order: 300, title: Utilities.getI18nKeyForApp(action.labelI18n, action.appId), groups: ['group', 'channel', 'live', 'team', 'direct', 'direct_multiple'], diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 17ca54920e7b..427ad86ddca3 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -225,7 +225,7 @@ "@rocket.chat/account-utils": "workspace:^", "@rocket.chat/agenda": "workspace:^", "@rocket.chat/api-client": "workspace:^", - "@rocket.chat/apps-engine": "1.41.0-alpha.305", + "@rocket.chat/apps-engine": "1.41.0-alpha.312", "@rocket.chat/base64": "workspace:^", "@rocket.chat/cas-validate": "workspace:^", "@rocket.chat/core-services": "workspace:^", diff --git a/yarn.lock b/yarn.lock index 092691ec4014..d14adeed87af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7763,9 +7763,9 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/apps-engine@npm:1.41.0-alpha.305": - version: 1.41.0-alpha.305 - resolution: "@rocket.chat/apps-engine@npm:1.41.0-alpha.305" +"@rocket.chat/apps-engine@npm:1.41.0-alpha.312": + version: 1.41.0-alpha.312 + resolution: "@rocket.chat/apps-engine@npm:1.41.0-alpha.312" dependencies: adm-zip: ^0.5.9 cryptiles: ^4.1.3 @@ -7777,7 +7777,7 @@ __metadata: vm2: ^3.9.19 peerDependencies: "@rocket.chat/ui-kit": "*" - checksum: 83ec73dac6e1f25722080cf32143ada914c4adb9aef8ebf770af13a5456cef1c81d1a9eedc4063549b8105277f2254d6c307c3c0c5f6ed7f99233a2d464bf6da + checksum: 003853d3c4d4374ab984474026e4ae657daf4591fe4c375b914aa57c27f576af0fcba66e70c539e056b5d80a1ef655775f6f3a07bf81a36ab6fd438ce464e70f languageName: node linkType: hard @@ -8564,7 +8564,7 @@ __metadata: "@rocket.chat/account-utils": "workspace:^" "@rocket.chat/agenda": "workspace:^" "@rocket.chat/api-client": "workspace:^" - "@rocket.chat/apps-engine": 1.41.0-alpha.305 + "@rocket.chat/apps-engine": 1.41.0-alpha.312 "@rocket.chat/base64": "workspace:^" "@rocket.chat/cas-validate": "workspace:^" "@rocket.chat/core-services": "workspace:^" From 42644a6e4451728226b11e376898cf1e922d4b92 Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Mon, 4 Sep 2023 13:33:57 -0600 Subject: [PATCH 029/115] fix: Prevent `RoomProvider.useEffect` from subscribing multiple times (#30273) --- .changeset/forty-hotels-pretend.md | 5 +++++ .../views/room/providers/RoomProvider.tsx | 22 ++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 .changeset/forty-hotels-pretend.md diff --git a/.changeset/forty-hotels-pretend.md b/.changeset/forty-hotels-pretend.md new file mode 100644 index 000000000000..b23825d5a02a --- /dev/null +++ b/.changeset/forty-hotels-pretend.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fix: Prevent `RoomProvider.useEffect` from subscribing to room-data stream multiple times diff --git a/apps/meteor/client/views/room/providers/RoomProvider.tsx b/apps/meteor/client/views/room/providers/RoomProvider.tsx index a0be7bf64f39..e19fa8136f59 100644 --- a/apps/meteor/client/views/room/providers/RoomProvider.tsx +++ b/apps/meteor/client/views/room/providers/RoomProvider.tsx @@ -1,5 +1,4 @@ import type { IRoom } from '@rocket.chat/core-typings'; -import { isOmnichannelRoom } from '@rocket.chat/core-typings'; import { usePermission, useStream, useUserId, useRouter } from '@rocket.chat/ui-contexts'; import { useQueryClient } from '@tanstack/react-query'; import type { ReactNode, ContextType, ReactElement } from 'react'; @@ -35,17 +34,18 @@ const RoomProvider = ({ rid, children }: RoomProviderProps): ReactElement => { const queryClient = useQueryClient(); const userId = useUserId(); const isLivechatAdmin = usePermission('view-livechat-rooms'); + const { t: roomType } = room ?? {}; // TODO: move this to omnichannel context only useEffect(() => { - if (!room || !isOmnichannelRoom(room)) { + if (roomType !== 'l') { return; } return subscribeToRoom(rid, (room) => { queryClient.setQueryData(['rooms', rid], room); }); - }, [subscribeToRoom, rid, queryClient, room]); + }, [subscribeToRoom, rid, queryClient, roomType]); // TODO: the following effect is a workaround while we don't have a general and definitive solution for it const router = useRouter(); @@ -55,19 +55,21 @@ const RoomProvider = ({ rid, children }: RoomProviderProps): ReactElement => { } }, [isSuccess, room, router]); + const { _id: servedById } = room?.servedBy ?? {}; + // TODO: Review the necessity of this effect when we move away from cached collections useEffect(() => { - if (!room || !isOmnichannelRoom(room) || !room.servedBy) { + if (roomType !== 'l' || !servedById) { return; } - if (!isLivechatAdmin && room.servedBy._id !== userId) { - ChatRoom.remove(room._id); - queryClient.removeQueries(['rooms', room._id]); - queryClient.removeQueries(['rooms', { reference: room._id, type: 'l' }]); - queryClient.removeQueries(['/v1/rooms.info', room._id]); + if (!isLivechatAdmin && servedById !== userId) { + ChatRoom.remove(rid); + queryClient.removeQueries(['rooms', rid]); + queryClient.removeQueries(['rooms', { reference: rid, type: 'l' }]); + queryClient.removeQueries(['/v1/rooms.info', rid]); } - }, [isLivechatAdmin, queryClient, userId, room]); + }, [isLivechatAdmin, queryClient, userId, rid, roomType, servedById]); const subscriptionQuery = useReactiveQuery(['subscriptions', { rid }], () => ChatSubscription.findOne({ rid }) ?? null); From 778fc6168e57a862bd596384bf10572b6a292c53 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Mon, 4 Sep 2023 19:25:09 -0300 Subject: [PATCH 030/115] fix: Remove options on `Chat Now` page (#30196) --- packages/livechat/src/routes/Chat/component.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/livechat/src/routes/Chat/component.js b/packages/livechat/src/routes/Chat/component.js index 6ba1788b4bcb..98991ab72b53 100644 --- a/packages/livechat/src/routes/Chat/component.js +++ b/packages/livechat/src/routes/Chat/component.js @@ -186,7 +186,7 @@ class Chat extends Component { {onChangeDepartment && ( From e077fd1cb6f5a1811be0e557b916b0b39f8c9fdc Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Mon, 4 Sep 2023 20:08:31 -0300 Subject: [PATCH 031/115] chore: add missing voip setting translation on pt-BR (#30210) --- apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index bf2f838d442a..931bb7bda467 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -4717,6 +4717,8 @@ "VoIP_Management_Server_Name": "Nome do servidor", "VoIP_Management_Server_Username": "Nome de usuário", "VoIP_Management_Server_Password": "Senha", + "VoIP_Retry_Count": "Número de tentativas", + "VoIP_Retry_Count_Description": "Define quantas vezes o cliente tentará se reconectar ao servidor VoIP caso a conexão seja perdida.", "Voip_call_started": "Chamada iniciada às", "Voip_call_duration": "Chamada com duração de {{duration}}", "Voip_call_declined": "Chamada finalizada pelo agente", From 8e95d589aa758a0554dc06b24406a10142f939f0 Mon Sep 17 00:00:00 2001 From: Hugo Costa Date: Tue, 5 Sep 2023 08:46:00 -0300 Subject: [PATCH 032/115] regression: Webhook / bot message without link previews (#30271) --- apps/meteor/app/oembed/server/server.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/meteor/app/oembed/server/server.ts b/apps/meteor/app/oembed/server/server.ts index 3bf1ae3245be..256722cdd3d4 100644 --- a/apps/meteor/app/oembed/server/server.ts +++ b/apps/meteor/app/oembed/server/server.ts @@ -290,7 +290,7 @@ const rocketUrlParser = async function (message: IMessage): Promise { log.debug('URLs found', message.urls.length); if ( - message.attachments || + (message.attachments && message.attachments.length > 0) || message.urls.filter((item) => !item.url.includes(settings.get('Site_Url'))).length > MAX_EXTERNAL_URL_PREVIEWS ) { log.debug('All URL ignored'); @@ -330,7 +330,7 @@ const rocketUrlParser = async function (message: IMessage): Promise { changed = true; } } - if (attachments.length) { + if (attachments.length > 0) { await Messages.setMessageAttachments(message._id, attachments); } if (changed === true) { From 019e13c0073945e88763891c352dcb0192dc84f6 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Tue, 5 Sep 2023 10:59:16 -0300 Subject: [PATCH 033/115] test: flaky homepage tests (#30200) --- apps/meteor/tests/e2e/homepage.spec.ts | 205 ++++++++++++------------- 1 file changed, 98 insertions(+), 107 deletions(-) diff --git a/apps/meteor/tests/e2e/homepage.spec.ts b/apps/meteor/tests/e2e/homepage.spec.ts index d9999e6fb502..465ecea03cbf 100644 --- a/apps/meteor/tests/e2e/homepage.spec.ts +++ b/apps/meteor/tests/e2e/homepage.spec.ts @@ -19,44 +19,46 @@ test.describe.serial('homepage', () => { let regularUserPage: Page; let adminPage: Page; - test.describe('layout for admins', () => { + test.describe('for admins', () => { test.beforeAll(async ({ browser }) => { adminPage = await browser.newPage({ storageState: Users.admin.state }); await adminPage.goto('/home'); await adminPage.waitForSelector('[data-qa-id="home-header"]'); }); - test('expect show customize button', async () => { - await expect(adminPage.locator('role=button[name="Customize"]')).toBeVisible(); - }); - test.describe('cards', () => { - for (const id of Object.values(CardIds)) { - // eslint-disable-next-line no-loop-func - test(`expect ${id} card to be visible`, async () => { - await expect(adminPage.locator(`[data-qa-id="${id}"]`)).toBeVisible(); - }); - } - }); + test('layout', async () => { + await test.step('expect show customize button', async () => { + await expect(adminPage.locator('role=button[name="Customize"]')).toBeVisible(); + }); + + await test.step('expect all cards to be visible', async () => { + await Promise.all(Object.values(CardIds).map((id) => expect(adminPage.locator(`[data-qa-id="${id}"]`)).toBeVisible())); + }); + }) + - test.describe('custom body with empty custom content', () => { + test.describe('custom body with empty custom content', async () => { test.beforeAll(async ({ api }) => { await expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200); }); - test('expect default value in custom body', async () => { - await expect( - adminPage.locator('role=status[name="Admins may insert content html to be rendered in this white space."]'), - ).toBeVisible(); - }); - - test('expect both change visibility and show only custom content buttons to be disabled', async () => { - await expect(adminPage.locator('role=button[name="Show to workspace"]')).toBeDisabled(); - await expect(adminPage.locator('role=button[name="Show only this content"]')).toBeDisabled(); - }); + test('layout', async () => { + await test.step('expect default value in custom body', async () => { + await expect( + adminPage.locator('role=status[name="Admins may insert content html to be rendered in this white space."]'), + ).toBeVisible(); + }); + + await test.step('expect both change visibility and show only custom content buttons to be disabled', async () => { + await expect(adminPage.locator('role=button[name="Show to workspace"]')).toBeDisabled(); + await expect(adminPage.locator('role=button[name="Show only this content"]')).toBeDisabled(); + }); + + await test.step('expect visibility tag to show "not visible"', async () => { + await expect(adminPage.locator('role=status[name="Not visible to workspace"]')).toBeVisible(); + }); + }) - test('expect visibility tag to show "not visible"', async () => { - await expect(adminPage.locator('role=status[name="Not visible to workspace"]')).toBeVisible(); - }); }); test.describe('custom body with custom content', () => { @@ -64,35 +66,38 @@ test.describe.serial('homepage', () => { await expect((await api.post('/settings/Layout_Home_Body', { value: 'Hello admin' })).status()).toBe(200); }); - test('expect custom body to be visible', async () => { - await expect(adminPage.locator('role=status[name="Hello admin"]')).toBeVisible(); - }); + test('layout', async() => { + await test.step('expect custom body to be visible', async () => { + await expect(adminPage.locator('role=status[name="Hello admin"]')).toBeVisible(); + }); + + await test.step('expect correct state for card buttons', async () => { + await expect(adminPage.locator('role=button[name="Show to workspace"]')).not.toBeDisabled(); + await expect(adminPage.locator('role=button[name="Show only this content"]')).toBeDisabled(); + }); + }) - test('expect correct state for card buttons', async () => { - await expect(adminPage.locator('role=button[name="Show to workspace"]')).not.toBeDisabled(); - await expect(adminPage.locator('role=button[name="Show only this content"]')).toBeDisabled(); - }); test.describe('enterprise edition', () => { test.skip(!IS_EE, 'Enterprise Only'); - test.describe('display custom content only', () => { - test.beforeAll(async ({ api }) => { - await expect((await api.post('/settings/Layout_Home_Body', { value: 'Hello admin' })).status()).toBe(200); - await expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: true })).status()).toBe(200); - await expect((await api.post('/settings/Layout_Custom_Body_Only', { value: true })).status()).toBe(200); - }); + test.beforeAll(async ({ api }) => { + await expect((await api.post('/settings/Layout_Home_Body', { value: 'Hello admin' })).status()).toBe(200); + await expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: true })).status()).toBe(200); + await expect((await api.post('/settings/Layout_Custom_Body_Only', { value: true })).status()).toBe(200); + }); - test('expect default layout to not be visible (show only custom content card)', async () => { + test('display custom content only', async () => { + await test.step('expect default layout to not be visible (show only custom content card)', async () => { await expect(adminPage.locator('role=heading[name="Welcome to Rocket.Chat"]')).not.toBeVisible(); }); - test('expect correct state for card buttons', async () => { + await test.step('expect correct state for card buttons', async () => { await expect(adminPage.locator('role=button[name="Hide on workspace"]')).toBeDisabled(); await expect(adminPage.locator('role=button[name="Show default content"]')).not.toBeDisabled(); }); - test('expect visibility tag to show "visible to workspace"', async () => { + await test.step('expect visibility tag to show "visible to workspace"', async () => { await expect(adminPage.locator('role=status[name="Visible to workspace"]')).toBeVisible(); }); }); @@ -100,97 +105,80 @@ test.describe.serial('homepage', () => { }); test.afterAll(async ({ api }) => { - await expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: false })).status()).toBe(200); - await expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200); + expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: false })).status()).toBe(200); + expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200); await adminPage.close(); }); }); - test.describe('layout for regular users', () => { - test.beforeAll(async ({ api }) => { - await expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200); - }); + test.describe('for regular users', () => { + const notVisibleCards = [CardIds.Users, CardIds.Custom]; - test.beforeAll(async ({ browser }) => { + test.beforeAll(async ({ api, browser }) => { + expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200); regularUserPage = await browser.newPage({ storageState: Users.user2.state }); await regularUserPage.goto('/home'); await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); }); - test('expect to not show customize button', async () => { - await expect(regularUserPage.locator('role=button[name="Customize"]')).not.toBeVisible(); - }); - - test.describe('cards', () => { - for (const id of Object.values(CardIds)) { - if (id === CardIds.Users || id === CardIds.Custom) { - // eslint-disable-next-line no-loop-func - test(`expect ${id} card to not be visible`, async () => { - await expect(regularUserPage.locator(`[data-qa-id="${id}"]`)).not.toBeVisible(); - }); - } else { - // eslint-disable-next-line no-loop-func - test(`expect ${id} card to be visible`, async () => { - await expect(regularUserPage.locator(`[data-qa-id="${id}"]`)).toBeVisible(); - }); - } - } - }); - - test.describe('default values', () => { - test('expect welcome text to use Site_Name default setting', async () => { + test('layout', async () => { + await test.step('expect to not show customize button', async () => { + await expect(regularUserPage.locator('role=button[name="Customize"]')).not.toBeVisible(); + }); + + await test.step(`expect ${notVisibleCards.join(' and ')} cards to not be visible`, async () => { + await Promise.all(notVisibleCards.map((id) => expect(regularUserPage.locator(`[data-qa-id="${id}"]`)).not.toBeVisible())); + }); + + await test.step('expect all other cards to be visible', async () => { + await Promise.all(Object.values(CardIds).filter((id) => !notVisibleCards.includes(id)).map((id) => expect(regularUserPage.locator(`[data-qa-id="${id}"]`)).toBeVisible())); + }); + + await test.step('expect welcome text to use Site_Name default setting', async () => { await expect(regularUserPage.locator('role=heading[name="Welcome to Rocket.Chat"]')).toBeVisible(); }); - - test('expect header text to use Layout_Home_Title default setting', async () => { + + await test.step('expect header text to use Layout_Home_Title default setting', async () => { await expect(regularUserPage.locator('[data-qa-type="PageHeader-title"]')).toContainText('Home'); }); }); test.describe('custom values', () => { test.beforeAll(async ({ api }) => { - await expect((await api.post('/settings/Site_Name', { value: 'NewSiteName' })).status()).toBe(200); - await expect((await api.post('/settings/Layout_Home_Title', { value: 'NewTitle' })).status()).toBe(200); - }); + expect((await api.post('/settings/Site_Name', { value: 'NewSiteName' })).status()).toBe(200); + expect((await api.post('/settings/Layout_Home_Title', { value: 'NewTitle' })).status()).toBe(200); - test.beforeAll(async ({ browser }) => { - regularUserPage = await browser.newPage({ storageState: Users.user2.state }); await regularUserPage.goto('/home'); await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); }); - test('expect welcome text to be NewSiteName', async () => { - await expect(regularUserPage.locator('role=heading[name="Welcome to NewSiteName"]')).toBeVisible(); - }); + test('layout', async () => { + await test.step('expect welcome text to be NewSiteName', async () => { + await expect(regularUserPage.locator('role=heading[name="Welcome to NewSiteName"]')).toBeVisible(); + }); + + await test.step('expect header text to be Layout_Home_Title setting', async () => { + await expect(regularUserPage.locator('[data-qa-type="PageHeader-title"]')).toContainText('NewTitle'); + }); + }) - test('expect header text to be Layout_Home_Title setting', async () => { - await expect(regularUserPage.locator('[data-qa-type="PageHeader-title"]')).toContainText('NewTitle'); - }); test.afterAll(async ({ api }) => { - await expect((await api.post('/settings/Site_Name', { value: 'Rocket.Chat' })).status()).toBe(200); - await expect((await api.post('/settings/Layout_Home_Title', { value: 'Home' })).status()).toBe(200); - }); - }); - - test.describe('custom body with empty content', () => { - test('expect to not show custom content card', async () => { - await expect(regularUserPage.locator('role=status')).not.toBeVisible(); + expect((await api.post('/settings/Site_Name', { value: 'Rocket.Chat' })).status()).toBe(200); + expect((await api.post('/settings/Layout_Home_Title', { value: 'Home' })).status()).toBe(200); }); }); test.describe('custom body with content', () => { test.beforeAll(async ({ api }) => { - await expect((await api.post('/settings/Layout_Home_Body', { value: 'Hello' })).status()).toBe(200); - await expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: true })).status()).toBe(200); - }); + expect((await api.post('/settings/Layout_Home_Body', { value: 'Hello' })).status()).toBe(200); + expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: true })).status()).toBe(200); - test.beforeAll(async ({ browser }) => { - regularUserPage = await browser.newPage({ storageState: Users.user2.state }); await regularUserPage.goto('/home'); await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); }); + test('expect custom body to be visible', async () => { await expect(regularUserPage.locator('role=status[name="Hello"]')).toBeVisible(); }); @@ -199,25 +187,28 @@ test.describe.serial('homepage', () => { test.skip(!IS_EE, 'Enterprise Only'); test.beforeAll(async ({ api }) => { - await expect((await api.post('/settings/Layout_Custom_Body_Only', { value: true })).status()).toBe(200); + expect((await api.post('/settings/Layout_Custom_Body_Only', { value: true })).status()).toBe(200); }); - test('expect default layout to not be visible', async () => { - await expect(regularUserPage.locator('[data-qa-id="homepage-welcome-text"]')).not.toBeVisible(); - }); + test('layout', async () => { + await test.step('expect default layout to not be visible', async () => { + await expect(regularUserPage.locator('[data-qa-id="homepage-welcome-text"]')).not.toBeVisible(); + }); + + await test.step('expect custom body to be visible', async () => { + await expect(regularUserPage.locator('role=status[name="Hello"]')).toBeVisible(); + }); + }) - test('expect custom body to be visible', async () => { - await expect(regularUserPage.locator('role=status[name="Hello"]')).toBeVisible(); - }); test.afterAll(async ({ api }) => { - await expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200); + expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200); }); }); test.afterAll(async ({ api }) => { - await expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200); - await expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: false })).status()).toBe(200); + expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200); + expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: false })).status()).toBe(200); }); }); }); From a08898232c724de5918b589ae482db437eec533b Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Tue, 5 Sep 2023 11:23:37 -0300 Subject: [PATCH 034/115] chore: AppsList semantics improvements (#30256) --- .../views/admin/users/AdminUsersPage.tsx | 2 +- .../client/views/marketplace/AppMenu.js | 2 +- .../views/marketplace/AppsList/AppRow.tsx | 81 +++++++++---------- .../views/marketplace/AppsList/AppsList.tsx | 31 ++++--- .../marketplace/AppsPage/AppsPageContent.tsx | 5 -- .../AppsPage/AppsPageContentBody.tsx | 6 +- .../AppsPage/FeaturedAppsSections.tsx | 6 +- .../fragments/admin-flextab-users.ts | 8 ++ .../meteor/tests/e2e/user-invitations.spec.ts | 10 ++- 9 files changed, 83 insertions(+), 68 deletions(-) diff --git a/apps/meteor/client/views/admin/users/AdminUsersPage.tsx b/apps/meteor/client/views/admin/users/AdminUsersPage.tsx index 24622a44bcc6..aae06b177cce 100644 --- a/apps/meteor/client/views/admin/users/AdminUsersPage.tsx +++ b/apps/meteor/client/views/admin/users/AdminUsersPage.tsx @@ -66,7 +66,7 @@ const UsersPage = (): ReactElement => { {context && ( - + {context === 'info' && t('User_Info')} diff --git a/apps/meteor/client/views/marketplace/AppMenu.js b/apps/meteor/client/views/marketplace/AppMenu.js index ba843321395c..f50651ac4f53 100644 --- a/apps/meteor/client/views/marketplace/AppMenu.js +++ b/apps/meteor/client/views/marketplace/AppMenu.js @@ -425,7 +425,7 @@ function AppMenu({ app, isAppDetailsPage, ...props }) { return null; } - return ; + return ; } export default AppMenu; diff --git a/apps/meteor/client/views/marketplace/AppsList/AppRow.tsx b/apps/meteor/client/views/marketplace/AppsList/AppRow.tsx index a8a664fb148a..3005b706326b 100644 --- a/apps/meteor/client/views/marketplace/AppsList/AppRow.tsx +++ b/apps/meteor/client/views/marketplace/AppsList/AppRow.tsx @@ -62,55 +62,54 @@ const AppRow = (props: App): ReactElement => { const canUpdate = installed && version && marketplaceVersion && semver.lt(version, marketplaceVersion); return ( - - - - - +
+ + + + {name} + + {bundledIn && Boolean(bundledIn.length) && ( + + + + )} + {shortDescription && !isMobile && ( + + {shortDescription} + + )} + - - {bundledIn && Boolean(bundledIn.length) && ( - - - - )} - {shortDescription && !isMobile && ( - - {shortDescription} + + {canUpdate && ( + + )} - - - - {canUpdate && ( - - - - )} - - + - +
); }; diff --git a/apps/meteor/client/views/marketplace/AppsList/AppsList.tsx b/apps/meteor/client/views/marketplace/AppsList/AppsList.tsx index 7855bbdc8f94..27d25a566f80 100644 --- a/apps/meteor/client/views/marketplace/AppsList/AppsList.tsx +++ b/apps/meteor/client/views/marketplace/AppsList/AppsList.tsx @@ -7,20 +7,25 @@ import AppRow from './AppRow'; type AppsListProps = { apps: App[]; - title: string; + title?: string; + appsListId: string; }; -const AppsList = ({ apps, title }: AppsListProps): ReactElement => ( - <> - - {title} - - - {apps.map((app) => ( - - ))} - - -); +const AppsList = ({ apps, title, appsListId }: AppsListProps): ReactElement => { + return ( + <> + {title && ( + + {title} + + )} + + {apps.map((app) => ( + + ))} + + + ); +}; export default AppsList; diff --git a/apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx b/apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx index b652aba5ca27..40d90b56e046 100644 --- a/apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx +++ b/apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx @@ -184,9 +184,7 @@ const AppsPageContent = (): ReactElement => { statusFilterOnSelected={statusFilterOnSelected} context={context || 'explore'} /> - {appsResult.phase === AsyncStatePhase.LOADING && } - {appsResult.phase === AsyncStatePhase.RESOLVED && noErrorsOcurred && ( { noErrorsOcurred={noErrorsOcurred} /> )} - {noAppRequests && } - {noMarketplaceOrInstalledAppMatches && ( )} - {noInstalledAppMatches && ( { const t = useTranslation(); const scrollableRef = useRef(null); + const appsListId = useUniqueId(); return ( <> {noErrorsOcurred && ( - {isMarketplace && !isFiltered && } - + {isMarketplace && !isFiltered && } + )} diff --git a/apps/meteor/client/views/marketplace/AppsPage/FeaturedAppsSections.tsx b/apps/meteor/client/views/marketplace/AppsPage/FeaturedAppsSections.tsx index ee6904499af9..71d9ac62fcc0 100644 --- a/apps/meteor/client/views/marketplace/AppsPage/FeaturedAppsSections.tsx +++ b/apps/meteor/client/views/marketplace/AppsPage/FeaturedAppsSections.tsx @@ -9,17 +9,19 @@ import { useFeaturedApps } from '../hooks/useFeaturedApps'; type FeaturedSectionsProps = { appsResult: App[]; + appsListId: string; }; -const FeaturedAppsSections = ({ appsResult }: FeaturedSectionsProps): ReactElement | null => { +const FeaturedAppsSections = ({ appsResult, appsListId }: FeaturedSectionsProps): ReactElement | null => { const t = useTranslation(); const featuredApps = useFeaturedApps(); if (featuredApps.isSuccess) { return ( <> - {featuredApps.data.sections.map((section) => ( + {featuredApps.data.sections.map((section, index) => ( > text="Invite Members"'); + } + + get setupSmtpLink(): Locator { + return this.page.locator('role=link[name="Set up SMTP"]') + } } diff --git a/apps/meteor/tests/e2e/user-invitations.spec.ts b/apps/meteor/tests/e2e/user-invitations.spec.ts index f5eaac3c688f..4bcdf82d6f43 100644 --- a/apps/meteor/tests/e2e/user-invitations.spec.ts +++ b/apps/meteor/tests/e2e/user-invitations.spec.ts @@ -1,19 +1,23 @@ import { Users } from './fixtures/userStates'; +import { Admin } from './page-objects'; import { test, expect } from './utils/test'; test.use({ storageState: Users.admin.state }); test.describe.serial('user-invites', () => { + let poAdmin: Admin; + test.beforeEach(async ({ page }) => { + poAdmin = new Admin(page); await page.goto('/admin/users/invite'); - await expect(page.locator('//div[contains(text(), "Invite Members")]')).toBeVisible(); + await expect(poAdmin.tabs.users.inviteUsersTitle).toBeVisible(); }); test('expect SMTP setup warning and routing to email settings', async ({ page }) => { - await expect(page.locator('role=link[name="Set up SMTP"]')).toBeVisible(); + await expect(poAdmin.tabs.users.setupSmtpLink).toBeVisible(); - await page.locator('role=link[name="Set up SMTP"]').click(); + await poAdmin.tabs.users.setupSmtpLink.click(); await expect(page).toHaveURL('/admin/settings/Email'); }); From 97c8040b446c0610055431043e41d00733d64b7d Mon Sep 17 00:00:00 2001 From: "lingohub[bot]" <69908207+lingohub[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 15:58:40 +0000 Subject: [PATCH 035/115] =?UTF-8?q?i18n:=20Language=20update=20from=20Ling?= =?UTF-8?q?oHub=20=F0=9F=A4=96=20on=202023-08-31Z=20(#30243)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Douglas Fabris <27704687+dougfabris@users.noreply.github.com> --- .../rocketchat-i18n/i18n/af.i18n.json | 2 ++ .../rocketchat-i18n/i18n/ar.i18n.json | 3 ++- .../rocketchat-i18n/i18n/az.i18n.json | 2 ++ .../rocketchat-i18n/i18n/be-BY.i18n.json | 2 ++ .../rocketchat-i18n/i18n/bg.i18n.json | 2 ++ .../rocketchat-i18n/i18n/bs.i18n.json | 2 ++ .../rocketchat-i18n/i18n/ca.i18n.json | 3 ++- .../rocketchat-i18n/i18n/cs.i18n.json | 3 ++- .../rocketchat-i18n/i18n/cy.i18n.json | 2 ++ .../rocketchat-i18n/i18n/da.i18n.json | 3 ++- .../rocketchat-i18n/i18n/de-AT.i18n.json | 2 ++ .../rocketchat-i18n/i18n/de.i18n.json | 6 ++---- .../rocketchat-i18n/i18n/el.i18n.json | 2 ++ .../rocketchat-i18n/i18n/en.i18n.json | 3 +-- .../rocketchat-i18n/i18n/eo.i18n.json | 2 ++ .../rocketchat-i18n/i18n/es.i18n.json | 3 ++- .../rocketchat-i18n/i18n/fa.i18n.json | 2 ++ .../rocketchat-i18n/i18n/fi.i18n.json | 7 ++----- .../rocketchat-i18n/i18n/fr.i18n.json | 3 ++- .../rocketchat-i18n/i18n/gl.i18n.json | 1 + .../rocketchat-i18n/i18n/he.i18n.json | 2 ++ .../rocketchat-i18n/i18n/hr.i18n.json | 2 ++ .../rocketchat-i18n/i18n/hu.i18n.json | 4 ++-- .../rocketchat-i18n/i18n/id.i18n.json | 2 ++ .../rocketchat-i18n/i18n/it.i18n.json | 3 ++- .../rocketchat-i18n/i18n/ja.i18n.json | 3 ++- .../rocketchat-i18n/i18n/ka-GE.i18n.json | 3 ++- .../rocketchat-i18n/i18n/km.i18n.json | 2 ++ .../rocketchat-i18n/i18n/ko.i18n.json | 3 ++- .../rocketchat-i18n/i18n/ku.i18n.json | 2 ++ .../rocketchat-i18n/i18n/lo.i18n.json | 2 ++ .../rocketchat-i18n/i18n/lt.i18n.json | 2 ++ .../rocketchat-i18n/i18n/lv.i18n.json | 2 ++ .../rocketchat-i18n/i18n/mn.i18n.json | 2 ++ .../rocketchat-i18n/i18n/ms-MY.i18n.json | 2 ++ .../rocketchat-i18n/i18n/nl.i18n.json | 3 ++- .../rocketchat-i18n/i18n/no.i18n.json | 2 ++ .../rocketchat-i18n/i18n/pl.i18n.json | 4 ++-- .../rocketchat-i18n/i18n/pt-BR.i18n.json | 19 +++++++++---------- .../rocketchat-i18n/i18n/pt.i18n.json | 3 ++- .../rocketchat-i18n/i18n/ro.i18n.json | 2 ++ .../rocketchat-i18n/i18n/ru.i18n.json | 3 ++- .../rocketchat-i18n/i18n/sk-SK.i18n.json | 2 ++ .../rocketchat-i18n/i18n/sl-SI.i18n.json | 2 ++ .../rocketchat-i18n/i18n/sq.i18n.json | 2 ++ .../rocketchat-i18n/i18n/sr.i18n.json | 2 ++ .../rocketchat-i18n/i18n/sv.i18n.json | 7 ++----- .../rocketchat-i18n/i18n/ta-IN.i18n.json | 2 ++ .../rocketchat-i18n/i18n/th-TH.i18n.json | 2 ++ .../rocketchat-i18n/i18n/tr.i18n.json | 3 ++- .../rocketchat-i18n/i18n/ug.i18n.json | 2 ++ .../rocketchat-i18n/i18n/uk.i18n.json | 3 ++- .../rocketchat-i18n/i18n/vi-VN.i18n.json | 2 ++ .../rocketchat-i18n/i18n/zh-HK.i18n.json | 2 ++ .../rocketchat-i18n/i18n/zh-TW.i18n.json | 3 ++- .../rocketchat-i18n/i18n/zh.i18n.json | 3 ++- 56 files changed, 117 insertions(+), 47 deletions(-) diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/af.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/af.i18n.json index 1f8dc09c9585..c1322ebab0af 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/af.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/af.i18n.json @@ -1831,6 +1831,8 @@ "Offline_success_message": "Vanlyn Sukses Boodskap", "Offline_unavailable": "Vanlyn is nie beskikbaar nie", "Older_than": "Ouer as", + "Omnichannel_Reports_Status_Open": "oop", + "Omnichannel_Reports_Status_Closed": "gesluit", "On": "op", "online": "aanlyn", "Online": "Online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json index 3b61c7d46ef5..d6b7e5a0739b 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json @@ -2019,7 +2019,6 @@ "Generate_new_key": "إنشاء مفتاح جديد", "Generate_New_Link": "إنشاء رابط جديد", "Generating_key": "يتم إنشاء مفتاح", - "Get_link": "الحصول على رابط", "get-password-policy-forbidRepeatingCharacters": "يجب ألا تحتوي كلمة المرور على رموز متكررة", "get-password-policy-forbidRepeatingCharactersCount": "يجب ألا تحتوي كلمة المرور على أكثر من {{forbidRepeatingCharactersCount}} من الرموز المتكررة", "get-password-policy-maxLength": "يجب أن يزيد طول كلمة المرور على {{maxLength}} من الرموز", @@ -3181,6 +3180,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "مفتاح التشفير (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "إذا تم توفيره، فسيقوم بتشفير الرمز المميز للمستخدم مع المفتاح المقدم وسيحتاج النظام الخارجي إلى فك تشفير البيانات للوصول إلى الرمز المميز", "Omnichannel_External_Frame_URL": "عنوان URL للإطار الخارجي", + "Omnichannel_Reports_Status_Open": "فتح", + "Omnichannel_Reports_Status_Closed": "تم الإغلاق", "On": "مُفعّل", "On_Hold": "قيد الانتظار", "On_Hold_Chats": "قيد الانتظار", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/az.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/az.i18n.json index 6eb91c5e0f93..d63adf27a952 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/az.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/az.i18n.json @@ -1831,6 +1831,8 @@ "Offline_success_message": "Offline Uğur Mesajı", "Offline_unavailable": "Offline mövcud deyil", "Older_than": "Daha yaşlı", + "Omnichannel_Reports_Status_Open": "Açıq", + "Omnichannel_Reports_Status_Closed": "Bağlı", "On": "On", "online": "onlayn", "Online": "Onlayn", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/be-BY.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/be-BY.i18n.json index 195ae7976527..f46d3ea22b1d 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/be-BY.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/be-BY.i18n.json @@ -1847,6 +1847,8 @@ "Offline_success_message": "Offline Поспех паведамлення", "Offline_unavailable": "Offline недаступны", "Older_than": "Старэй", + "Omnichannel_Reports_Status_Open": "адкрыты", + "Omnichannel_Reports_Status_Closed": "закрыта", "On": "на", "online": "онлайн", "Online": "інтэрнэт", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/bg.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/bg.i18n.json index 344c2a75a499..b4bd9d07a849 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/bg.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/bg.i18n.json @@ -1828,6 +1828,8 @@ "Offline_success_message": "Съобщение за успешно офлайн", "Offline_unavailable": "Офлайн не е налице", "Older_than": "По-стари от", + "Omnichannel_Reports_Status_Open": "Отвори", + "Omnichannel_Reports_Status_Closed": "Затворен", "On": "На", "online": "на линия", "Online": "На линия", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/bs.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/bs.i18n.json index c58116b0c42e..81135ed5fa0d 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/bs.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/bs.i18n.json @@ -1824,6 +1824,8 @@ "Offline_success_message": "Izvanmrežna poruka uspjeha", "Offline_unavailable": "Nedostupnost izvanmrežnosti", "Older_than": "Stariji od", + "Omnichannel_Reports_Status_Open": "Otvori", + "Omnichannel_Reports_Status_Closed": "Zatvoreno", "On": "Uključeno", "online": "na liniji", "Online": "Online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ca.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ca.i18n.json index c243fc4a5585..b6e15bbf6f66 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ca.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ca.i18n.json @@ -1997,7 +1997,6 @@ "Generate_new_key": "Generar una nova clau", "Generate_New_Link": "Generar un nou enllaç", "Generating_key": "Generant clau", - "Get_link": "Obtenir l'enllaç", "get-password-policy-forbidRepeatingCharacters": "La contrasenya no ha de contenir caràcters repetits", "get-password-policy-forbidRepeatingCharactersCount": "La contrasenya no ha de contenir més que {{forbidRepeatingCharactersCount}} caràcters repetits", "get-password-policy-maxLength": "La contrasenya ha de tenir un màxim de {{maxLength}} caràcters", @@ -3146,6 +3145,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Clau de xifrat (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Si es proporciona, xifrarà el token de l'usuari amb la clau proporcionada i el sistema extern haurà de desxifrar les dades per accedir a el token.", "Omnichannel_External_Frame_URL": "URL de marc extern", + "Omnichannel_Reports_Status_Open": "Obre", + "Omnichannel_Reports_Status_Closed": "Tancat", "On": "Activa", "On_Hold_Chats": "En espera", "On_Hold_conversations": "Converses en espera", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/cs.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/cs.i18n.json index cac3e0a65941..ff081e3a5eeb 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/cs.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/cs.i18n.json @@ -1705,7 +1705,6 @@ "Generate_new_key": "Vygenerovat nový klíč", "Generate_New_Link": "Vytvořit nový odkaz", "Generating_key": "Generování klíče", - "Get_link": "Získat odkaz", "get-password-policy-forbidRepeatingCharacters": "Heslo nesmí obsahovat opakující se znaky", "get-password-policy-forbidRepeatingCharactersCount": "Heslo nesmí obsahovat více než {{forbidRepeatingCharactersCount}} opakujících se znaků", "get-password-policy-maxLength": "Heslo nesmí být delší než {{maxLength}} znaků", @@ -2662,6 +2661,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "JWK klíč šifrování", "Omnichannel_External_Frame_Encryption_JWK_Description": "Pokud je povoleno zašifruje uživatelský data poskytnutým klíčem a externí systém je musí rozšifrovat.", "Omnichannel_External_Frame_URL": "URL externího rámce", + "Omnichannel_Reports_Status_Open": "Otevřít", + "Omnichannel_Reports_Status_Closed": "Zavřeno", "On": "Zapnuto", "online": "online", "Online": "Online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/cy.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/cy.i18n.json index 793b1691b7e9..0f939e6b345e 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/cy.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/cy.i18n.json @@ -1826,6 +1826,8 @@ "Offline_success_message": "Neges Llwyddiant All-lein", "Offline_unavailable": "All-lein ddim ar gael", "Older_than": "Yn hŷn na", + "Omnichannel_Reports_Status_Open": "Agor", + "Omnichannel_Reports_Status_Closed": "Ar gau", "On": "Ar", "online": "ar-lein", "Online": "Ar-lein", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/da.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/da.i18n.json index ea4c9264efe9..317faac59164 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/da.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/da.i18n.json @@ -1716,7 +1716,6 @@ "Generate_new_key": "Generér en ny nøgle", "Generate_New_Link": "Generér nyt link", "Generating_key": "Genererer nøgle", - "Get_link": "Få link", "get-password-policy-forbidRepeatingCharacters": "Adgangskoden bør ikke indeholde gentagne tegn", "get-password-policy-forbidRepeatingCharactersCount": "Adgangskoden bør ikke indeholde mere end {{forbidRepeatingCharactersCount}} gentagne tegn", "get-password-policy-maxLength": "Adgangskoden skal maksimalt være {{maxLength}} tegn lang", @@ -2675,6 +2674,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Krypteringsnøgle (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Hvis en nøgle forefindes, vil brugerens token krypteres og eksterne systemer skal dekryptere data'en for at tilgå token", "Omnichannel_External_Frame_URL": "Ekstern frame-URL", + "Omnichannel_Reports_Status_Open": "Åbent", + "Omnichannel_Reports_Status_Closed": "Lukket", "On": "På", "online": "online", "Online": "Online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/de-AT.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/de-AT.i18n.json index 78e458b50bbb..68b45bb97714 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/de-AT.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/de-AT.i18n.json @@ -1834,6 +1834,8 @@ "Offline_success_message": "Nachricht, dass Offline Nachricht erfolgreich", "Offline_unavailable": "offline - nicht verfügbar", "Older_than": "Älter als", + "Omnichannel_Reports_Status_Open": "Öffnen", + "Omnichannel_Reports_Status_Closed": "Geschlossen", "On": "Ein", "online": "online", "Online": "Online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json index e5d66cd9accc..47649dd17b2d 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json @@ -2257,7 +2257,6 @@ "Generate_new_key": "Neuen Schlüssel erzeugen", "Generate_New_Link": "Neuen Link erstellen", "Generating_key": "Schlüssel generieren", - "Get_link": "Link abrufen", "get-password-policy-forbidRepeatingCharacters": "Das Passwort sollte keine sich wiederholenden Zeichen enthalten", "get-password-policy-forbidRepeatingCharactersCount": "Das Passwort darf nicht mehr als {{forbidRepeatingCharactersCount}} Zeichen enthalten, die sich wiederholen", "get-password-policy-maxLength": "Das Passwort sollte maximal {{maxLength}} Zeichen lang sein", @@ -2538,7 +2537,6 @@ "Invalid_setting_s": "Ungültige Einstellung: %s", "Invalid_two_factor_code": "Fehlerhafter Zwei-Faktor-Code", "Invalid_username": "Der eingegebene Benutzername ist ungültig", - "Invalid_JSON": "Ungültiges JSON", "invisible": "unsichtbar", "Invisible": "Unsichtbar", "Invitation": "Einladung", @@ -3216,7 +3214,6 @@ "Message_has_been_edited_by": "Die Nachricht wurde editiert von {{username}}", "Message_has_been_edited_by_at": "Die Nachricht wurde bearbeitet von __Benutzername__ am __datum__", "Message_has_been_pinned": "Nachricht wurde angeheftet", - "Message_has_been_shared": "Nachricht wurde geteilt", "Message_has_been_starred": "Nachricht wurde als Favorit gekennzeichnet", "Message_has_been_unpinned": "Nachricht wurde entpinnt", "Message_has_been_unstarred": "Nachricht nicht mehr favorisiert", @@ -3572,6 +3569,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Verschlüsselungsschlüssel (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Wenn angegeben, wird das Token des Benutzers mit dem angegebenen Schlüssel verschlüsselt und das externe System muss die Daten entschlüsseln, um auf das Token zuzugreifen", "Omnichannel_External_Frame_URL": "URL des externen Frames", + "Omnichannel_Reports_Status_Open": "Öffnen", + "Omnichannel_Reports_Status_Closed": "Geschlossen", "On": "Ein", "On_Hold": "In der Warteschleife", "On_Hold_Chats": "Angehalten", @@ -4254,7 +4253,6 @@ "Select_an_option": "Eine Option auswählen", "Select_at_least_one_user": "Mindestens einen Benutzer auswählen", "Select_at_least_two_users": "Mindestens zwei Benutzer auswählen", - "Share_Message": "Nachricht teilen", "Select_department": "Eine Abteilung auswählen", "Select_file": "Datei auswählen", "Select_role": "Eine Rolle auswählen", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/el.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/el.i18n.json index d36aee78cff4..b51fa54a97af 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/el.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/el.i18n.json @@ -1839,6 +1839,8 @@ "Offline_success_message": "Offline μήνυμα επιτυχίας", "Offline_unavailable": "offline διαθέσιμη", "Older_than": "Μεγαλύτερος από", + "Omnichannel_Reports_Status_Open": "Ανοιχτό", + "Omnichannel_Reports_Status_Closed": "Έκλεισε", "On": "Επί", "online": "σε απευθείας σύνδεση", "Online": "Συνδεδεμένος", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index 4dfd49cabd30..3522dc59e8cb 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -639,7 +639,6 @@ "Apps_Manual_Update_Modal_Title": "This app is already installed", "Apps_Manual_Update_Modal_Body": "Do you want to update it?", "Apps_User_Already_Exists": "The username \"{{username}}\" is already being used. Rename or remove the user using it to install this App", - "AutoLinker": "AutoLinker", "Apps_WhatIsIt": "Apps: What Are They?", "Apps_WhatIsIt_paragraph1": "A new icon in the administration area! What does this mean and what are Apps?", @@ -6034,4 +6033,4 @@ "Filter_by_room": "Filter by room type", "Filter_by_visibility": "Filter by visibility", "Theme_Appearence": "Theme Appearence" -} +} \ No newline at end of file diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/eo.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/eo.i18n.json index 8066b28297fa..9c9501c8a174 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/eo.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/eo.i18n.json @@ -1831,6 +1831,8 @@ "Offline_success_message": "Senkonekta Sukcesa Mesaĝo", "Offline_unavailable": "Senkonekta ne disponebla", "Older_than": "Pli maljuna ol", + "Omnichannel_Reports_Status_Open": "Malfermita", + "Omnichannel_Reports_Status_Closed": "Fermita", "On": "Sur", "online": "enreta", "Online": "Enreta", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json index cb9e83821017..50a7b8d63873 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json @@ -1995,7 +1995,6 @@ "Generate_new_key": "Generar una nueva clave", "Generate_New_Link": "Generar un nuevo enlace", "Generating_key": "Generando clave", - "Get_link": "Obtener enlace", "get-password-policy-forbidRepeatingCharacters": "La contraseña no debe contener caracteres repetidos", "get-password-policy-forbidRepeatingCharactersCount": "La contraseña solo puede contener {{forbidRepeatingCharactersCount}} caracteres repetidos", "get-password-policy-maxLength": "La contraseña debe tener un máximo de {{maxLength}} caracteres", @@ -3156,6 +3155,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Clave de cifrado (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Si se proporciona, cifrará el token del usuario con la clave proporcionada y el sistema externo deberá descifrar los datos para acceder al token.", "Omnichannel_External_Frame_URL": "URL de marco externo", + "Omnichannel_Reports_Status_Open": "Abiertas", + "Omnichannel_Reports_Status_Closed": "Cerrado", "On": "Activar", "On_Hold": "En espera", "On_Hold_Chats": "En espera", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fa.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fa.i18n.json index ea451b6ad4d5..dba68fa6b255 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fa.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fa.i18n.json @@ -2132,6 +2132,8 @@ "Omnichannel_Directory": "راهنمای ارتباط کانال همه‌کاره", "Omnichannel_appearance": "ظاهر کانال همه‌کاره", "Omnichannel_Contact_Center": "مرکز مخاطبان کانال همه‌کاره", + "Omnichannel_Reports_Status_Open": "باز کن", + "Omnichannel_Reports_Status_Closed": "بسته", "On": "روشن", "online": "برخط", "Online": "برخط", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json index 0fc914f509f0..ccdec04a7bec 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json @@ -2290,7 +2290,6 @@ "Generate_new_key": "Luo uusi avain", "Generate_New_Link": "Luo uusi linkki", "Generating_key": "Luodaan avainta", - "Get_link": "Hae linkki", "get-password-policy-forbidRepeatingCharacters": "Salasana ei saa sisältää toistuvia merkkejä", "get-password-policy-forbidRepeatingCharactersCount": "Salasana ei saa sisältää yli {{forbidRepeatingCharactersCount}} toistuvaa merkkiä", "get-password-policy-maxLength": "Salasanan on oltava enintään {{maxLength}} merkkiä pitkä", @@ -2575,7 +2574,6 @@ "Invalid_setting_s": "Virheellinen asetus: %s", "Invalid_two_factor_code": "Virheellinen kaksivaiheisen tunnistautumisen koodi", "Invalid_username": "Annettu käyttäjätunnus on virheellinen", - "Invalid_JSON": "Virheellinen JSON", "invisible": "näkymätön", "Invisible": "Näkymätön", "Invitation": "Kutsu", @@ -3265,7 +3263,6 @@ "Message_has_been_edited_by": "Viestiä on muokannut {{username}}", "Message_has_been_edited_by_at": "Viestiä on muokannut {{username}} at {{date}}", "Message_has_been_pinned": "Viesti on kiinnitetty", - "Message_has_been_shared": "Viesti on jaettu", "Message_has_been_starred": "Viesti on merkitty tähdellä", "Message_has_been_unpinned": "Viestin kiinnitys poistettu", "Message_has_been_unstarred": "Viestin tähtimerkintä poistettu", @@ -3620,6 +3617,8 @@ "omnichannel_sla_change_history": "Palvelutasosopimusta vaihdettu: {{user}} vaihtoi palvelutasosopimuksen käytännöksi {{sla}}", "Omnichannel_enable_department_removal": "Ota käyttöön osaston poistaminen", "Omnichannel_enable_department_removal_alert": "Poistettuja osastoja ei voi palauttaa, suosittelemme sen sijaan osaston arkistointia.", + "Omnichannel_Reports_Status_Open": "Avaa", + "Omnichannel_Reports_Status_Closed": "Suljettu", "On": "Käytössä", "on-hold-livechat-room": "Omnichannelin pidon huone Room", "on-hold-livechat-room_description": "Lupa asettaa Omnichannel-huone pitoon", @@ -4330,7 +4329,6 @@ "Select_an_option": "Valitse vaihtoehto", "Select_at_least_one_user": "Valitse vähintään yksi käyttäjä", "Select_at_least_two_users": "Valitse vähintään kaksi käyttäjää", - "Share_Message": "Jaa viesti", "Select_department": "Valitse osasto", "Select_file": "Valitse tiedosto", "Select_role": "Valitse rooli", @@ -4338,7 +4336,6 @@ "Select_tag": "Valitse tunniste", "Select_the_channels_you_want_the_user_to_be_removed_from": "Valitse kanavat, joista käyttäjä halutaan poistaa", "Select_the_teams_channels_you_would_like_to_delete": "Valitse Tiimin kanavat Channel jotka haluat poistaa, ne, joita et valitse, siirretään työtilaan.", - "Select_atleast_one_channel_to_share_the_messsage": "Valitse vähintään yksi kanava viestin jakamista varten", "Select_user": "Valitse käyttäjä", "Select_users": "Valitse käyttäjät", "Selected_agents": "Valitut agentit", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json index 96a4880a3044..08641b831f94 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json @@ -2010,7 +2010,6 @@ "Generate_new_key": "Générer une nouvelle clé", "Generate_New_Link": "Générer un nouveau lien", "Generating_key": "Génération de la clé", - "Get_link": "Obtenir le lien", "get-password-policy-forbidRepeatingCharacters": "Le mot de passe ne doit pas contenir de caractères répétitifs", "get-password-policy-forbidRepeatingCharactersCount": "Le mot de passe ne doit pas contenir plus de {{forbidRepeatingCharactersCount}} caractères répétitifs", "get-password-policy-maxLength": "Le mot de passe doit comporter au maximum {{maxLength}} caractères", @@ -3174,6 +3173,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Clé de chiffrement (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Si cette clé est fournie, elle est utilisée pour chiffrer le jeton de l'utilisateur et le système externe doit déchiffrer les données pour accéder au jeton", "Omnichannel_External_Frame_URL": "URL du cadre externe", + "Omnichannel_Reports_Status_Open": "Ouvert", + "Omnichannel_Reports_Status_Closed": "Fermé", "On": "Activé", "On_Hold": "En attente", "On_Hold_Chats": "En attente", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/gl.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/gl.i18n.json index bac8e5c28aa3..5272cd9e1d3f 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/gl.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/gl.i18n.json @@ -226,6 +226,7 @@ "Offline_message": "Mensaxe fora de liña", "Offline_Message": "Mensaxe fora de liña", "Offline_messages": "Mensaxes fora de liña", + "Omnichannel_Reports_Status_Closed": "Pechado", "online": "en liña", "Online": "En liña", "Only_you_can_see_this_message": "So ti podes ver esta mensaxe", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/he.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/he.i18n.json index beefb3f030db..7f391aa806b4 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/he.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/he.i18n.json @@ -994,6 +994,8 @@ "Offline_message": "הודעה מנותקת", "Offline_success_message": "הודעת הצלחה מנותקת", "Offline_unavailable": "זמין מנותק", + "Omnichannel_Reports_Status_Open": "לִפְתוֹחַ", + "Omnichannel_Reports_Status_Closed": "סגור", "On": "פועל", "online": "זמין", "Online": "זמינים", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/hr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/hr.i18n.json index 8c11ff0d62b7..bbad485652d1 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/hr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/hr.i18n.json @@ -1964,6 +1964,8 @@ "Offline_success_message": "Izvanmrežna poruka uspjeha", "Offline_unavailable": "Nedostupnost izvanmrežnosti", "Older_than": "Stariji od", + "Omnichannel_Reports_Status_Open": "Otvori", + "Omnichannel_Reports_Status_Closed": "Zatvoreno", "On": "Uključeno", "online": "na liniji", "Online": "Online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json index 3fd57ecb9a7e..d939e8ad16bb 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json @@ -2213,7 +2213,6 @@ "Generate_new_key": "Új kulcs előállítása", "Generate_New_Link": "Új hivatkozás előállítása", "Generating_key": "Kulcs előállítása", - "Get_link": "Hivatkozás lekérése", "get-password-policy-forbidRepeatingCharacters": "A jelszó nem tartalmazhat ismétlődő karaktereket", "get-password-policy-forbidRepeatingCharactersCount": "A jelszó nem tartalmazhat több mint {{forbidRepeatingCharactersCount}} ismétlődő karaktert", "get-password-policy-maxLength": "A jelszónak legfeljebb {{maxLength}} karakter hosszúságúnak kell lennie", @@ -2489,7 +2488,6 @@ "Invalid_setting_s": "Érvénytelen beállítás: %s", "Invalid_two_factor_code": "Érvénytelen kétfaktoros kód", "Invalid_username": "A megadott felhasználónév érvénytelen", - "Invalid_JSON": "Érvénytelen JSON", "invisible": "láthatatlan", "Invisible": "Láthatatlan", "Invitation": "Meghívás", @@ -3485,6 +3483,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Titkosítási kulcs (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Ha meg van adva, akkor a megadott kulccsal titkosítja a felhasználó tokenjét, és a külső rendszernek vissza kell fejtenie az adatokat, hogy hozzáférjen a tokenhez.", "Omnichannel_External_Frame_URL": "Külső keret URL", + "Omnichannel_Reports_Status_Open": "Nyisd ki", + "Omnichannel_Reports_Status_Closed": "Zárva", "On": "Be", "on-hold-livechat-room": "Összcsatornás szoba várakoztatása", "on-hold-livechat-room_description": "Jogosultság az összcsatornás szoba várakoztatásához", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/id.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/id.i18n.json index ff9a52bddb49..4f78b268bcc8 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/id.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/id.i18n.json @@ -1839,6 +1839,8 @@ "Offline_success_message": "pesan sukses Offline", "Offline_unavailable": "Offline tidak tersedia", "Older_than": "Lebih tua dari", + "Omnichannel_Reports_Status_Open": "Buka", + "Omnichannel_Reports_Status_Closed": "Tutup", "On": "Di", "online": "on line", "Online": "Online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/it.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/it.i18n.json index b2da95a84e62..498c3ea4b5fc 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/it.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/it.i18n.json @@ -1246,7 +1246,6 @@ "Gaming": "Gaming", "General": "Generale", "Generate_New_Link": "Genera nuovo link", - "Get_link": "Ottieni link", "github_no_public_email": "Non hai un email publica sul tuo account GitHub", "Give_a_unique_name_for_the_custom_oauth": "Dai un nome univoco per l'OAuth personalizzato", "strike": "barrato", @@ -1900,6 +1899,8 @@ "Offline_success_message": "Messaggio di successo offline", "Offline_unavailable": "Offline non disponibile", "Older_than": "Più vecchio di", + "Omnichannel_Reports_Status_Open": "Aperto", + "Omnichannel_Reports_Status_Closed": "Chiuso", "On": "Accendi", "online": "in linea", "Online": "Online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json index 689bdf0a8216..0bf0eb5063ae 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json @@ -1992,7 +1992,6 @@ "Generate_new_key": "新しいキーを生成", "Generate_New_Link": "新しいリンクの生成", "Generating_key": "キーを生成中", - "Get_link": "リンクの取得", "get-password-policy-forbidRepeatingCharacters": "パスワードに繰り返し文字を含めないでください", "get-password-policy-forbidRepeatingCharactersCount": "パスワードに{{forbidRepeatingCharactersCount}}個を超える繰り返し文字を含めることはできません", "get-password-policy-maxLength": "パスワードは{{maxLength}}文字以内にする必要があります", @@ -3149,6 +3148,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "暗号化キー(JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "指定されている場合、提供されたキーでユーザーのトークンを暗号化します。また外部システムは、トークンにアクセスするためにデータを復号化する必要があります", "Omnichannel_External_Frame_URL": "外部フレームURL", + "Omnichannel_Reports_Status_Open": "開く", + "Omnichannel_Reports_Status_Closed": "閉鎖", "On": "オン", "On_Hold": "保留中", "On_Hold_Chats": "保留中", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ka-GE.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ka-GE.i18n.json index b9ab44fa5495..15514a726e5b 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ka-GE.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ka-GE.i18n.json @@ -1618,7 +1618,6 @@ "Generate_new_key": "შექმენით ახალი გასაღები", "Generate_New_Link": "შექმენით ახალი ბმული", "Generating_key": "გასაღების გენერაცია", - "Get_link": "მიიღეთ ბმული", "github_no_public_email": "თქვენ არ გაქვთ მითითებული საჯარო ელ.ფოსტა GitHub-თვის", "Give_a_unique_name_for_the_custom_oauth": "მიეცით უნიკალური სახელი ინდივიდუალურ oauth-ს ( ღია ავტორიზაცია)", "Give_the_application_a_name_This_will_be_seen_by_your_users": "დაარქვით აპლიკაციას სახელი.ეს ხილული იქნება თქვენთვის", @@ -2506,6 +2505,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "დაშიფვრის გასაღები(JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "გასაღების მოწოდების შემთხვევაში ეს დაშიფრავს მომხმარებლის ტოკენს და გარე სისტემებს მოუწევთ მონაცემების გაშიფვრა ტოკენის მისაღებად.", "Omnichannel_External_Frame_URL": "გარე ჩარჩოს ლინკი", + "Omnichannel_Reports_Status_Open": "გახსნა", + "Omnichannel_Reports_Status_Closed": "დახურულია", "On": "ჩართულია", "online": "ონლაინ", "Online": "ონლაინ", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/km.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/km.i18n.json index bc06b13a5749..376c4f51610a 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/km.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/km.i18n.json @@ -2138,6 +2138,8 @@ "Offline_unavailable": "មិនអាចប្រើបានក្រៅបណ្តាញ", "Old Colors": "ពណ៌ចាស់", "Older_than": "ចាស់​ជាង", + "Omnichannel_Reports_Status_Open": "បើកទូលាយ", + "Omnichannel_Reports_Status_Closed": "បិទ", "On": "បើក", "online": "អនឡាញ", "Online": "លើបណ្តាញ", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ko.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ko.i18n.json index 6cdbbf56113e..34f7608c9bed 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ko.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ko.i18n.json @@ -1763,7 +1763,6 @@ "Generate_new_key": "새 키 생성", "Generate_New_Link": "새 링크 생성", "Generating_key": "키 생성", - "Get_link": "링크 생성", "get-password-policy-forbidRepeatingCharacters": "비밀번호는 반복되는 문자를 포함하지 않아야합니다", "get-password-policy-forbidRepeatingCharactersCount": "비밀번호는 {{forbidRepeatingCharactersCount}} 반복 문자를 초과 할 수 없습니다", "get-password-policy-maxLength": "비밀번호는 최대 {{maxLength}} 자 여야합니다.", @@ -2720,6 +2719,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "암호화 키 (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "제공된 경우 제공된 키로 사용자토큰을 암호화해야하고, 외부 시스템은 토큰에 액세스하기 위해 데이터를 해독해야합니다.", "Omnichannel_External_Frame_URL": "외부 프레임 URL", + "Omnichannel_Reports_Status_Open": "열기", + "Omnichannel_Reports_Status_Closed": "종료", "On": "켜짐", "online": "온라인", "Online": "온라인", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ku.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ku.i18n.json index 4eaeac24e15a..8441a8a2fda8 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ku.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ku.i18n.json @@ -1826,6 +1826,8 @@ "Offline_success_message": "message serkeftina is offline", "Offline_unavailable": "Ne girêdayî ne amade ye", "Older_than": "Mezintirîn", + "Omnichannel_Reports_Status_Open": "Vekirî", + "Omnichannel_Reports_Status_Closed": "Girtî", "On": "Li", "online": "online", "Online": "bike", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/lo.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/lo.i18n.json index a62baae6717a..81c5ababade7 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/lo.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/lo.i18n.json @@ -1868,6 +1868,8 @@ "Offline_success_message": "ຂໍ້ຄວາມສໍາເລັດອອຟໄລ", "Offline_unavailable": "ບໍ່ສາມາດໃຊ້ອອຟໄລ", "Older_than": "ອາ​ຍຸ​ສູງ​ກວ່າ", + "Omnichannel_Reports_Status_Open": "ເປີດ", + "Omnichannel_Reports_Status_Closed": "ປິດ", "On": "ສຸດ", "online": "ອອນໄລນ໌", "Online": "ອອນໄລນ໌", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/lt.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/lt.i18n.json index 1d68a9db90c9..8d3e1c746860 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/lt.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/lt.i18n.json @@ -1886,6 +1886,8 @@ "Offline_success_message": "Sesijos neprisijungus pranešimas", "Offline_unavailable": "Atsijungęs nepasiekiamas", "Older_than": "Vyresni nei", + "Omnichannel_Reports_Status_Open": "Atidaryta", + "Omnichannel_Reports_Status_Closed": "Uždaryta", "On": "apie", "online": "prisijungęs", "Online": "Prisijungęs", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/lv.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/lv.i18n.json index de9ed7f71f81..e658e85d3b05 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/lv.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/lv.i18n.json @@ -1844,6 +1844,8 @@ "Offline_success_message": "Bezsaistes vēstule veiksmīga", "Offline_unavailable": "Bezsaiste nav pieejama", "Older_than": "Vecāki par", + "Omnichannel_Reports_Status_Open": "Atvērt", + "Omnichannel_Reports_Status_Closed": "Aizvērts", "On": "Ieslēgts", "online": "tiešsaistē", "Online": "Tiešsaistē", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/mn.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/mn.i18n.json index 75c1882c0313..c7959fc2a85c 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/mn.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/mn.i18n.json @@ -1826,6 +1826,8 @@ "Offline_success_message": "Оффлайн амжилттай зурвас", "Offline_unavailable": "Офлайн боломжгүй байна", "Older_than": "Аас дээш насны", + "Omnichannel_Reports_Status_Open": "Нээлттэй байна", + "Omnichannel_Reports_Status_Closed": "Хаалттай байна", "On": "Дээр", "online": "онлайн байна", "Online": "Онлайн", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ms-MY.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ms-MY.i18n.json index ae8be0bd18e1..dea066ead6fd 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ms-MY.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ms-MY.i18n.json @@ -1838,6 +1838,8 @@ "Offline_success_message": "mesej kejayaan Offline", "Offline_unavailable": "luar talian tidak tersedia", "Older_than": "Lebih tua daripada", + "Omnichannel_Reports_Status_Open": "Dibuka", + "Omnichannel_Reports_Status_Closed": "ditutup", "On": "Pada", "online": "dalam talian", "Online": "Dalam talian", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json index 5a4891a48f02..f611b39aebd4 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json @@ -2005,7 +2005,6 @@ "Generate_new_key": "Genereer een nieuwe sleutel", "Generate_New_Link": "Genereer een nieuwe link", "Generating_key": "Sleutel genereren", - "Get_link": "Link krijgen", "get-password-policy-forbidRepeatingCharacters": "Het wachtwoord mag geen herhalende tekens bevatten", "get-password-policy-forbidRepeatingCharactersCount": "Het wachtwoord mag niet meer dan {{forbidRepeatingCharactersCount}} herhalende tekens bevatten", "get-password-policy-maxLength": "Het wachtwoord mag maximaal {{maxLength}} tekens lang zijn", @@ -3167,6 +3166,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Versleutelingssleuten (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Indien verstrekt, versleutelt het het token van de gebruiker met de meegeleverde sleutel en moet het externe systeem de gegevens ontsleutelen om toegang te krijgen tot het token", "Omnichannel_External_Frame_URL": "URL van externe frame", + "Omnichannel_Reports_Status_Open": "Open", + "Omnichannel_Reports_Status_Closed": "Gesloten", "On": "Aan", "On_Hold": "In de wacht", "On_Hold_Chats": "On-hold", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/no.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/no.i18n.json index 4d148f582c36..1eb6c8ceb8bd 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/no.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/no.i18n.json @@ -1917,6 +1917,8 @@ "Offline_success_message": "Frakoblet suksessmelding", "Offline_unavailable": "Frakoblet utilgjengelig", "Older_than": "Eldre enn", + "Omnichannel_Reports_Status_Open": "Åpne", + "Omnichannel_Reports_Status_Closed": "Lukket", "On": "På", "online": "på nett", "Online": "på nett", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json index e30eaad0bb08..0c4b85e588e0 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json @@ -2180,7 +2180,6 @@ "Generate_new_key": "Wygeneruj nowy klucz", "Generate_New_Link": "Wygeneruj nowy link", "Generating_key": "Generowanie klucza", - "Get_link": "Skopiuj link", "get-password-policy-forbidRepeatingCharacters": "Hasło nie powinno zawierać powtarzających się znaków", "get-password-policy-forbidRepeatingCharactersCount": "Hasło nie powinno zawierać więcej niż {{forbidRepeatingCharactersCount}} powtarzających się znaków", "get-password-policy-maxLength": "Hasło powinno mieć maksymalną długość {{maxLength}} znaków", @@ -2453,7 +2452,6 @@ "Invalid_setting_s": "Nieprawidłowe ustawienie: %s", "Invalid_two_factor_code": "Nieprawidłowy kod dwuskładnikowy", "Invalid_username": "Wprowadzona nazwa użytkownika jest nieprawidłowa", - "Invalid_JSON": "Nieprawidłowy JSON", "invisible": "niewidoczny", "Invisible": "Niewidoczny", "Invitation": "Zaproszenie", @@ -3425,6 +3423,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Klucz szyfrujący (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Jeśli podane, szyfruje on token użytkownika dostarczonym kluczem, a zewnętrzny system będzie musiał odszyfrować dane, aby uzyskać dostęp do tokena", "Omnichannel_External_Frame_URL": "Adres URL zewnętrznej ramki", + "Omnichannel_Reports_Status_Open": "Otwarty", + "Omnichannel_Reports_Status_Closed": "Zamknięty", "On": "Na", "on-hold-livechat-room": "Wstrzymaj Omnichannel RoomRoom", "on-hold-livechat-room_description": "Pozwolenie na wstrzymanie omnichannel roomu", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index 931bb7bda467..de5c2356a6b9 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -5,13 +5,13 @@ "__count__empty_rooms_will_be_removed_automatically__rooms__": "{{count}} salas vazias serão removidas automaticamente:
{{rooms}}.", "__count__message_pruned": "{{count}} mensagem apagada", "__count__message_pruned_plural": "{{count}} mensagens apagadas", + "__count__conversations__period__": "{{count}} conversas, {{period}}", + "__count__tags__and__count__conversations__period__": "{{count}} tags e {{conversations}} conversas, {{period}}", + "__departments__departments_and__count__conversations__period__": "{{departments}} departmentos e {{count}} conversas, {{period}}", "__usersCount__member_joined_plural": "+ {{usersCount}} membros entraram", "__usersCount__people_will_be_invited": "{{usersCount}} usuários vão ser convidados", "__username__is_no_longer__role__defined_by__user_by_": "{{username}} não pertence mais a {{role}}, por {{user_by}}", "__username__was_set__role__by__user_by_": "{{username}} foi definido como {{role}} por {{user_by}}", - "__count__conversations__period__": "{{count}} conversas, {{period}}", - "__count__tags__and__count__conversations__period__": "{{count}} tags e {{conversations}} conversas, {{period}}", - "__departments__departments_and__count__conversations__period__": "{{departments}} departmentos e {{count}} conversas, {{period}}", "__count__without__department__": "{{count}} sem departamento", "__count__without__tags__": "{{count}} sem tags", "__count__without__assignee__": "{{count}} sem responsável", @@ -993,11 +993,6 @@ "conversation_with_s": "a conversa com %s", "Conversations": "Conversas", "Conversations_per_day": "Conversas por dia", - "Conversations_by_agents": "Conversas por agente", - "Conversations_by_channel": "Conversar por canal", - "Conversations_by_department": "Conversas por departamento", - "Conversations_by_status": "Conversas por status", - "Conversations_by_tag": "Conversas por tag", "Convert": "Converter", "Convert_Ascii_Emojis": "Converter ASCII em emoji", "Convert_to_channel": "Converter em canal", @@ -2053,7 +2048,6 @@ "Generate_new_key": "Gerar uma nova chave", "Generate_New_Link": "Gerar novo link", "Generating_key": "Gerando chave", - "Get_link": "Obter link", "get-password-policy-forbidRepeatingCharacters": "A senha não deve conter caracteres repetidos", "get-password-policy-forbidRepeatingCharactersCount": "A senha não deve conter mais de {{forbidRepeatingCharactersCount}} caracteres repetidos", "get-password-policy-maxLength": "A senha deve ter no máximo {{maxLength}} caracteres", @@ -4965,10 +4959,15 @@ "onboarding.form.standaloneServerForm.servicesUnavailable": "Alguns dos serviços estarão indisponíveis ou precisarão de configuração manual", "onboarding.form.standaloneServerForm.publishOwnApp": "Para enviar notificações de push, você precisará compilar e publicar seu próprio aplicativo no Google Play e App Store", "onboarding.form.standaloneServerForm.manuallyIntegrate": "É necessário integrar manualmente com serviços externos", + "Conversations_by_agents": "Conversas por agente", + "Conversations_by_channel": "Conversar por canal", + "Conversations_by_department": "Conversas por departamento", + "Conversations_by_status": "Conversas por status", + "Conversations_by_tag": "Conversas por tag", "Awaiting_confirmation": "Aguardando confirmação", "RegisterWorkspace_Features_MobileNotifications_Title": "Notificações push móveis", "RegisterWorkspace_Features_Marketplace_Title": "Marketplace", "RegisterWorkspace_Features_Omnichannel_Title": "Omnichannel", "RegisterWorkspace_Setup_Label": "E-mail da conta da nuvem", "cloud.RegisterWorkspace_Setup_Terms_Privacy": "Eu concordo com os <1>Termos e condições e a <3>Política de privacidade" -} +} \ No newline at end of file diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pt.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pt.i18n.json index 0d87a6512f51..e31b0d86bb0f 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pt.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pt.i18n.json @@ -1429,7 +1429,6 @@ "Full_Screen": "Tela cheia", "Gaming": "Jogos", "General": "Geral", - "Get_link": "Obter Ligação", "github_no_public_email": "Não possui um e-mail público na sua conta GitHub", "Give_a_unique_name_for_the_custom_oauth": "Dê um nome exclusivo para o oauth customizado", "strike": "tachado", @@ -2134,6 +2133,8 @@ "Old Colors": "Cores antigas", "Old Colors (minor)": "Cores antigas (menores)", "Older_than": "Mais velho que", + "Omnichannel_Reports_Status_Open": "Aberto", + "Omnichannel_Reports_Status_Closed": "Encerrado", "On": "Ligar", "online": "ligado", "Online": "Ligado", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ro.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ro.i18n.json index d7a84c0d5367..9f1326ebca11 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ro.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ro.i18n.json @@ -1830,6 +1830,8 @@ "Offline_success_message": "Mesajul de succes offline", "Offline_unavailable": "offline nu sunt disponibile", "Older_than": "Mai vechi de", + "Omnichannel_Reports_Status_Open": "Deschis", + "Omnichannel_Reports_Status_Closed": "Închis", "On": "Pe", "online": "pe net", "Online": "Activ", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json index bf4713cf7bb5..8f71b6f49ab2 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json @@ -2147,7 +2147,6 @@ "Generate_new_key": "Сгенерировать новый ключ", "Generate_New_Link": "Сгенерировать новую ссылку", "Generating_key": "Генерация ключа", - "Get_link": "Получить ссылку", "get-password-policy-forbidRepeatingCharacters": "Пароль не может содержать повторяющихся символов подряд", "get-password-policy-forbidRepeatingCharactersCount": "Пароль не должен содержать более {{forbidRepeatingCharactersCount}} повторяющихся символов в пароле", "get-password-policy-maxLength": "Пароль должен быть максимум {{maxLength}} символов длиной", @@ -3324,6 +3323,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "Ключ шифрования (JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "Если это предусмотрено, то токен пользователя будет зашифрован с помощью предоставленного ключа, и внешняя система должна будет расшифровать данные, чтобы получить доступ к токену", "Omnichannel_External_Frame_URL": "URL-адрес внешнего фрейма", + "Omnichannel_Reports_Status_Open": "Открыть", + "Omnichannel_Reports_Status_Closed": "Закрыто", "On": "Включено", "On_Hold": "На удержании", "On_Hold_Chats": "На удержании", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sk-SK.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sk-SK.i18n.json index 881d6dfc7016..dd4830288374 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sk-SK.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sk-SK.i18n.json @@ -1840,6 +1840,8 @@ "Offline_success_message": "Správa o úspechu offline", "Offline_unavailable": "Offline nie je k dispozícii", "Older_than": "Starší než", + "Omnichannel_Reports_Status_Open": "OTVORENÉ", + "Omnichannel_Reports_Status_Closed": "ZATVORENÉ", "On": "na", "online": "on-line", "Online": "online", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sl-SI.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sl-SI.i18n.json index 4655855136ae..fb52e11295fe 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sl-SI.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sl-SI.i18n.json @@ -1820,6 +1820,8 @@ "Offline_success_message": "Sporočilo o uspehu ob nedosegljivosti", "Offline_unavailable": "Nedosegljivo stanje ni na voljo", "Older_than": "Starejša od", + "Omnichannel_Reports_Status_Open": "Odpri", + "Omnichannel_Reports_Status_Closed": "Zaprto", "On": "Vklop", "online": "na spletu", "Online": "Dosegljiv", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sq.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sq.i18n.json index 9e95d7d2e600..fdb85c4fe51b 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sq.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sq.i18n.json @@ -1830,6 +1830,8 @@ "Offline_success_message": "Mesazhi Offline sukses", "Offline_unavailable": "Offline padisponueshëm", "Older_than": "Më të vjetër se", + "Omnichannel_Reports_Status_Open": "hapur", + "Omnichannel_Reports_Status_Closed": "Mbyllur", "On": "në", "online": "Online", "Online": "Në linjë", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sr.i18n.json index e86375f295fd..73a4e9f57c4e 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sr.i18n.json @@ -1669,6 +1669,8 @@ "Offline_success_message": "Оффлине успех порука", "Offline_unavailable": "оффлине недоступан", "Older_than": "Старији од", + "Omnichannel_Reports_Status_Open": "Отвори", + "Omnichannel_Reports_Status_Closed": "Затворено", "On": "на", "online": "на мрежи", "Online": "На мрежи", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json index e111ab9c3e42..35792cce086a 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json @@ -2292,7 +2292,6 @@ "Generate_new_key": "Generera en ny nyckel", "Generate_New_Link": "Generera en ny länk", "Generating_key": "Genererar nyckel", - "Get_link": "Kopiera länk", "get-password-policy-forbidRepeatingCharacters": "Lösenordet får inte innehålla samma tecken fler än en gång", "get-password-policy-forbidRepeatingCharactersCount": "Lösenordet får inte innehålla fler än {{forbidRepeatingCharactersCount}} upprepade tecken", "get-password-policy-maxLength": "Lösenordet får bestå av högst {{maxLength}} tecken", @@ -2579,7 +2578,6 @@ "Invalid_setting_s": "Ogiltig inställning: %s", "Invalid_two_factor_code": "Ogiltig tvåfaktorkod", "Invalid_username": "Inloggningsnamnet är ogiltigt", - "Invalid_JSON": "Ogiltig JSON", "invisible": "osynlig", "Invisible": "Osynlig", "Invitation": "Inbjudan", @@ -3270,7 +3268,6 @@ "Message_has_been_edited_by": "Meddelandet har redigerats av {{username}}", "Message_has_been_edited_by_at": "Meddelandet redigerades av {{username}} den {{date}}", "Message_has_been_pinned": "Meddelandet har fästs", - "Message_has_been_shared": "Meddelandet har delats", "Message_has_been_starred": "Meddelandet har stjärnmarkerats", "Message_has_been_unpinned": "Meddelandet har lossats", "Message_has_been_unstarred": "Meddelandets stjärnmarkeringar har tagits bort", @@ -3625,6 +3622,8 @@ "omnichannel_sla_change_history": "SLA-policyn har ändrats: {{user}} har ändrat SLA-policy till {{sla}}", "Omnichannel_enable_department_removal": "Aktivera borttagning av avdelningar", "Omnichannel_enable_department_removal_alert": "Avdelningar som tagits bort kan inte återställas, vi rekommenderar att du istället arkiverar avdelningen.", + "Omnichannel_Reports_Status_Open": "Öppna", + "Omnichannel_Reports_Status_Closed": "Stängd", "On": "På", "on-hold-livechat-room": "Parkera Omnichannel-rum", "on-hold-livechat-room_description": "Behörighet att parkera Omnichannel-rum", @@ -4335,7 +4334,6 @@ "Select_an_option": "Välj ett alternativ", "Select_at_least_one_user": "Välj åtminstone en användare", "Select_at_least_two_users": "Välj åtminstone två användare", - "Share_Message": "Dela meddelande", "Select_department": "Välj en avdelning", "Select_file": "Välj fil", "Select_role": "Välj en roll", @@ -4343,7 +4341,6 @@ "Select_tag": "Välj en tagg", "Select_the_channels_you_want_the_user_to_be_removed_from": "Välj de kanaler du vill ta bort användaren från", "Select_the_teams_channels_you_would_like_to_delete": "Välj de teamkanaler du vill ta bort. De du inte väljer flyttas till arbetsytan.", - "Select_atleast_one_channel_to_share_the_messsage": "Välj minst en kanal för att dela meddelandet", "Select_user": "Välj användare", "Select_users": "Välj användare", "Selected_agents": "Utvalda agenter", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ta-IN.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ta-IN.i18n.json index 87ea611e9dc8..b1d003f0f85c 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ta-IN.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ta-IN.i18n.json @@ -1831,6 +1831,8 @@ "Offline_success_message": "ஆஃப்லைன் வெற்றி செய்தியை", "Offline_unavailable": "ஆஃப்லைனில் கிடையாது", "Older_than": "விட பழைய", + "Omnichannel_Reports_Status_Open": "திறந்த", + "Omnichannel_Reports_Status_Closed": "மூடப்பட்ட", "On": "மீது", "online": "ஆன்லைன்", "Online": "ஆன்லைன்", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/th-TH.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/th-TH.i18n.json index a57b7da81f20..21b9d0e62439 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/th-TH.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/th-TH.i18n.json @@ -1824,6 +1824,8 @@ "Offline_success_message": "ข้อความความสำเร็จออฟไลน์", "Offline_unavailable": "ไม่มีออฟไลน์", "Older_than": "เก่ากว่า", + "Omnichannel_Reports_Status_Open": "เปิด", + "Omnichannel_Reports_Status_Closed": "ปิด", "On": "บน", "online": "ออนไลน์", "Online": "ออนไลน์", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/tr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/tr.i18n.json index 24b5ef7f7b00..77bad5262630 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/tr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/tr.i18n.json @@ -1451,7 +1451,6 @@ "Gaming": "Oyun", "General": "Genel", "Generate_New_Link": "Yeni Bağlantı Oluştur", - "Get_link": "Bağlantıyı Al", "github_no_public_email": "Sen GitHub hesabınızda kamu e-posta olarak herhangi bir e-posta yok", "Give_a_unique_name_for_the_custom_oauth": "Özel OAuth için benzersiz bir ad verin", "strike": "üstü çizili", @@ -2191,6 +2190,8 @@ "Old Colors (minor)": "Eski Renkler (küçük)", "Older_than": "Daha eski", "Omnichannel": "Çoklu Kanal", + "Omnichannel_Reports_Status_Open": "Aç", + "Omnichannel_Reports_Status_Closed": "Kapalı", "On": "Açık", "online": "çevrimiçi", "Online": "Çevrimiçi", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ug.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ug.i18n.json index 4c8759aad52c..e8838c82a80e 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ug.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ug.i18n.json @@ -770,6 +770,8 @@ "Offline_message": "تورسىز ئۇچۇر", "Offline_success_message": "ئۇتۇقلۇق تورسىز بولغان ئۇچۇر", "Offline_unavailable": "تورسىز ئىشلەتكىلى بولمايدۇ", + "Omnichannel_Reports_Status_Open": "ئېچىل", + "Omnichannel_Reports_Status_Closed": "ئاخىرلاشتى", "Online": "توردا", "Only_you_can_see_this_message": "پەقەت سىزلا بۇ ئۇچۇرنى كۆرەلەيسىز", "Oops!": "ئاپلا", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/uk.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/uk.i18n.json index 220552fce279..43f5ecab66a4 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/uk.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/uk.i18n.json @@ -1589,7 +1589,6 @@ "Gaming": "Ігри", "General": "Загальні", "Generate_New_Link": "Створити нове посилання", - "Get_link": "Отримати посилання", "github_no_public_email": "У Вашому обліковому записі GitHub, відсутній публічний e-mail", "Give_a_unique_name_for_the_custom_oauth": "Дайте унікальне ім'я для призначеного користувача OAuth", "strike": "страйк", @@ -2349,6 +2348,8 @@ "Offline_success_message": "Немає повідомлення про успішне виконання", "Offline_unavailable": "Offline недоступний", "Older_than": "Старше", + "Omnichannel_Reports_Status_Open": "відкритий", + "Omnichannel_Reports_Status_Closed": "Закрито", "On": "на", "online": "онлайн", "Online": "Онлайн", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/vi-VN.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/vi-VN.i18n.json index 9f4e82a71173..044baaa73720 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/vi-VN.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/vi-VN.i18n.json @@ -1931,6 +1931,8 @@ "Offline_success_message": "Tin nhắn ngoại tuyến thành công", "Offline_unavailable": "Không khả dụng ngoại tuyến", "Older_than": "Lớn tuổi hơn", + "Omnichannel_Reports_Status_Open": "Mở", + "Omnichannel_Reports_Status_Closed": "Đóng", "On": "Trên", "online": "Trực tuyến", "Online": "Trực tuyến", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/zh-HK.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/zh-HK.i18n.json index d2295fedf80d..18c3d1f9548e 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/zh-HK.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/zh-HK.i18n.json @@ -1855,6 +1855,8 @@ "Offline_success_message": "离线成功消息", "Offline_unavailable": "离线不可用", "Older_than": "年长过", + "Omnichannel_Reports_Status_Open": "开放", + "Omnichannel_Reports_Status_Closed": "关闭", "On": "上", "online": "在线", "Online": "在线", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json index fef07d94e499..5ad5c0eb1d2b 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json @@ -1971,7 +1971,6 @@ "Generate_new_key": "產生新的金鑰", "Generate_New_Link": "產生新的連接", "Generating_key": "產生金鑰中", - "Get_link": "取得連結", "get-password-policy-forbidRepeatingCharacters": "密碼不應包含重複字元", "get-password-policy-forbidRepeatingCharactersCount": "密碼中不得包含 {{forbidRepeatingCharactersCount}} 個重複字元", "get-password-policy-maxLength": "密碼長度不得超過 {{maxLength}} 個字元", @@ -3088,6 +3087,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "加密金鑰(JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "如果提供,它將使用提供的金鑰加密使用者的token,並且外部系統將需要解密資料以存取token", "Omnichannel_External_Frame_URL": "外部框架網址", + "Omnichannel_Reports_Status_Open": "打開", + "Omnichannel_Reports_Status_Closed": "已關閉", "On": "在", "On_Hold": "保留", "On_Hold_conversations": "保持對話", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/zh.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/zh.i18n.json index 8b08aa0c1489..df4642f4b0df 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/zh.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/zh.i18n.json @@ -1795,7 +1795,6 @@ "Generate_new_key": "生成新钥", "Generate_New_Link": "产生新链接", "Generating_key": "生成钥", - "Get_link": "获取链接", "get-password-policy-forbidRepeatingCharacters": "密码不应包含重复的字符", "get-password-policy-forbidRepeatingCharactersCount": "密码不应包含多于 {{forbidRepeatingCharactersCount}} 个重复的字符", "get-password-policy-maxLength": "密码长度最大不应超过 {{maxLength}} ", @@ -2779,6 +2778,8 @@ "Omnichannel_External_Frame_Encryption_JWK": "加密密钥(JWK)", "Omnichannel_External_Frame_Encryption_JWK_Description": "如提供则会使用提供的密钥加密用户的令牌,外部系统需要对数据进行解密才能使用令牌", "Omnichannel_External_Frame_URL": "外部框架 URL", + "Omnichannel_Reports_Status_Open": "打开", + "Omnichannel_Reports_Status_Closed": "已关闭", "On": "打开", "online": "在线", "Online": "在线", From 212ad923ffe1cff57343e1f039c78d89b3d22483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlia=20Jaeger=20Foresti?= <60678893+juliajforesti@users.noreply.github.com> Date: Tue, 5 Sep 2023 16:52:48 -0300 Subject: [PATCH 036/115] regression: Thread badge click-animation (#30275) --- apps/meteor/tests/e2e/administration.spec.ts | 6 ++ .../fragments/admin-flextab-users.ts | 8 +- .../meteor/tests/e2e/user-invitations.spec.ts | 24 ------ .../HeaderToolboxActionBadge.tsx | 2 + yarn.lock | 86 +++++++++---------- 5 files changed, 55 insertions(+), 71 deletions(-) delete mode 100644 apps/meteor/tests/e2e/user-invitations.spec.ts diff --git a/apps/meteor/tests/e2e/administration.spec.ts b/apps/meteor/tests/e2e/administration.spec.ts index 91130728e20c..5a47a77bba99 100644 --- a/apps/meteor/tests/e2e/administration.spec.ts +++ b/apps/meteor/tests/e2e/administration.spec.ts @@ -47,6 +47,12 @@ test.describe.parallel('administration', () => { await expect(poAdmin.tabs.users.userRole).toBeVisible(); await poAdmin.tabs.users.btnSave.click(); }); + + test('expect SMTP setup warning and routing to email settings', async ({ page }) => { + await poAdmin.tabs.users.btnInvite.click(); + await poAdmin.tabs.users.setupSmtpLink.click(); + await expect(page).toHaveURL('/admin/settings/Email'); + }); }); test.describe('Rooms', () => { diff --git a/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-users.ts b/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-users.ts index f4b5104a9a84..bd46de6ea00f 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-users.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/admin-flextab-users.ts @@ -15,6 +15,10 @@ export class AdminFlextabUsers { return this.page.locator('role=button[name="Save"]'); } + get btnInvite(): Locator { + return this.page.locator('role=button[name="Invite"]'); + } + get inputName(): Locator { return this.page.locator('//label[text()="Name"]/following-sibling::span//input'); } @@ -44,10 +48,6 @@ export class AdminFlextabUsers { await this.page.locator(`li[value=${role}]`).click(); } - get inviteUsersTitle(): Locator { - return this.page.locator('aside >> text="Invite Members"'); - } - get setupSmtpLink(): Locator { return this.page.locator('role=link[name="Set up SMTP"]') } diff --git a/apps/meteor/tests/e2e/user-invitations.spec.ts b/apps/meteor/tests/e2e/user-invitations.spec.ts deleted file mode 100644 index 4bcdf82d6f43..000000000000 --- a/apps/meteor/tests/e2e/user-invitations.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Users } from './fixtures/userStates'; -import { Admin } from './page-objects'; -import { test, expect } from './utils/test'; - -test.use({ storageState: Users.admin.state }); - -test.describe.serial('user-invites', () => { - let poAdmin: Admin; - - test.beforeEach(async ({ page }) => { - poAdmin = new Admin(page); - await page.goto('/admin/users/invite'); - - await expect(poAdmin.tabs.users.inviteUsersTitle).toBeVisible(); - }); - - test('expect SMTP setup warning and routing to email settings', async ({ page }) => { - await expect(poAdmin.tabs.users.setupSmtpLink).toBeVisible(); - - await poAdmin.tabs.users.setupSmtpLink.click(); - - await expect(page).toHaveURL('/admin/settings/Email'); - }); -}); diff --git a/packages/ui-client/src/components/Header/HeaderToolbox/HeaderToolboxActionBadge.tsx b/packages/ui-client/src/components/Header/HeaderToolbox/HeaderToolboxActionBadge.tsx index c05cc3341816..d8da9762de9c 100644 --- a/packages/ui-client/src/components/Header/HeaderToolbox/HeaderToolboxActionBadge.tsx +++ b/packages/ui-client/src/components/Header/HeaderToolbox/HeaderToolboxActionBadge.tsx @@ -5,10 +5,12 @@ import type { ComponentProps, FC } from 'react'; const HeaderToolboxActionBadge: FC> = (props) => ( diff --git a/yarn.lock b/yarn.lock index d14adeed87af..68ef61bc51eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7917,16 +7917,16 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/css-in-js@npm:~0.31.26-dev.18": - version: 0.31.26-dev.18 - resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.18" +"@rocket.chat/css-in-js@npm:~0.31.26-dev.20": + version: 0.31.26-dev.20 + resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.20" dependencies: "@emotion/hash": ^0.9.0 - "@rocket.chat/css-supports": ~0.31.26-dev.18 - "@rocket.chat/memo": ~0.31.26-dev.18 - "@rocket.chat/stylis-logical-props-middleware": ~0.31.26-dev.18 + "@rocket.chat/css-supports": ~0.31.26-dev.20 + "@rocket.chat/memo": ~0.31.26-dev.20 + "@rocket.chat/stylis-logical-props-middleware": ~0.31.26-dev.20 stylis: ~4.1.3 - checksum: 1b4190a2463a0fb9e60c588383951d10aa0d7b501855dd6340ffcc6f1af116c93b3370e9acf03724151a59a53c6f5a111678a3454b23e8fed04a1843ebb31331 + checksum: 0898cc5e6493c67db0623d73896f07e035639d1714942fb7cd28ccf2f050f5e0f6742d75e91ab746b8745524bac86e367e3bec08baf815515a0759673e4d270d languageName: node linkType: hard @@ -7943,12 +7943,12 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/css-supports@npm:~0.31.26-dev.18": - version: 0.31.26-dev.18 - resolution: "@rocket.chat/css-supports@npm:0.31.26-dev.18" +"@rocket.chat/css-supports@npm:~0.31.26-dev.20": + version: 0.31.26-dev.20 + resolution: "@rocket.chat/css-supports@npm:0.31.26-dev.20" dependencies: - "@rocket.chat/memo": ~0.31.26-dev.18 - checksum: 08fe45007b8edaa7a0baedfec0434dab51aa240e20c01f6762906b0841d7871aa5b9a1d91abb0dd0fcf7779b93067d6e6a67f31a59759bf178067c1d660670a2 + "@rocket.chat/memo": ~0.31.26-dev.20 + checksum: 6e123c782288e3dbf18e7c54aabac254d8d041d1592dc08e758519ae1bf54ed33f92ce9b08a47e31b0d5315df7a260cba78fca02ed6c3fd0992405559821bc6a languageName: node linkType: hard @@ -8173,10 +8173,10 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/fuselage-tokens@npm:~0.32.0-dev.378": - version: 0.32.0-dev.378 - resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.378" - checksum: 2db23b7c013c3a1c290f0a663305dd9d3db4a8bd49b22fde8d17abf411c673f22147599d427595731380021649e125d410dc15e9b6e384530238688240630a64 +"@rocket.chat/fuselage-tokens@npm:~0.32.0-dev.380": + version: 0.32.0-dev.380 + resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.380" + checksum: b1300376eafba878a07e7c3ae2d434f38b7388bc5fe2d1fa3d87d3e9513f426b1734ec0d4aaa05cfa70c01a1d6ca3bb06119145f812a00b64d1da9ca5bf17845 languageName: node linkType: hard @@ -8236,14 +8236,14 @@ __metadata: linkType: soft "@rocket.chat/fuselage@npm:next": - version: 0.32.0-dev.428 - resolution: "@rocket.chat/fuselage@npm:0.32.0-dev.428" - dependencies: - "@rocket.chat/css-in-js": ~0.31.26-dev.18 - "@rocket.chat/css-supports": ~0.31.26-dev.18 - "@rocket.chat/fuselage-tokens": ~0.32.0-dev.378 - "@rocket.chat/memo": ~0.31.26-dev.18 - "@rocket.chat/styled": ~0.31.26-dev.18 + version: 0.32.0-dev.430 + resolution: "@rocket.chat/fuselage@npm:0.32.0-dev.430" + dependencies: + "@rocket.chat/css-in-js": ~0.31.26-dev.20 + "@rocket.chat/css-supports": ~0.31.26-dev.20 + "@rocket.chat/fuselage-tokens": ~0.32.0-dev.380 + "@rocket.chat/memo": ~0.31.26-dev.20 + "@rocket.chat/styled": ~0.31.26-dev.20 invariant: ^2.2.4 react-aria: ~3.23.1 react-keyed-flatten-children: ^1.3.0 @@ -8255,7 +8255,7 @@ __metadata: react: ^17.0.2 react-dom: ^17.0.2 react-virtuoso: 1.2.4 - checksum: 7f39b64138d77fb9956f821f0a3c638fee38d1f66f1cf243983eed7683ca442096b76ec09bf282fe6f9caf4c6fbab0b38b3fe6310f0fcbc9afd1f09d39f95cf3 + checksum: 5b09c6d0fac32e7b353891c898e1e3ba929af9b8fd9b2d41de9d0e1e1d17cc04101b713934dd59a58a09a301673a1299a688d017e9c86db28a65aeb6d1b1e32e languageName: node linkType: hard @@ -8513,10 +8513,10 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/memo@npm:~0.31.26-dev.18": - version: 0.31.26-dev.18 - resolution: "@rocket.chat/memo@npm:0.31.26-dev.18" - checksum: c3006dc08e1f3e5e1ac95cc23f52a4d5445971c5dbb985023128a7e4f8e929913a5103d4c4b7fdbd2848b1982a32440dc64f3894caaa293c774232160fbe4b71 +"@rocket.chat/memo@npm:~0.31.26-dev.20": + version: 0.31.26-dev.20 + resolution: "@rocket.chat/memo@npm:0.31.26-dev.20" + checksum: 72db6d791028eaff24533c29f633f5abcaa33b78d335c3a04af6baef4b102c912b7176a43ab8a8886c2b49513a892d7da0c4b28620dfd43e867c0c5e06730897 languageName: node linkType: hard @@ -9358,15 +9358,6 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/styled@npm:~0.31.26-dev.18": - version: 0.31.26-dev.18 - resolution: "@rocket.chat/styled@npm:0.31.26-dev.18" - dependencies: - "@rocket.chat/css-in-js": ~0.31.26-dev.18 - checksum: 54ede68d3ab24aa0a685bc55148e52a7e17e394d5f16f7114df64633733ca3c9fd39ba30036065ca16636cff6ef9c045a2a82024c0597d9864e77d49e1e56636 - languageName: node - linkType: hard - "@rocket.chat/styled@npm:~0.31.26-dev.2": version: 0.31.26-dev.7 resolution: "@rocket.chat/styled@npm:0.31.26-dev.7" @@ -9376,14 +9367,23 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/stylis-logical-props-middleware@npm:~0.31.26-dev.18": - version: 0.31.26-dev.18 - resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.26-dev.18" +"@rocket.chat/styled@npm:~0.31.26-dev.20": + version: 0.31.26-dev.20 + resolution: "@rocket.chat/styled@npm:0.31.26-dev.20" + dependencies: + "@rocket.chat/css-in-js": ~0.31.26-dev.20 + checksum: 6e068f46b81681ecca4c0d4ca9f1d207948d1f50cc49edc059573d66093aa1bab303d720d04dc59f48fa6044ed4bf71e336b0ef261d84b84e28b85f4596a3508 + languageName: node + linkType: hard + +"@rocket.chat/stylis-logical-props-middleware@npm:~0.31.26-dev.20": + version: 0.31.26-dev.20 + resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.26-dev.20" dependencies: - "@rocket.chat/css-supports": ~0.31.26-dev.18 + "@rocket.chat/css-supports": ~0.31.26-dev.20 peerDependencies: stylis: 4.0.10 - checksum: 5dd4b4d242d568549c6f2dfd8c0ef85d605176b05214d85f3bbd48f648836a287a404d8e44647e383400232f599e80ba34da377af9d960f452f8716489f862f6 + checksum: 917b96f677478bf9b6e0b553b59019f28bdbedcb18e5e61fffc73631c003ecadc4ac81c370d4205c6553638e88f6dfff49f70e6bf3e192283e8b5e10e912b54c languageName: node linkType: hard From db919f9b23b81c13b653303faab5500cc8a2564e Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Tue, 5 Sep 2023 20:13:30 +0000 Subject: [PATCH 037/115] Bump 6.3.4 --- .changeset/bump-patch-1693944810152.md | 5 +++++ yarn.lock | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/bump-patch-1693944810152.md diff --git a/.changeset/bump-patch-1693944810152.md b/.changeset/bump-patch-1693944810152.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1693944810152.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/yarn.lock b/yarn.lock index 251222652634..95498d62f3b3 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.2 + "@rocket.chat/ui-contexts": 1.0.3 "@rocket.chat/ui-kit": "*" - "@rocket.chat/ui-video-conf": 1.0.2 + "@rocket.chat/ui-video-conf": 1.0.3 "@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.2 + "@rocket.chat/core-typings": 6.3.3 "@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.2 - "@rocket.chat/ui-contexts": 1.0.2 + "@rocket.chat/ui-client": 1.0.3 + "@rocket.chat/ui-contexts": 1.0.3 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.2 + "@rocket.chat/ui-contexts": 1.0.3 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.2 + "@rocket.chat/ui-contexts": 1.0.3 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.2 + "@rocket.chat/ui-contexts": 1.0.3 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" From ebeb088441777a3c32bba0d4d50a048e3e9f5b8c Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Mon, 4 Sep 2023 13:33:57 -0600 Subject: [PATCH 038/115] fix: Prevent `RoomProvider.useEffect` from subscribing multiple times (#30273) --- .changeset/forty-hotels-pretend.md | 5 +++++ .../views/room/providers/RoomProvider.tsx | 22 ++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 .changeset/forty-hotels-pretend.md diff --git a/.changeset/forty-hotels-pretend.md b/.changeset/forty-hotels-pretend.md new file mode 100644 index 000000000000..b23825d5a02a --- /dev/null +++ b/.changeset/forty-hotels-pretend.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fix: Prevent `RoomProvider.useEffect` from subscribing to room-data stream multiple times diff --git a/apps/meteor/client/views/room/providers/RoomProvider.tsx b/apps/meteor/client/views/room/providers/RoomProvider.tsx index b2935f4702ea..20da5194895f 100644 --- a/apps/meteor/client/views/room/providers/RoomProvider.tsx +++ b/apps/meteor/client/views/room/providers/RoomProvider.tsx @@ -1,5 +1,4 @@ import type { IRoom } from '@rocket.chat/core-typings'; -import { isOmnichannelRoom } from '@rocket.chat/core-typings'; import { usePermission, useStream, useUserId, useRouter } from '@rocket.chat/ui-contexts'; import { useQueryClient } from '@tanstack/react-query'; import type { ReactNode, ContextType, ReactElement } from 'react'; @@ -36,17 +35,18 @@ const RoomProvider = ({ rid, children }: RoomProviderProps): ReactElement => { const queryClient = useQueryClient(); const userId = useUserId(); const isLivechatAdmin = usePermission('view-livechat-rooms'); + const { t: roomType } = room ?? {}; // TODO: move this to omnichannel context only useEffect(() => { - if (!room || !isOmnichannelRoom(room)) { + if (roomType !== 'l') { return; } return subscribeToRoom(rid, (room) => { queryClient.setQueryData(['rooms', rid], room); }); - }, [subscribeToRoom, rid, queryClient, room]); + }, [subscribeToRoom, rid, queryClient, roomType]); // TODO: the following effect is a workaround while we don't have a general and definitive solution for it const router = useRouter(); @@ -56,19 +56,21 @@ const RoomProvider = ({ rid, children }: RoomProviderProps): ReactElement => { } }, [isSuccess, room, router]); + const { _id: servedById } = room?.servedBy ?? {}; + // TODO: Review the necessity of this effect when we move away from cached collections useEffect(() => { - if (!room || !isOmnichannelRoom(room) || !room.servedBy) { + if (roomType !== 'l' || !servedById) { return; } - if (!isLivechatAdmin && room.servedBy._id !== userId) { - ChatRoom.remove(room._id); - queryClient.removeQueries(['rooms', room._id]); - queryClient.removeQueries(['rooms', { reference: room._id, type: 'l' }]); - queryClient.removeQueries(['/v1/rooms.info', room._id]); + if (!isLivechatAdmin && servedById !== userId) { + ChatRoom.remove(rid); + queryClient.removeQueries(['rooms', rid]); + queryClient.removeQueries(['rooms', { reference: rid, type: 'l' }]); + queryClient.removeQueries(['/v1/rooms.info', rid]); } - }, [isLivechatAdmin, queryClient, userId, room]); + }, [isLivechatAdmin, queryClient, userId, rid, roomType, servedById]); const subscriptionQuery = useReactiveQuery(['subscriptions', { rid }], () => ChatSubscription.findOne({ rid }) ?? null); From f800e43110c9746df86c3feaddd07980bc0e29e9 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 5 Sep 2023 23:49:41 -0300 Subject: [PATCH 039/115] test: enable http cache for tests (#30278) --- .github/workflows/ci-test-e2e.yml | 5 +- apps/meteor/package.json | 1 + apps/meteor/playwright.config.ts | 3 + apps/meteor/playwright.prepare.mjs | 9 ++ .../tests/e2e/channel-management.spec.ts | 20 ++--- apps/meteor/tests/e2e/homepage.spec.ts | 82 ++++++++++--------- .../omnichannel/omnichannel-livechat.spec.ts | 1 + .../omnichannel-priorities-sidebar.spec.ts | 1 + .../page-objects/fragments/home-sidenav.ts | 3 + .../tests/e2e/page-objects/home-channel.ts | 9 ++ .../e2e/page-objects/omnichannel-livechat.ts | 2 +- 11 files changed, 84 insertions(+), 52 deletions(-) create mode 100644 apps/meteor/playwright.prepare.mjs diff --git a/.github/workflows/ci-test-e2e.yml b/.github/workflows/ci-test-e2e.yml index e22b293d444b..9a05543605db 100644 --- a/.github/workflows/ci-test-e2e.yml +++ b/.github/workflows/ci-test-e2e.yml @@ -209,8 +209,11 @@ jobs: REPORTER_ROCKETCHAT_DRAFT: ${{ github.event.pull_request.draft }} QASE_API_TOKEN: ${{ secrets.QASE_API_TOKEN }} QASE_REPORT: ${{ github.ref == 'refs/heads/develop' && 'true' || '' }} + CI: true working-directory: ./apps/meteor - run: yarn test:e2e --shard=${{ matrix.shard }}/${{ inputs.total-shard }} + run: | + yarn prepare + yarn test:e2e --shard=${{ matrix.shard }}/${{ inputs.total-shard }} - name: Store playwright test trace if: inputs.type == 'ui' && always() diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 427ad86ddca3..c2e17b3e82c3 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -50,6 +50,7 @@ "set-version": "node .scripts/set-version.js", "release": "meteor npm run set-version --silent", "storybook": "cross-env NODE_OPTIONS=--max-old-space-size=8192 start-storybook -p 6006 --no-version-updates", + "prepare": "node playwright.prepare.mjs", "docker:start": "docker-compose up" }, "license": "MIT", diff --git a/apps/meteor/playwright.config.ts b/apps/meteor/playwright.config.ts index d94efbf60399..329d4daa1947 100644 --- a/apps/meteor/playwright.config.ts +++ b/apps/meteor/playwright.config.ts @@ -5,6 +5,7 @@ import * as constants from './tests/e2e/config/constants'; export default { globalSetup: require.resolve('./tests/e2e/config/global-setup.ts'), use: { + channel: 'chromium', headless: true, ignoreHTTPSErrors: true, trace: 'retain-on-failure', @@ -51,4 +52,6 @@ export default { timeout: 60 * 1000, globalTimeout: (process.env.IS_EE === 'true' ? 50 : 40) * 60 * 1000, maxFailures: process.env.CI ? 5 : undefined, + // Retry on CI only. + retries: process.env.CI ? 2 : 0, } as PlaywrightTestConfig; diff --git a/apps/meteor/playwright.prepare.mjs b/apps/meteor/playwright.prepare.mjs new file mode 100644 index 000000000000..5f3a20f21623 --- /dev/null +++ b/apps/meteor/playwright.prepare.mjs @@ -0,0 +1,9 @@ +// prepare.js + +import { readFileSync, writeFileSync } from 'fs'; +import path from 'path'; + +const modules = path.resolve(`node_modules`); +const destination = path.join(modules, 'playwright-core', 'lib', 'server', 'chromium', 'crNetworkManager.js'); +const buffer = readFileSync(destination); +writeFileSync(destination, buffer.toString().replace('cacheDisabled: true', 'cacheDisabled: false')); diff --git a/apps/meteor/tests/e2e/channel-management.spec.ts b/apps/meteor/tests/e2e/channel-management.spec.ts index 7c1533282519..7cad1be43cbf 100644 --- a/apps/meteor/tests/e2e/channel-management.spec.ts +++ b/apps/meteor/tests/e2e/channel-management.spec.ts @@ -11,13 +11,9 @@ test.use({ storageState: Users.admin.state }); test.describe.serial('channel-management', () => { let poHomeChannel: HomeChannel; let targetChannel: string; - let regularUserPage: Page; - test.beforeAll(async ({ api, browser }) => { + test.beforeAll(async ({ api }) => { targetChannel = await createTargetChannel(api); - regularUserPage = await browser.newPage({ storageState: Users.user2.state }); - await regularUserPage.goto('/home'); - await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); }); test.beforeEach(async ({ page }) => { @@ -26,10 +22,6 @@ test.describe.serial('channel-management', () => { await page.goto('/home'); }); - test.afterAll(async () => { - await regularUserPage.close(); - }); - test('expect add "user1" to "targetChannel"', async () => { await poHomeChannel.sidenav.openChat(targetChannel); await poHomeChannel.tabs.btnTabMembers.click(); @@ -113,7 +105,8 @@ test.describe.serial('channel-management', () => { await expect(poHomeChannel.toastSuccess).toBeVisible(); }); - test('expect "readOnlyChannel" to show join button', async () => { + let regularUserPage: Page; + test('expect "readOnlyChannel" to show join button', async ({ browser }) => { const channelName = faker.string.uuid(); await poHomeChannel.sidenav.openNewByLabel('Channel'); @@ -122,8 +115,15 @@ test.describe.serial('channel-management', () => { await poHomeChannel.sidenav.checkboxReadOnly.click(); await poHomeChannel.sidenav.btnCreate.click(); + regularUserPage = await browser.newPage({ storageState: Users.user2.state }); + + const channel = new HomeChannel(regularUserPage); + await regularUserPage.goto(`/channel/${channelName}`); + await channel.waitForChannel(); await expect(regularUserPage.locator('button >> text="Join"')).toBeVisible(); + + await regularUserPage.close(); }); test.skip('expect all notification preferences of "targetChannel" to be "Mentions"', async () => { diff --git a/apps/meteor/tests/e2e/homepage.spec.ts b/apps/meteor/tests/e2e/homepage.spec.ts index 465ecea03cbf..380fa54d2af3 100644 --- a/apps/meteor/tests/e2e/homepage.spec.ts +++ b/apps/meteor/tests/e2e/homepage.spec.ts @@ -26,16 +26,21 @@ test.describe.serial('homepage', () => { await adminPage.waitForSelector('[data-qa-id="home-header"]'); }); + test.afterAll(async ({ api }) => { + expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: false })).status()).toBe(200); + expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200); + await adminPage.close(); + }); + test('layout', async () => { await test.step('expect show customize button', async () => { await expect(adminPage.locator('role=button[name="Customize"]')).toBeVisible(); }); - + await test.step('expect all cards to be visible', async () => { await Promise.all(Object.values(CardIds).map((id) => expect(adminPage.locator(`[data-qa-id="${id}"]`)).toBeVisible())); }); - }) - + }); test.describe('custom body with empty custom content', async () => { test.beforeAll(async ({ api }) => { @@ -48,17 +53,16 @@ test.describe.serial('homepage', () => { adminPage.locator('role=status[name="Admins may insert content html to be rendered in this white space."]'), ).toBeVisible(); }); - + await test.step('expect both change visibility and show only custom content buttons to be disabled', async () => { await expect(adminPage.locator('role=button[name="Show to workspace"]')).toBeDisabled(); await expect(adminPage.locator('role=button[name="Show only this content"]')).toBeDisabled(); }); - + await test.step('expect visibility tag to show "not visible"', async () => { await expect(adminPage.locator('role=status[name="Not visible to workspace"]')).toBeVisible(); }); - }) - + }); }); test.describe('custom body with custom content', () => { @@ -66,17 +70,16 @@ test.describe.serial('homepage', () => { await expect((await api.post('/settings/Layout_Home_Body', { value: 'Hello admin' })).status()).toBe(200); }); - test('layout', async() => { + test('layout', async () => { await test.step('expect custom body to be visible', async () => { await expect(adminPage.locator('role=status[name="Hello admin"]')).toBeVisible(); }); - + await test.step('expect correct state for card buttons', async () => { await expect(adminPage.locator('role=button[name="Show to workspace"]')).not.toBeDisabled(); await expect(adminPage.locator('role=button[name="Show only this content"]')).toBeDisabled(); }); - }) - + }); test.describe('enterprise edition', () => { test.skip(!IS_EE, 'Enterprise Only'); @@ -103,12 +106,6 @@ test.describe.serial('homepage', () => { }); }); }); - - test.afterAll(async ({ api }) => { - expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: false })).status()).toBe(200); - expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200); - await adminPage.close(); - }); }); test.describe('for regular users', () => { @@ -121,23 +118,31 @@ test.describe.serial('homepage', () => { await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); }); + test.afterAll(async () => { + await regularUserPage.close(); + }); + test('layout', async () => { await test.step('expect to not show customize button', async () => { await expect(regularUserPage.locator('role=button[name="Customize"]')).not.toBeVisible(); }); - + await test.step(`expect ${notVisibleCards.join(' and ')} cards to not be visible`, async () => { await Promise.all(notVisibleCards.map((id) => expect(regularUserPage.locator(`[data-qa-id="${id}"]`)).not.toBeVisible())); }); - + await test.step('expect all other cards to be visible', async () => { - await Promise.all(Object.values(CardIds).filter((id) => !notVisibleCards.includes(id)).map((id) => expect(regularUserPage.locator(`[data-qa-id="${id}"]`)).toBeVisible())); + await Promise.all( + Object.values(CardIds) + .filter((id) => !notVisibleCards.includes(id)) + .map((id) => expect(regularUserPage.locator(`[data-qa-id="${id}"]`)).toBeVisible()), + ); }); - + await test.step('expect welcome text to use Site_Name default setting', async () => { await expect(regularUserPage.locator('role=heading[name="Welcome to Rocket.Chat"]')).toBeVisible(); }); - + await test.step('expect header text to use Layout_Home_Title default setting', async () => { await expect(regularUserPage.locator('[data-qa-type="PageHeader-title"]')).toContainText('Home'); }); @@ -152,20 +157,19 @@ test.describe.serial('homepage', () => { await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); }); + test.afterAll(async ({ api }) => { + expect((await api.post('/settings/Site_Name', { value: 'Rocket.Chat' })).status()).toBe(200); + expect((await api.post('/settings/Layout_Home_Title', { value: 'Home' })).status()).toBe(200); + }); + test('layout', async () => { await test.step('expect welcome text to be NewSiteName', async () => { await expect(regularUserPage.locator('role=heading[name="Welcome to NewSiteName"]')).toBeVisible(); }); - + await test.step('expect header text to be Layout_Home_Title setting', async () => { await expect(regularUserPage.locator('[data-qa-type="PageHeader-title"]')).toContainText('NewTitle'); }); - }) - - - test.afterAll(async ({ api }) => { - expect((await api.post('/settings/Site_Name', { value: 'Rocket.Chat' })).status()).toBe(200); - expect((await api.post('/settings/Layout_Home_Title', { value: 'Home' })).status()).toBe(200); }); }); @@ -178,6 +182,10 @@ test.describe.serial('homepage', () => { await regularUserPage.waitForSelector('[data-qa-id="home-header"]'); }); + test.afterAll(async ({ api }) => { + expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200); + expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: false })).status()).toBe(200); + }); test('expect custom body to be visible', async () => { await expect(regularUserPage.locator('role=status[name="Hello"]')).toBeVisible(); @@ -190,26 +198,20 @@ test.describe.serial('homepage', () => { expect((await api.post('/settings/Layout_Custom_Body_Only', { value: true })).status()).toBe(200); }); + test.afterAll(async ({ api }) => { + expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200); + }); + test('layout', async () => { await test.step('expect default layout to not be visible', async () => { await expect(regularUserPage.locator('[data-qa-id="homepage-welcome-text"]')).not.toBeVisible(); }); - + await test.step('expect custom body to be visible', async () => { await expect(regularUserPage.locator('role=status[name="Hello"]')).toBeVisible(); }); - }) - - - test.afterAll(async ({ api }) => { - expect((await api.post('/settings/Layout_Custom_Body_Only', { value: false })).status()).toBe(200); }); }); - - test.afterAll(async ({ api }) => { - expect((await api.post('/settings/Layout_Home_Body', { value: '' })).status()).toBe(200); - expect((await api.post('/settings/Layout_Home_Custom_Block_Visible', { value: false })).status()).toBe(200); - }); }); }); }); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat.spec.ts index c5250b1d1150..8d8bf3eed191 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat.spec.ts @@ -32,6 +32,7 @@ test.describe('Livechat', () => { test.afterAll(async ({ api }) => { await api.delete('/livechat/users/agent/user1'); await poAuxContext.page.close(); + await page.close(); }); test('Send message to online agent', async () => { diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-priorities-sidebar.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-priorities-sidebar.spec.ts index b521090e7097..559d24889633 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-priorities-sidebar.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-priorities-sidebar.spec.ts @@ -65,6 +65,7 @@ test.describe.serial('Omnichannel Priorities [Sidebar]', () => { await poLivechat.onlineAgentMessage.type('this_a_test_message_from_visitor'); await poLivechat.btnSendMessageToOnlineAgent.click(); await poHomeChannel.sidenav.getSidebarItemByName(NEW_USER.name).click(); + await poLivechat.page.close(); }); await test.step('Queue: Sidebar priority change', async () => { diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index 5e5e3f93bfb6..4f3d7b4886eb 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -75,7 +75,10 @@ export class HomeSidenav { await this.page.locator('role=navigation >> role=button[name=Search]').click(); await this.page.locator('role=search >> role=searchbox').type(name); await this.page.locator(`role=search >> role=listbox >> role=link >> text="${name}"`).click(); + await this.waitForChannel(); + } + async waitForChannel(): Promise { await this.page.locator('role=main').waitFor(); await this.page.locator('role=main >> role=heading[level=1]').waitFor(); diff --git a/apps/meteor/tests/e2e/page-objects/home-channel.ts b/apps/meteor/tests/e2e/page-objects/home-channel.ts index 1d6e450d9764..d2f43c5cfec5 100644 --- a/apps/meteor/tests/e2e/page-objects/home-channel.ts +++ b/apps/meteor/tests/e2e/page-objects/home-channel.ts @@ -1,5 +1,6 @@ import type { Locator, Page } from '@playwright/test'; +import { expect } from '../utils/test'; import { HomeContent, HomeSidenav, HomeFlextab } from './fragments'; export class HomeChannel { @@ -25,4 +26,12 @@ export class HomeChannel { get btnContextualbarClose(): Locator { return this.page.locator('[data-qa="ContextualbarActionClose"]'); } + + async waitForChannel(): Promise { + await this.page.locator('role=main').waitFor(); + await this.page.locator('role=main >> role=heading[level=1]').waitFor(); + + await expect(this.page.locator('role=main >> .rcx-skeleton')).toHaveCount(0); + await expect(this.page.locator('role=main >> role=list')).not.toHaveAttribute('aria-busy', 'true'); + } } diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts index 754ab9c01d7a..b4a7c9b92345 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-livechat.ts @@ -1,7 +1,7 @@ import type { Page, Locator, APIResponse } from '@playwright/test'; export class OmnichannelLiveChat { - private readonly page: Page; + readonly page: Page; constructor(page: Page, private readonly api: { get(url: string): Promise }) { this.page = page; From 3dfede27033722775c7ee972304ab0630a3ccac1 Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Tue, 5 Sep 2023 23:51:18 -0300 Subject: [PATCH 040/115] chore: Move a11y violation tests to Playwright (#30293) --- .../AccountFeaturePreviewPage.spec.tsx | 30 ---- .../OmnichannelPreferencesPage.spec.tsx | 19 --- .../views/admin/mailer/MailerPage.spec.tsx | 17 --- .../currentChats/CurrentChatsPage.spec.tsx | 17 --- apps/meteor/package.json | 3 +- apps/meteor/tests/e2e/account-profile.spec.ts | 132 ++++++++++++++++++ apps/meteor/tests/e2e/administration.spec.ts | 11 ++ .../omnichannel-current-chats.spec.ts | 15 ++ .../e2e/settings-account-profile.spec.ts | 101 -------------- apps/meteor/tests/e2e/utils/test.ts | 8 ++ yarn.lock | 85 ++++------- 11 files changed, 194 insertions(+), 244 deletions(-) delete mode 100644 apps/meteor/client/views/account/featurePreview/AccountFeaturePreviewPage.spec.tsx delete mode 100644 apps/meteor/client/views/account/omnichannel/OmnichannelPreferencesPage.spec.tsx delete mode 100644 apps/meteor/client/views/admin/mailer/MailerPage.spec.tsx delete mode 100644 apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.spec.tsx create mode 100644 apps/meteor/tests/e2e/account-profile.spec.ts create mode 100644 apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts delete mode 100644 apps/meteor/tests/e2e/settings-account-profile.spec.ts diff --git a/apps/meteor/client/views/account/featurePreview/AccountFeaturePreviewPage.spec.tsx b/apps/meteor/client/views/account/featurePreview/AccountFeaturePreviewPage.spec.tsx deleted file mode 100644 index 157fa9b7acdf..000000000000 --- a/apps/meteor/client/views/account/featurePreview/AccountFeaturePreviewPage.spec.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { mockAppRoot } from '@rocket.chat/mock-providers'; -import { defaultFeaturesPreview } from '@rocket.chat/ui-client'; -import { render } from '@testing-library/react'; -import { axe, toHaveNoViolations } from 'jest-axe'; -import React from 'react'; - -import AccountFeaturePreviewPage from './AccountFeaturePreviewPage'; - -expect.extend(toHaveNoViolations); - -it('should have no a11y violations', async () => { - const { container } = render(, { - wrapper: mockAppRoot() - .withSetting('Accounts_AllowFeaturePreview', true) - .withUserPreference('featurePreview', defaultFeaturesPreview) - .withEndpoint('POST', '/v1/users.setPreferences', () => ({ - user: { - _id: 'userId', - settings: { - profile: {}, - preferences: {}, - }, - }, - })) - .build(), - }); - - const results = await axe(container); - expect(results).toHaveNoViolations(); -}); diff --git a/apps/meteor/client/views/account/omnichannel/OmnichannelPreferencesPage.spec.tsx b/apps/meteor/client/views/account/omnichannel/OmnichannelPreferencesPage.spec.tsx deleted file mode 100644 index 263d29c2ebdf..000000000000 --- a/apps/meteor/client/views/account/omnichannel/OmnichannelPreferencesPage.spec.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { mockAppRoot } from '@rocket.chat/mock-providers'; -import { render } from '@testing-library/react'; -import { axe, toHaveNoViolations } from 'jest-axe'; -import React from 'react'; - -import OmnichannelPreferencesPage from './OmnichannelPreferencesPage'; - -expect.extend(toHaveNoViolations); - -it('should have no a11y violations', async () => { - const { container } = render(, { - wrapper: mockAppRoot() - .withMethod('license:getModules', () => ['livechat-enterprise']) - .build(), - }); - - const results = await axe(container); - expect(results).toHaveNoViolations(); -}); diff --git a/apps/meteor/client/views/admin/mailer/MailerPage.spec.tsx b/apps/meteor/client/views/admin/mailer/MailerPage.spec.tsx deleted file mode 100644 index f5e23e35c3d2..000000000000 --- a/apps/meteor/client/views/admin/mailer/MailerPage.spec.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { mockAppRoot } from '@rocket.chat/mock-providers'; -import { render } from '@testing-library/react'; -import { axe, toHaveNoViolations } from 'jest-axe'; -import React from 'react'; - -import MailerPage from './MailerPage'; - -expect.extend(toHaveNoViolations); - -it('should have no a11y violations', async () => { - const { container } = render(, { - wrapper: mockAppRoot().build(), - }); - - const results = await axe(container); - expect(results).toHaveNoViolations(); -}); diff --git a/apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.spec.tsx b/apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.spec.tsx deleted file mode 100644 index b95af28fe6a6..000000000000 --- a/apps/meteor/client/views/omnichannel/currentChats/CurrentChatsPage.spec.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { mockAppRoot } from '@rocket.chat/mock-providers'; -import { render } from '@testing-library/react'; -import { axe, toHaveNoViolations } from 'jest-axe'; -import React from 'react'; - -import CurrentChatsPage from './CurrentChatsPage'; - -expect.extend(toHaveNoViolations); - -it('should have no a11y violations', async () => { - const { container } = render( undefined} />, { - wrapper: mockAppRoot().build(), - }); - - const results = await axe(container); - expect(results).toHaveNoViolations(); -}); diff --git a/apps/meteor/package.json b/apps/meteor/package.json index c2e17b3e82c3..7b0ea3b73cc7 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -63,6 +63,7 @@ "email": "support@rocket.chat" }, "devDependencies": { + "@axe-core/playwright": "^4.7.3", "@babel/core": "~7.22.9", "@babel/eslint-parser": "~7.22.9", "@babel/plugin-proposal-nullish-coalescing-operator": "~7.18.6", @@ -115,7 +116,6 @@ "@types/he": "^1.1.2", "@types/i18next-sprintf-postprocessor": "^0.2.0", "@types/imap": "^0.8.37", - "@types/jest-axe": "^3.5.5", "@types/jsdom": "^16.2.15", "@types/jsdom-global": "^3.0.4", "@types/jsrsasign": "^10.5.8", @@ -183,7 +183,6 @@ "fast-glob": "^3.2.12", "i18next": "~23.4.5", "jest": "~29.6.1", - "jest-axe": "^8.0.0", "jsdom-global": "^3.0.2", "mocha": "^9.2.2", "nyc": "^15.1.0", diff --git a/apps/meteor/tests/e2e/account-profile.spec.ts b/apps/meteor/tests/e2e/account-profile.spec.ts new file mode 100644 index 000000000000..b850b7855c6f --- /dev/null +++ b/apps/meteor/tests/e2e/account-profile.spec.ts @@ -0,0 +1,132 @@ +import { faker } from '@faker-js/faker'; + +import { Users } from './fixtures/userStates'; +import { HomeChannel, AccountProfile } from './page-objects'; +import { test, expect } from './utils/test'; + +test.use({ storageState: Users.user3.state }); + +test.describe.serial('settings-account-profile', () => { + let poHomeChannel: HomeChannel; + let poAccountProfile: AccountProfile; + + const token = faker.string.alpha(10); + + test.beforeEach(async ({ page }) => { + poHomeChannel = new HomeChannel(page); + poAccountProfile = new AccountProfile(page); + }); + + // FIXME: solve test intermitencies + test.describe('Profile', () => { + test.beforeEach(async ({ page }) => { + await page.goto('/account/profile'); + }) + + test.skip('expect update profile with new name/username', async () => { + const newName = faker.person.fullName(); + const newUsername = faker.internet.userName({ firstName: newName }); + + await poAccountProfile.inputName.fill(newName); + await poAccountProfile.inputUsername.fill(newUsername); + await poAccountProfile.btnSubmit.click(); + await poAccountProfile.btnClose.click(); + await poHomeChannel.sidenav.openChat('general'); + await poHomeChannel.content.sendMessage('any_message'); + + await expect(poHomeChannel.content.lastUserMessageNotSequential).toContainText(newUsername); + + await poHomeChannel.content.lastUserMessageNotSequential.locator('figure').click(); + await poHomeChannel.content.linkUserCard.click(); + + await expect(poHomeChannel.tabs.userInfoUsername).toHaveText(newUsername); + }) + + test('change avatar', async ({ page }) => { + await test.step('expect change avatar image by upload', async () => { + await poAccountProfile.inputImageFile.setInputFiles('./tests/e2e/fixtures/files/test-image.jpeg'); + + await poAccountProfile.btnSubmit.click(); + await expect(page.locator('.rcx-toastbar.rcx-toastbar--success').first()).toBeVisible(); + }); + + await test.step('expect to close toastbar', async () => { + await page.locator('.rcx-toastbar.rcx-toastbar--success').first().click(); + }); + + await test.step('expect set image from url', async () => { + await poAccountProfile.inputAvatarLink.fill('https://www.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50'); + await poAccountProfile.btnSetAvatarLink.click(); + + await poAccountProfile.btnSubmit.click(); + await expect(page.locator('.rcx-toastbar.rcx-toastbar--success').first()).toBeVisible(); + }); + }); + }); + + test('Personal Access Tokens', async ({ page }) => { + const response = page.waitForResponse('**/api/v1/users.getPersonalAccessTokens'); + await page.goto('/account/tokens'); + await response; + + await test.step('expect show empty personal access tokens table', async () => { + await expect(poAccountProfile.tokensTableEmpty).toBeVisible(); + await expect(poAccountProfile.inputToken).toBeVisible(); + }); + + await test.step('expect show new personal token', async () => { + await poAccountProfile.inputToken.type(token); + await poAccountProfile.btnTokensAdd.click(); + await expect(poAccountProfile.tokenAddedModal).toBeVisible(); + await page.locator('role=button[name=Ok]').click(); + }); + + await test.step('expect not allow add new personal token with same name', async () => { + await poAccountProfile.inputToken.type(token); + await poAccountProfile.btnTokensAdd.click(); + await expect(page.locator('.rcx-toastbar.rcx-toastbar--error')).toBeVisible(); + }); + + await test.step('expect regenerate personal token', async () => { + await poAccountProfile.tokenInTable(token).locator('button >> nth=0').click(); + await poAccountProfile.btnRegenerateTokenModal.click(); + await expect(poAccountProfile.tokenAddedModal).toBeVisible(); + await page.locator('role=button[name=Ok]').click(); + }); + + await test.step('expect delete personal token', async () => { + await poAccountProfile.tokenInTable(token).locator('button >> nth=1').click(); + await poAccountProfile.btnRemoveTokenModal.click(); + await expect(page.locator('.rcx-toastbar.rcx-toastbar--success')).toBeVisible(); + }); + }); + + test.describe('Omnichannel', () => { + test('should not have any accessibility violations', async ({ page, makeAxeBuilder }) => { + await page.goto('/account/omnichannel'); + + const results = await makeAxeBuilder().analyze(); + expect(results.violations).toEqual([]); + }) + }) + + test.describe('Feature Preview', () => { + test('should not have any accessibility violations', async ({ page, makeAxeBuilder }) => { + await page.goto('/account/feature-preview'); + + const results = await makeAxeBuilder().analyze(); + expect(results.violations).toEqual([]); + }) + }) + + test.describe('Accessibility & Appearance', () => { + test('should not have any accessibility violations', async ({ page, makeAxeBuilder }) => { + await page.goto('/account/accessibility-and-appearance'); + + const results = await makeAxeBuilder().analyze(); + expect(results.violations).toEqual([]); + }) + }) +}); + + diff --git a/apps/meteor/tests/e2e/administration.spec.ts b/apps/meteor/tests/e2e/administration.spec.ts index 5a47a77bba99..b439258429f8 100644 --- a/apps/meteor/tests/e2e/administration.spec.ts +++ b/apps/meteor/tests/e2e/administration.spec.ts @@ -78,6 +78,17 @@ test.describe.parallel('administration', () => { }); }); + test.describe('Mailer', () => { + test.beforeEach(async ({ page }) => { + await page.goto('/admin/mailer'); + }) + + test('should not have any accessibility violations', async ({ makeAxeBuilder }) => { + const results = await makeAxeBuilder().analyze(); + expect(results.violations).toEqual([]); + }) + }) + test.describe('Settings', () => { test.describe('General', () => { test.beforeEach(async ({ page }) => { diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts new file mode 100644 index 000000000000..8138ab839b75 --- /dev/null +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-current-chats.spec.ts @@ -0,0 +1,15 @@ +import { Users } from '../fixtures/userStates'; +import { test, expect } from '../utils/test'; + +test.use({ storageState: Users.admin.state }); + +test.describe.parallel('Omnichannel current chats', () => { + test.beforeEach(async ({ page }) =>{ + await page.goto('/omnichannel/current') + }) + + test.skip('should not have any accessibility violations', async ({ makeAxeBuilder }) => { + const results = await makeAxeBuilder().analyze(); + expect(results.violations).toEqual([]); + }) +}) diff --git a/apps/meteor/tests/e2e/settings-account-profile.spec.ts b/apps/meteor/tests/e2e/settings-account-profile.spec.ts deleted file mode 100644 index 7d33d71cfae6..000000000000 --- a/apps/meteor/tests/e2e/settings-account-profile.spec.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { faker } from '@faker-js/faker'; - -import { Users } from './fixtures/userStates'; -import { HomeChannel, AccountProfile } from './page-objects'; -import { test, expect } from './utils/test'; - -test.use({ storageState: Users.user3.state }); - -test.describe.serial('settings-account-profile', () => { - let poHomeChannel: HomeChannel; - let poAccountProfile: AccountProfile; - - const token = faker.string.alpha(10); - - test.beforeEach(async ({ page }) => { - poHomeChannel = new HomeChannel(page); - poAccountProfile = new AccountProfile(page); - - await page.goto('/account/profile'); - }); - - // FIXME: solve test intermitencies - test.skip('expect update profile with new name/username', async () => { - const newName = faker.person.fullName(); - const newUsername = faker.internet.userName(newName); - - await poAccountProfile.inputName.fill(newName); - await poAccountProfile.inputUsername.fill(newUsername); - await poAccountProfile.btnSubmit.click(); - await poAccountProfile.btnClose.click(); - await poHomeChannel.sidenav.openChat('general'); - await poHomeChannel.content.sendMessage('any_message'); - - await expect(poHomeChannel.content.lastUserMessageNotSequential).toContainText(newUsername); - - await poHomeChannel.content.lastUserMessageNotSequential.locator('figure').click(); - await poHomeChannel.content.linkUserCard.click(); - - await expect(poHomeChannel.tabs.userInfoUsername).toHaveText(newUsername); - }); - - test('Personal Access Tokens', async ({ page }) => { - const response = page.waitForResponse('**/api/v1/users.getPersonalAccessTokens'); - await page.goto('/account/tokens'); - await response; - - await test.step('expect show empty personal access tokens table', async () => { - await expect(poAccountProfile.tokensTableEmpty).toBeVisible(); - await expect(poAccountProfile.inputToken).toBeVisible(); - }); - - await test.step('expect show new personal token', async () => { - await poAccountProfile.inputToken.type(token); - await poAccountProfile.btnTokensAdd.click(); - await expect(poAccountProfile.tokenAddedModal).toBeVisible(); - await page.locator('role=button[name=Ok]').click(); - }); - - await test.step('expect not allow add new personal token with same name', async () => { - await poAccountProfile.inputToken.type(token); - await poAccountProfile.btnTokensAdd.click(); - await expect(page.locator('.rcx-toastbar.rcx-toastbar--error')).toBeVisible(); - }); - - await test.step('expect regenerate personal token', async () => { - await poAccountProfile.tokenInTable(token).locator('button >> nth=0').click(); - await poAccountProfile.btnRegenerateTokenModal.click(); - await expect(poAccountProfile.tokenAddedModal).toBeVisible(); - await page.locator('role=button[name=Ok]').click(); - }); - - await test.step('expect delete personal token', async () => { - await poAccountProfile.tokenInTable(token).locator('button >> nth=1').click(); - await poAccountProfile.btnRemoveTokenModal.click(); - await expect(page.locator('.rcx-toastbar.rcx-toastbar--success')).toBeVisible(); - }); - }); - - test('change avatar', async ({ page }) => { - await page.goto('/account/profile'); - - await test.step('expect change avatar image by upload', async () => { - await poAccountProfile.inputImageFile.setInputFiles('./tests/e2e/fixtures/files/test-image.jpeg'); - - await poAccountProfile.btnSubmit.click(); - await expect(page.locator('.rcx-toastbar.rcx-toastbar--success').first()).toBeVisible(); - }); - - await test.step('expect to close toastbar', async () => { - await page.locator('.rcx-toastbar.rcx-toastbar--success').first().click(); - }); - - await test.step('expect set image from url', async () => { - await poAccountProfile.inputAvatarLink.fill('https://www.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50'); - await poAccountProfile.btnSetAvatarLink.click(); - - await poAccountProfile.btnSubmit.click(); - await expect(page.locator('.rcx-toastbar.rcx-toastbar--success').first()).toBeVisible(); - }); - }); -}); diff --git a/apps/meteor/tests/e2e/utils/test.ts b/apps/meteor/tests/e2e/utils/test.ts index 7418307a647d..5ccea233d88a 100644 --- a/apps/meteor/tests/e2e/utils/test.ts +++ b/apps/meteor/tests/e2e/utils/test.ts @@ -1,6 +1,7 @@ import * as fs from 'fs'; import * as path from 'path'; +import AxeBuilder from '@axe-core/playwright'; import type { Locator, APIResponse, APIRequestContext } from '@playwright/test'; import { test as baseTest, request as baseRequest } from '@playwright/test'; import { v4 as uuid } from 'uuid'; @@ -21,6 +22,7 @@ export type BaseTest = { put(uri: string, data: AnyObj, prefix?: string): Promise; delete(uri: string, params?: AnyObj, prefix?: string): Promise; }; + makeAxeBuilder: () => AxeBuilder; }; declare global { // eslint-disable-next-line @typescript-eslint/naming-convention @@ -112,6 +114,12 @@ export const test = baseTest.extend({ }, }); }, + makeAxeBuilder: async ({ page }, use) => { + const SELECT_KNOW_ISSUES = ['aria-hidden-focus', 'nested-interactive'] + + const makeAxeBuilder = () => new AxeBuilder({ page }).withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']).disableRules(['document-title', ...SELECT_KNOW_ISSUES]); + await use(makeAxeBuilder); + } }); export const { expect } = test; diff --git a/yarn.lock b/yarn.lock index 68ef61bc51eb..061b01927896 100644 --- a/yarn.lock +++ b/yarn.lock @@ -955,6 +955,17 @@ __metadata: languageName: node linkType: hard +"@axe-core/playwright@npm:^4.7.3": + version: 4.7.3 + resolution: "@axe-core/playwright@npm:4.7.3" + dependencies: + axe-core: ^4.7.0 + peerDependencies: + playwright-core: ">= 1.0.0" + checksum: c913cf6a816af283fc733411013460656213cf6c0efffcc36db1fd2984ffac3d780efd0a9aabd3b41ce78e2a536fee9ba5436d19311f660067e4c3560677b115 + languageName: node + linkType: hard + "@babel/code-frame@npm:7.12.11": version: 7.12.11 resolution: "@babel/code-frame@npm:7.12.11" @@ -8540,6 +8551,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/meteor@workspace:apps/meteor" dependencies: + "@axe-core/playwright": ^4.7.3 "@babel/core": ~7.22.9 "@babel/eslint-parser": ~7.22.9 "@babel/plugin-proposal-nullish-coalescing-operator": ~7.18.6 @@ -8658,7 +8670,6 @@ __metadata: "@types/he": ^1.1.2 "@types/i18next-sprintf-postprocessor": ^0.2.0 "@types/imap": ^0.8.37 - "@types/jest-axe": ^3.5.5 "@types/jsdom": ^16.2.15 "@types/jsdom-global": ^3.0.4 "@types/jsrsasign": ^10.5.8 @@ -8796,7 +8807,6 @@ __metadata: ip-range-check: ^0.2.0 is-svg: ^4.3.2 jest: ~29.6.1 - jest-axe: ^8.0.0 jquery: ^3.6.0 jschardet: ^3.0.0 jsdom: ^16.7.0 @@ -12338,16 +12348,6 @@ __metadata: languageName: node linkType: hard -"@types/jest-axe@npm:^3.5.5": - version: 3.5.5 - resolution: "@types/jest-axe@npm:3.5.5" - dependencies: - "@types/jest": "*" - axe-core: ^3.5.5 - checksum: 535038968034fe80fb466dcd5939ea5d9e9adb3ef00852ded3e41c62536c05137eb30bcbfd608142d2bc571d65c20b8e3563181674fb48594c2662d340bb4da5 - languageName: node - linkType: hard - "@types/jest@npm:*, @types/jest@npm:~29.5.3": version: 29.5.3 resolution: "@types/jest@npm:29.5.3" @@ -15075,20 +15075,13 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:4.7.2, axe-core@npm:^4.2.0": +"axe-core@npm:^4.2.0, axe-core@npm:^4.7.0": version: 4.7.2 resolution: "axe-core@npm:4.7.2" checksum: 5d86fa0f45213b0e54cbb5d713ce885c4a8fe3a72b92dd915a47aa396d6fd149c4a87fec53aa978511f6d941402256cfeb26f2db35129e370f25a453c688655a languageName: node linkType: hard -"axe-core@npm:^3.5.5": - version: 3.5.6 - resolution: "axe-core@npm:3.5.6" - checksum: 000777d2b6bf1f390beb1fb4b8714ed9127797c021c345b032db0c144e07320dbbe8cb0bcb7688b90b79cfbd3cdc1f27a4dc857804e3c61d7e0defb34deeb830 - languageName: node - linkType: hard - "axios@npm:^0.21.0, axios@npm:^0.21.1": version: 0.21.4 resolution: "axios@npm:0.21.4" @@ -16707,16 +16700,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:4.1.2, chalk@npm:^4, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - "chalk@npm:^1.0.0": version: 1.1.3 resolution: "chalk@npm:1.1.3" @@ -16730,6 +16713,16 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^4, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + languageName: node + linkType: hard + "change-case@npm:^4.1.2": version: 4.1.2 resolution: "change-case@npm:4.1.2" @@ -25496,18 +25489,6 @@ __metadata: languageName: node linkType: hard -"jest-axe@npm:^8.0.0": - version: 8.0.0 - resolution: "jest-axe@npm:8.0.0" - dependencies: - axe-core: 4.7.2 - chalk: 4.1.2 - jest-matcher-utils: 29.2.2 - lodash.merge: 4.6.2 - checksum: 895501afa6ac6c49e5e45ee1cd4a8e923589f220f6f950a8f5366cc3f3636aaee9c9d501a469f9658185e7a5928b59a337d4b4f1c7bb3f4b3b5ba8b3811c9f15 - languageName: node - linkType: hard - "jest-changed-files@npm:^29.5.0": version: 29.5.0 resolution: "jest-changed-files@npm:29.5.0" @@ -25623,7 +25604,7 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.2.1, jest-diff@npm:^29.6.1": +"jest-diff@npm:^29.6.1": version: 29.6.2 resolution: "jest-diff@npm:29.6.2" dependencies: @@ -25709,7 +25690,7 @@ __metadata: languageName: node linkType: hard -"jest-get-type@npm:^29.2.0, jest-get-type@npm:^29.4.3": +"jest-get-type@npm:^29.4.3": version: 29.4.3 resolution: "jest-get-type@npm:29.4.3" checksum: 6ac7f2dde1c65e292e4355b6c63b3a4897d7e92cb4c8afcf6d397f2682f8080e094c8b0b68205a74d269882ec06bf696a9de6cd3e1b7333531e5ed7b112605ce @@ -25774,18 +25755,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:29.2.2": - version: 29.2.2 - resolution: "jest-matcher-utils@npm:29.2.2" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.2.1 - jest-get-type: ^29.2.0 - pretty-format: ^29.2.1 - checksum: 97ef2638ab826c25f84bfedea231cef091820ae0876ba316922da81145e950d2b9d2057d3645813b5ee880bb975ed4f22e228dda5d0d26a20715e575b675357d - languageName: node - linkType: hard - "jest-matcher-utils@npm:^29.6.1": version: 29.6.1 resolution: "jest-matcher-utils@npm:29.6.1" @@ -27144,7 +27113,7 @@ __metadata: languageName: node linkType: hard -"lodash.merge@npm:4.6.2, lodash.merge@npm:^4.6.2": +"lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 @@ -32083,7 +32052,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.2.1, pretty-format@npm:^29.6.1, pretty-format@npm:^29.6.2": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1, pretty-format@npm:^29.6.2": version: 29.6.2 resolution: "pretty-format@npm:29.6.2" dependencies: From 3245a0a3184f3adcab7ad239135457f0c0f29659 Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Wed, 6 Sep 2023 09:05:57 -0300 Subject: [PATCH 041/115] fix: linkedin oauth broken (#30252) --- .changeset/odd-elephants-promise.md | 5 + .../lib/server/startup/oAuthServicesUpdate.js | 2 +- .../linkedin-oauth/linkedin-client.js | 2 +- .../linkedin-oauth/linkedin-server.js | 120 +++++++----------- 4 files changed, 51 insertions(+), 78 deletions(-) create mode 100644 .changeset/odd-elephants-promise.md diff --git a/.changeset/odd-elephants-promise.md b/.changeset/odd-elephants-promise.md new file mode 100644 index 000000000000..a12817ed175b --- /dev/null +++ b/.changeset/odd-elephants-promise.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Fix LinkedIn OAuth broken diff --git a/apps/meteor/app/lib/server/startup/oAuthServicesUpdate.js b/apps/meteor/app/lib/server/startup/oAuthServicesUpdate.js index 397c3a491c5d..b01ef2f9fb0c 100644 --- a/apps/meteor/app/lib/server/startup/oAuthServicesUpdate.js +++ b/apps/meteor/app/lib/server/startup/oAuthServicesUpdate.js @@ -97,7 +97,7 @@ async function _OAuthServicesUpdate() { if (serviceName === 'Linkedin') { data.clientConfig = { - requestPermissions: ['r_liteprofile', 'r_emailaddress'], + requestPermissions: ['openid', 'email', 'profile'], }; } diff --git a/apps/meteor/packages/linkedin-oauth/linkedin-client.js b/apps/meteor/packages/linkedin-oauth/linkedin-client.js index 4c2ae09d1cae..29be9dd1af22 100644 --- a/apps/meteor/packages/linkedin-oauth/linkedin-client.js +++ b/apps/meteor/packages/linkedin-oauth/linkedin-client.js @@ -29,7 +29,7 @@ Linkedin.requestCredential = async function (options, credentialRequestCompleteC scope = requestPermissions.join('+'); } else { // If extra permissions not passed, we need to request basic, available to all - scope = 'r_emailaddress+r_liteprofile'; + scope = 'openid+email+profile'; } const loginStyle = OAuth._loginStyle('linkedin', config, options); if (!otherOptionsToPassThrough.popupOptions) { diff --git a/apps/meteor/packages/linkedin-oauth/linkedin-server.js b/apps/meteor/packages/linkedin-oauth/linkedin-server.js index fe67fe11b028..62e4dad143ce 100644 --- a/apps/meteor/packages/linkedin-oauth/linkedin-server.js +++ b/apps/meteor/packages/linkedin-oauth/linkedin-server.js @@ -4,45 +4,6 @@ import { ServiceConfiguration } from 'meteor/service-configuration'; export const Linkedin = {}; -const getImage = (profilePicture) => { - const image = []; - if (profilePicture !== undefined) { - for (const element of profilePicture['displayImage~'].elements) { - for (const identifier of element.identifiers) { - image.push(identifier.identifier); - } - } - } - return { - displayImage: profilePicture ? profilePicture.displayImage : null, - identifiersUrl: image, - }; -}; - -// Request for email, returns array -const getEmails = async function (accessToken) { - const url = encodeURI( - `https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))&oauth2_access_token=${accessToken}`, - ); - const data = await fetch(url); - const response = await data.json(); - const emails = []; - for (const element of response.elements) { - emails.push(element['handle~'].emailAddress); - } - return emails; -}; - -// checks whether a string parses as JSON -const isJSON = function (str) { - try { - JSON.parse(str); - return true; - } catch (e) { - return false; - } -}; - // returns an object containing: // - accessToken // - expiresIn: lifetime of token in seconds @@ -53,33 +14,37 @@ const getTokenResponse = async function (query) { let responseContent; try { // Request an access token - const request = await fetch('https://api.linkedin.com/uas/oauth2/accessToken', { + const body = new URLSearchParams({ + grant_type: 'authorization_code', + client_id: config.clientId, + client_secret: OAuth.openSecret(config.secret), + code: query.code, + redirect_uri: OAuth._redirectUri('linkedin', config), + }); + + const response = await fetch('https://api.linkedin.com/uas/oauth2/accessToken', { method: 'POST', - body: JSON.stringify({ - grant_type: 'authorization_code', - client_id: config.clientId, - client_secret: OAuth.openSecret(config.secret), - code: query.code, - redirect_uri: OAuth._redirectUri('linkedin', config), - }), + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body, }); - responseContent = await request.text(); + + if (!response.ok) { + throw new Error(responseContent.error_description); + } + + responseContent = await response.json(); } catch (err) { throw new Error(`Failed to complete OAuth handshake with Linkedin. ${err.message}`); } - // If 'responseContent' does not parse as JSON, it is an error. - if (!isJSON(responseContent)) { - throw new Error(`Failed to complete OAuth handshake with Linkedin. ${responseContent}`); - } - // Success! Extract access token and expiration - const parsedResponse = JSON.parse(responseContent); - const accessToken = parsedResponse.access_token; - const expiresIn = parsedResponse.expires_in; + const accessToken = responseContent.access_token; + const expiresIn = responseContent.expires_in; if (!accessToken) { - throw new Error(`Failed to complete OAuth handshake with Linkedin -- can't find access token in HTTP response. ${responseContent}`); + throw new Error(`Failed to complete OAuth handshake with Linkedin -- can't find access token in HTTP response. ${JSON.stringify(responseContent)}`); } return { @@ -88,13 +53,23 @@ const getTokenResponse = async function (query) { }; }; -// Request available fields from r_liteprofile +// Request available fields from profile const getIdentity = async function (accessToken) { try { const url = encodeURI( - `https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))&oauth2_access_token=${accessToken}`, + `https://api.linkedin.com/v2/userinfo`, ); - const request = await fetch(url); + const request = await fetch(url, { + method: 'GET', + headers: { + Authorization: `Bearer ${accessToken}`, + }, + }); + + if (!request.ok) { + throw new Error(await request.text()); + } + return request.json(); } catch (err) { throw new Error(`Failed to fetch identity from Linkedin. ${err.message}`); @@ -106,30 +81,23 @@ OAuth.registerService('linkedin', 2, null, async (query) => { const { accessToken } = response; const identity = await getIdentity(accessToken); - const { id, firstName, lastName, profilePicture } = identity; + const { sub, given_name, family_name, picture, email } = identity; - if (!id) { + if (!sub) { throw new Error('Linkedin did not provide an id'); } - const emails = await getEmails(accessToken); - const fields = { - linkedinId: id, - firstName, - lastName, - profilePicture: getImage(profilePicture), - emails, + linkedinId: sub, + firstName: given_name, + lastName: family_name, + profilePicture: picture, + emailAddress: email, + email }; - if (emails.length) { - const primaryEmail = emails[0]; - fields.emailAddress = primaryEmail; // for backward compatibility with previous versions of this package - fields.email = primaryEmail; - } - const serviceData = { - id, + id: sub, accessToken, expiresAt: +new Date() + 1000 * response.expiresIn, ...fields, From e6d92ff1323537ba6cc653049e5d24ea4a17b12a Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Wed, 6 Sep 2023 11:11:01 -0300 Subject: [PATCH 042/115] chore: Registration form a11y improvements (#30280) --- apps/meteor/tests/e2e/register.spec.ts | 9 ++ .../src/components/CustomFieldsForm.tsx | 21 +++- .../web-ui-registration/src/RegisterForm.tsx | 119 +++++++++++------- 3 files changed, 102 insertions(+), 47 deletions(-) diff --git a/apps/meteor/tests/e2e/register.spec.ts b/apps/meteor/tests/e2e/register.spec.ts index 37d4c9b2c696..f99f212ff718 100644 --- a/apps/meteor/tests/e2e/register.spec.ts +++ b/apps/meteor/tests/e2e/register.spec.ts @@ -123,6 +123,15 @@ test.describe.serial('register', () => { await expect(poRegistration.registrationDisabledCallout).toBeVisible(); }); }); + + test('should not have any accessibility violations', async ({ page, makeAxeBuilder }) => { + await page.goto('/home'); + await poRegistration.goToRegister.click(); + + const results = await makeAxeBuilder().disableRules(['landmark-one-main', 'region']).analyze(); + + expect(results.violations).toEqual([]); + }); }); test.describe('Registration for secret password', async () => { diff --git a/packages/ui-client/src/components/CustomFieldsForm.tsx b/packages/ui-client/src/components/CustomFieldsForm.tsx index 49d4a120e47d..9423456ebe8e 100644 --- a/packages/ui-client/src/components/CustomFieldsForm.tsx +++ b/packages/ui-client/src/components/CustomFieldsForm.tsx @@ -1,6 +1,7 @@ import type { CustomFieldMetadata } from '@rocket.chat/core-typings'; import type { SelectOption } from '@rocket.chat/fuselage'; import { Field, Select, TextInput } from '@rocket.chat/fuselage'; +import { useUniqueId } from '@rocket.chat/fuselage-hooks'; import type { TranslationKey } from '@rocket.chat/ui-contexts'; import { useTranslation } from '@rocket.chat/ui-contexts'; import { useCallback, useMemo } from 'react'; @@ -35,6 +36,7 @@ const CustomField = ({ }: CustomFieldProps) => { const t = useTranslation(); const { errors } = useFormState({ control }); + const fieldId = useUniqueId(); const Component = FIELD_TYPES[type] ?? null; @@ -47,7 +49,7 @@ const CustomField = ({ const validateRequired = useCallback((value) => (required ? typeof value === 'string' && !!value.trim() : true), [required]); const getErrorMessage = useCallback( - (error: any) => { + (error) => { switch (error?.type) { case 'required': return t('The_field_is_required', label || name); @@ -71,14 +73,23 @@ const CustomField = ({ rules={{ minLength: props.minLength, maxLength: props.maxLength, validate: { required: validateRequired } }} render={({ field }) => ( - + {label || t(name as TranslationKey)} - {required && '*'} - + - {errorMessage} + + {errorMessage} + )} /> diff --git a/packages/web-ui-registration/src/RegisterForm.tsx b/packages/web-ui-registration/src/RegisterForm.tsx index db3879d6e027..32ba9238766d 100644 --- a/packages/web-ui-registration/src/RegisterForm.tsx +++ b/packages/web-ui-registration/src/RegisterForm.tsx @@ -34,8 +34,14 @@ export const RegisterForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRo const passwordConfirmationPlaceholder = String(useSetting('Accounts_ConfirmPasswordPlaceholder')); const formLabelId = useUniqueId(); - const passwordId = useUniqueId(); const passwordVerifierId = useUniqueId(); + const nameId = useUniqueId(); + const emailId = useUniqueId(); + const usernameId = useUniqueId(); + const passwordId = useUniqueId(); + const passwordConfirmationId = useUniqueId(); + const reasonId = useUniqueId(); + const registerUser = useRegisterMethod(); const customFields = useAccountsCustomFields(); @@ -54,7 +60,7 @@ export const RegisterForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRo formState: { errors }, } = useForm({ mode: 'onBlur' }); - const password = watch('password'); + const { password } = watch(); const passwordIsValid = useValidatePassword(password); const handleRegister = async ({ password, passwordConfirmation: _, ...formData }: LoginRegisterPayload) => { @@ -103,8 +109,8 @@ export const RegisterForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRo - - {requireNameForRegister ? `${t('registration.component.form.name')}*` : t('registration.component.form.nameOptional')} + + {t('registration.component.form.name')} - {errors.name && {t('registration.component.form.requiredField')}} + {errors.name && ( + + {t('registration.component.form.requiredField')} + + )} - {t('registration.component.form.email')}* + + {t('registration.component.form.email')} + - {errors.email && {errors.email.message || t('registration.component.form.requiredField')}} + {errors.email && ( + + {errors.email.message} + + )} - {t('registration.component.form.username')}* + + {t('registration.component.form.username')} + - {errors.username?.message && {errors.username.message}} - {errors.username?.type === 'required' && {t('registration.component.form.requiredField')}} + {errors.username && ( + + {errors.username.message} + + )} - {t('registration.component.form.password')}* + + {t('registration.component.form.password')} + {errors?.password && ( @@ -176,43 +201,53 @@ export const RegisterForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRo )} - {requiresPasswordConfirmation && ( + + {requiresPasswordConfirmation && ( + + {t('registration.component.form.confirmPassword')} watch('password') === val, + validate: (val: string) => (watch('password') === val ? true : t('registration.component.form.invalidConfirmPass')), })} - error={errors.passwordConfirmation?.type === 'validate' ? t('registration.component.form.invalidConfirmPass') : undefined} - aria-invalid={errors.passwordConfirmation ? 'true' : false} - id='passwordConfirmation' + error={errors.passwordConfirmation?.message} + aria-invalid={errors.passwordConfirmation ? 'true' : 'false'} + id={passwordConfirmationId} + aria-describedby={`${passwordConfirmationId}-error`} placeholder={passwordConfirmationPlaceholder || t('Confirm_password')} disabled={!passwordIsValid} /> - )} - {errors.passwordConfirmation?.type === 'validate' && requiresPasswordConfirmation && ( - {t('registration.component.form.invalidConfirmPass')} - )} - {errors.passwordConfirmation?.type === 'required' && requiresPasswordConfirmation && ( - {t('registration.component.form.requiredField')} - )} - + {errors.passwordConfirmation && ( + + {errors.passwordConfirmation.message} + + )} + + )} {manuallyApproveNewUsersRequired && ( - {t('registration.component.form.reasonToJoin')}* + + {t('registration.component.form.reasonToJoin')} + - {errors.reason && {t('registration.component.form.requiredField')}} + {errors.reason && ( + + {t('registration.component.form.requiredField')} + + )} )} From d418d0e752a69abecfe41ef84d1f7abf70a03d20 Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva Date: Wed, 6 Sep 2023 12:45:10 -0300 Subject: [PATCH 043/115] fix: added debounce to units and custom fields search (#30291) --- .../views/omnichannel/customFields/CustomFieldsTable.tsx | 7 ++++--- apps/meteor/ee/client/omnichannel/units/UnitsTable.tsx | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/meteor/client/views/omnichannel/customFields/CustomFieldsTable.tsx b/apps/meteor/client/views/omnichannel/customFields/CustomFieldsTable.tsx index b92fad97633a..d9ef416226cc 100644 --- a/apps/meteor/client/views/omnichannel/customFields/CustomFieldsTable.tsx +++ b/apps/meteor/client/views/omnichannel/customFields/CustomFieldsTable.tsx @@ -1,5 +1,5 @@ import { Pagination } from '@rocket.chat/fuselage'; -import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; +import { useDebouncedValue, useMutableCallback } from '@rocket.chat/fuselage-hooks'; import { useRoute, useTranslation, useEndpoint } from '@rocket.chat/ui-contexts'; import { useQuery } from '@tanstack/react-query'; import type { MutableRefObject } from 'react'; @@ -24,18 +24,19 @@ const CustomFieldsTable = ({ reload }: { reload: MutableRefObject<() => void> }) const t = useTranslation(); const [filter, setFilter] = useState(''); const departmentsRoute = useRoute('omnichannel-customfields'); + const debouncedFilter = useDebouncedValue(filter, 500); const { current, itemsPerPage, setItemsPerPage: onSetItemsPerPage, setCurrent: onSetCurrent, ...paginationProps } = usePagination(); const { sortBy, sortDirection, setSort } = useSort<'_id' | 'label' | 'scope' | 'visibility'>('_id'); const query = useMemo( () => ({ - text: filter, + text: debouncedFilter, sort: `{ "${sortBy}": ${sortDirection === 'asc' ? 1 : -1} }`, ...(itemsPerPage && { count: itemsPerPage }), ...(current && { offset: current }), }), - [filter, itemsPerPage, current, sortBy, sortDirection], + [debouncedFilter, itemsPerPage, current, sortBy, sortDirection], ); const getCustomFields = useEndpoint('GET', '/v1/livechat/custom-fields'); diff --git a/apps/meteor/ee/client/omnichannel/units/UnitsTable.tsx b/apps/meteor/ee/client/omnichannel/units/UnitsTable.tsx index a9ab094229f6..f85b73216612 100644 --- a/apps/meteor/ee/client/omnichannel/units/UnitsTable.tsx +++ b/apps/meteor/ee/client/omnichannel/units/UnitsTable.tsx @@ -1,5 +1,5 @@ import { Pagination } from '@rocket.chat/fuselage'; -import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; +import { useDebouncedValue, useMutableCallback } from '@rocket.chat/fuselage-hooks'; import { useEndpoint, useRoute, useTranslation } from '@rocket.chat/ui-contexts'; import { useQuery } from '@tanstack/react-query'; import type { MutableRefObject } from 'react'; @@ -24,6 +24,7 @@ const UnitsTable = ({ reload }: { reload: MutableRefObject<() => void> }) => { const t = useTranslation(); const [filter, setFilter] = useState(''); const unitsRoute = useRoute('omnichannel-units'); + const debouncedFilter = useDebouncedValue(filter, 500); const { current, itemsPerPage, setItemsPerPage: onSetItemsPerPage, setCurrent: onSetCurrent, ...paginationProps } = usePagination(); const { sortBy, sortDirection, setSort } = useSort<'name' | 'visibility'>('name'); @@ -31,12 +32,12 @@ const UnitsTable = ({ reload }: { reload: MutableRefObject<() => void> }) => { const query = useMemo( () => ({ fields: JSON.stringify({ name: 1 }), - text: filter, + text: debouncedFilter, sort: JSON.stringify({ [sortBy]: sortDirection === 'asc' ? 1 : -1 }), ...(itemsPerPage && { count: itemsPerPage }), ...(current && { offset: current }), }), - [filter, itemsPerPage, current, sortBy, sortDirection], + [debouncedFilter, itemsPerPage, current, sortBy, sortDirection], ); const getUnits = useEndpoint('GET', '/v1/livechat/units'); From ace35997a635328e9d2b645bae6db475784d00f7 Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Wed, 6 Sep 2023 09:59:09 -0600 Subject: [PATCH 044/115] chore: Increase cache time to 10s on `getUnits` function (#30285) --- .changeset/three-birds-tickle.md | 5 +++++ apps/meteor/ee/app/livechat-enterprise/server/lib/units.ts | 2 +- .../server/methods/getUnitsFromUserRoles.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/three-birds-tickle.md diff --git a/.changeset/three-birds-tickle.md b/.changeset/three-birds-tickle.md new file mode 100644 index 000000000000..0ce911d9f6fa --- /dev/null +++ b/.changeset/three-birds-tickle.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +chore: Increase cache time from 5s to 10s on `getUnits` helpers. This should reduce the number of DB calls made by this method to fetch the unit limitations for a user. diff --git a/apps/meteor/ee/app/livechat-enterprise/server/lib/units.ts b/apps/meteor/ee/app/livechat-enterprise/server/lib/units.ts index d550b1335978..58a75abc943c 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/lib/units.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/units.ts @@ -8,7 +8,7 @@ async function hasUnits(): Promise { } // Units should't change really often, so we can cache the result -const memoizedHasUnits = mem(hasUnits, { maxAge: 5000 }); +const memoizedHasUnits = mem(hasUnits, { maxAge: 10000 }); export async function getUnitsFromUser(): Promise<{ [k: string]: any }[] | undefined> { if (!(await memoizedHasUnits())) { diff --git a/apps/meteor/ee/app/livechat-enterprise/server/methods/getUnitsFromUserRoles.ts b/apps/meteor/ee/app/livechat-enterprise/server/methods/getUnitsFromUserRoles.ts index 0a6663c1f0b3..dd0f3867f574 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/methods/getUnitsFromUserRoles.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/methods/getUnitsFromUserRoles.ts @@ -17,7 +17,7 @@ async function getUnitsFromUserRoles(user: string | null): Promise Date: Wed, 6 Sep 2023 15:02:39 -0300 Subject: [PATCH 045/115] chore: prevent unneeded calls to EE settings service (#30249) --- .../modules/listeners/listeners.module.ts | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/meteor/server/modules/listeners/listeners.module.ts b/apps/meteor/server/modules/listeners/listeners.module.ts index 973b542bf54a..f21081e43d0a 100644 --- a/apps/meteor/server/modules/listeners/listeners.module.ts +++ b/apps/meteor/server/modules/listeners/listeners.module.ts @@ -2,8 +2,9 @@ import type { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; import type { ISetting as AppsSetting } from '@rocket.chat/apps-engine/definition/settings'; import type { IServiceClass } from '@rocket.chat/core-services'; import { EnterpriseSettings } from '@rocket.chat/core-services'; -import { UserStatus, isSettingColor } from '@rocket.chat/core-typings'; +import { UserStatus, isSettingColor, isSettingEnterprise } from '@rocket.chat/core-typings'; import type { IUser, IRoom, VideoConference, ISetting, IOmnichannelRoom } from '@rocket.chat/core-typings'; +import { Logger } from '@rocket.chat/logger'; import { parse } from '@rocket.chat/message-parser'; import { settings } from '../../../app/settings/server/cached'; @@ -26,6 +27,8 @@ const minimongoChangeMap: Record = { export class ListenersModule { constructor(service: IServiceClass, notifications: NotificationsModule) { + const logger = new Logger('ListenersModule'); + service.onEvent('emoji.deleteCustom', (emoji) => { notifications.notifyLoggedInThisInstance('deleteEmojiCustom', { emojiData: emoji, @@ -247,11 +250,16 @@ export class ListenersModule { }); service.onEvent('watch.settings', async ({ clientAction, setting }): Promise => { - if (clientAction !== 'removed') { - // TODO check if setting is EE before calling this - const result = await EnterpriseSettings.changeSettingValue(setting); - if (result !== undefined && !(result instanceof Error)) { - setting.value = result; + // if a EE setting changed make sure we broadcast the correct value according to license + if (clientAction !== 'removed' && isSettingEnterprise(setting)) { + try { + const result = await EnterpriseSettings.changeSettingValue(setting); + if (result !== undefined && !(result instanceof Error)) { + setting.value = result; + } + } catch (err: unknown) { + logger.error({ msg: 'Error getting proper enterprise setting value. Returning `invalidValue` instead.', err }); + setting.value = setting.invalidValue; } } From 69bb4771d76fdeaf95c439a90597223397d9e3eb Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Wed, 6 Sep 2023 15:02:39 -0300 Subject: [PATCH 046/115] chore: prevent unneeded calls to EE settings service (#30249) --- .../modules/listeners/listeners.module.ts | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/meteor/server/modules/listeners/listeners.module.ts b/apps/meteor/server/modules/listeners/listeners.module.ts index 5c46343f67a4..856b91efce56 100644 --- a/apps/meteor/server/modules/listeners/listeners.module.ts +++ b/apps/meteor/server/modules/listeners/listeners.module.ts @@ -1,10 +1,11 @@ import type { ISetting as AppsSetting } from '@rocket.chat/apps-engine/definition/settings'; -import { UserStatus, isSettingColor } from '@rocket.chat/core-typings'; +import { UserStatus, isSettingColor, isSettingEnterprise } from '@rocket.chat/core-typings'; import type { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; -import type { IUser, IRoom, VideoConference, ISetting, IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { parse } from '@rocket.chat/message-parser'; import type { IServiceClass } from '@rocket.chat/core-services'; import { EnterpriseSettings } from '@rocket.chat/core-services'; +import type { IUser, IRoom, VideoConference, ISetting, IOmnichannelRoom } from '@rocket.chat/core-typings'; +import { Logger } from '@rocket.chat/logger'; +import { parse } from '@rocket.chat/message-parser'; import type { NotificationsModule } from '../notifications/notifications.module'; import { settings } from '../../../app/settings/server/cached'; @@ -26,6 +27,8 @@ const minimongoChangeMap: Record = { export class ListenersModule { constructor(service: IServiceClass, notifications: NotificationsModule) { + const logger = new Logger('ListenersModule'); + service.onEvent('emoji.deleteCustom', (emoji) => { notifications.notifyLoggedInThisInstance('deleteEmojiCustom', { emojiData: emoji, @@ -247,11 +250,16 @@ export class ListenersModule { }); service.onEvent('watch.settings', async ({ clientAction, setting }): Promise => { - if (clientAction !== 'removed') { - // TODO check if setting is EE before calling this - const result = await EnterpriseSettings.changeSettingValue(setting); - if (result !== undefined && !(result instanceof Error)) { - setting.value = result; + // if a EE setting changed make sure we broadcast the correct value according to license + if (clientAction !== 'removed' && isSettingEnterprise(setting)) { + try { + const result = await EnterpriseSettings.changeSettingValue(setting); + if (result !== undefined && !(result instanceof Error)) { + setting.value = result; + } + } catch (err: unknown) { + logger.error({ msg: 'Error getting proper enterprise setting value. Returning `invalidValue` instead.', err }); + setting.value = setting.invalidValue; } } From 8ca4ac78cf5584bc02b6faa92781d1171ebcd01f Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Wed, 6 Sep 2023 16:56:47 -0300 Subject: [PATCH 047/115] chore: fix logger import --- apps/meteor/server/modules/listeners/listeners.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/server/modules/listeners/listeners.module.ts b/apps/meteor/server/modules/listeners/listeners.module.ts index 856b91efce56..06e494fdb556 100644 --- a/apps/meteor/server/modules/listeners/listeners.module.ts +++ b/apps/meteor/server/modules/listeners/listeners.module.ts @@ -4,11 +4,11 @@ import type { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus'; import type { IServiceClass } from '@rocket.chat/core-services'; import { EnterpriseSettings } from '@rocket.chat/core-services'; import type { IUser, IRoom, VideoConference, ISetting, IOmnichannelRoom } from '@rocket.chat/core-typings'; -import { Logger } from '@rocket.chat/logger'; import { parse } from '@rocket.chat/message-parser'; import type { NotificationsModule } from '../notifications/notifications.module'; import { settings } from '../../../app/settings/server/cached'; +import { Logger } from '../../lib/logger/Logger'; const isMessageParserDisabled = process.env.DISABLE_MESSAGE_PARSER === 'true'; From 03bda64be6853e9e858a961ec64e0b4a7030917f Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Wed, 6 Sep 2023 16:57:19 -0300 Subject: [PATCH 048/115] chore: Add `body` on axe scope to avoid false positive results (#30311) --- apps/meteor/tests/e2e/utils/test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/tests/e2e/utils/test.ts b/apps/meteor/tests/e2e/utils/test.ts index 5ccea233d88a..81479231fd65 100644 --- a/apps/meteor/tests/e2e/utils/test.ts +++ b/apps/meteor/tests/e2e/utils/test.ts @@ -117,7 +117,7 @@ export const test = baseTest.extend({ makeAxeBuilder: async ({ page }, use) => { const SELECT_KNOW_ISSUES = ['aria-hidden-focus', 'nested-interactive'] - const makeAxeBuilder = () => new AxeBuilder({ page }).withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']).disableRules(['document-title', ...SELECT_KNOW_ISSUES]); + const makeAxeBuilder = () => new AxeBuilder({ page }).withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']).include('body').disableRules([...SELECT_KNOW_ISSUES]); await use(makeAxeBuilder); } }); From 516658dcfcc27169c6ebfebf82dd27a5d7801b80 Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva Date: Wed, 6 Sep 2023 18:37:45 -0300 Subject: [PATCH 049/115] fix: Selected options not being displayed for monitors and departments (#30292) Co-authored-by: Kevin Aleman <11577696+KevLehman@users.noreply.github.com> --- .../views/hooks/useDepartmentsByUnitsList.ts | 1 - .../client/views/hooks/useMonitorsList.ts | 12 ++++----- .../server/lib/Department.ts | 2 +- .../ee/client/omnichannel/units/UnitEdit.js | 25 +++++++++---------- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/apps/meteor/client/views/hooks/useDepartmentsByUnitsList.ts b/apps/meteor/client/views/hooks/useDepartmentsByUnitsList.ts index ceb7dc933df5..6c402a199ded 100644 --- a/apps/meteor/client/views/hooks/useDepartmentsByUnitsList.ts +++ b/apps/meteor/client/views/hooks/useDepartmentsByUnitsList.ts @@ -45,7 +45,6 @@ export const useDepartmentsByUnitsList = ( name: department.archived ? `${name} [${t('Archived')}]` : name, label: name, value: _id, - ...(_updatedAt && { _updatedAt: new Date(_updatedAt) }), }; }), itemCount: total, diff --git a/apps/meteor/client/views/hooks/useMonitorsList.ts b/apps/meteor/client/views/hooks/useMonitorsList.ts index 4d9ccba5c883..512b49d49d8e 100644 --- a/apps/meteor/client/views/hooks/useMonitorsList.ts +++ b/apps/meteor/client/views/hooks/useMonitorsList.ts @@ -33,15 +33,15 @@ export const useMonitorsList = ( text: options.filter, offset: start, count: end + start, + sort: JSON.stringify({ username: 1 }), }); return { - items: monitors.map((members: any) => { - members._updatedAt = new Date(members._updatedAt); - members.label = members.username; - members.value = members._id; - return members; - }), + items: monitors.map((members: any) => ({ + ...members, + label: members.username, + value: members._id, + })), itemCount: total, }; }, diff --git a/apps/meteor/ee/app/livechat-enterprise/server/lib/Department.ts b/apps/meteor/ee/app/livechat-enterprise/server/lib/Department.ts index b70ee79b6a94..094f0c9000d4 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/lib/Department.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/Department.ts @@ -24,7 +24,7 @@ export const findAllDepartmentsAvailable = async ( query = await callbacks.run('livechat.applyDepartmentRestrictions', query, { userId: uid }); } - const { cursor, totalCount } = LivechatDepartment.findPaginated(query, { limit: count, offset }); + const { cursor, totalCount } = LivechatDepartment.findPaginated(query, { limit: count, offset, sort: { name: 1 } }); const [departments, total] = await Promise.all([cursor.toArray(), totalCount]); diff --git a/apps/meteor/ee/client/omnichannel/units/UnitEdit.js b/apps/meteor/ee/client/omnichannel/units/UnitEdit.js index 297a25d4a4c1..2c172bcf38c6 100644 --- a/apps/meteor/ee/client/omnichannel/units/UnitEdit.js +++ b/apps/meteor/ee/client/omnichannel/units/UnitEdit.js @@ -33,17 +33,6 @@ function UnitEdit({ title, data, unitId, isNew, unitMonitors, unitDepartments, r const { phase: departmentsPhase, items: departmentsItems, itemCount: departmentsTotal } = useRecordList(departmentsList); - const departmentsSortedByName = departmentsItems.sort((a, b) => { - if (a.name > b.name) { - return 1; - } - if (a.name < b.name) { - return -1; - } - - return 0; - }); - const unit = data || {}; const currUnitMonitors = useMemo( @@ -82,6 +71,16 @@ function UnitEdit({ title, data, unitId, isNew, unitMonitors, unitDepartments, r const { handleName, handleVisibility, handleDepartments, handleMonitors } = handlers; const { name, visibility, departments, monitors } = values; + const departmentsOptions = useMemo(() => { + const pending = departments.filter(({ value }) => !departmentsItems.find((dep) => dep.value === value)); + return [...departmentsItems, ...pending]; + }, [departments, departmentsItems]); + + const monitorsOptions = useMemo(() => { + const pending = monitors.filter(({ value }) => !monitorsItems.find((mon) => mon.value === value)); + return [...monitorsItems, ...pending]; + }, [monitors, monitorsItems]); + const nameError = useMemo(() => (!name || name.length === 0 ? t('The_field_is_required', t('name')) : undefined), [name, t]); const visibilityError = useMemo( () => (!visibility || visibility.length === 0 ? t('The_field_is_required', t('description')) : undefined), @@ -172,7 +171,7 @@ function UnitEdit({ title, data, unitId, isNew, unitMonitors, unitDepartments, r withTitle filter={departmentsFilter} setFilter={setDepartmentsFilter} - options={departmentsSortedByName} + options={departmentsOptions} value={departments} error={hasUnsavedChanges && departmentError} maxWidth='100%' @@ -194,7 +193,7 @@ function UnitEdit({ title, data, unitId, isNew, unitMonitors, unitDepartments, r withTitle filter={monitorsFilter} setFilter={setMonitorsFilter} - options={monitorsItems} + options={monitorsOptions} value={monitors} error={hasUnsavedChanges && unitMonitorsError} maxWidth='100%' From 0409097ff0ea411586704bc0a75844f8dffa3c4a Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Wed, 6 Sep 2023 19:57:57 -0300 Subject: [PATCH 050/115] test: codecov flags (#30302) --- .github/workflows/ci-test-e2e.yml | 3 +++ .github/workflows/ci-test-unit.yml | 4 ++++ .github/workflows/ci.yml | 3 +++ codecov.yml | 9 +++++++++ 4 files changed, 19 insertions(+) diff --git a/.github/workflows/ci-test-e2e.yml b/.github/workflows/ci-test-e2e.yml index 9a05543605db..e14857a97a09 100644 --- a/.github/workflows/ci-test-e2e.yml +++ b/.github/workflows/ci-test-e2e.yml @@ -57,6 +57,8 @@ on: required: false REPORTER_ROCKETCHAT_API_KEY: required: false + CODECOV_TOKEN: + required: false env: MONGO_URL: mongodb://localhost:27017/rocketchat?replicaSet=rs0&directConnection=true @@ -237,6 +239,7 @@ jobs: directory: ./apps/meteor flags: e2e verbose: true + token: ${{ secrets.CODECOV_TOKEN }} - name: Store e2e-ee-coverage if: inputs.type == 'ui' && inputs.release == 'ee' diff --git a/.github/workflows/ci-test-unit.yml b/.github/workflows/ci-test-unit.yml index 03c6bc2352ab..b4ef5cb273ad 100644 --- a/.github/workflows/ci-test-unit.yml +++ b/.github/workflows/ci-test-unit.yml @@ -6,6 +6,9 @@ on: node-version: required: true type: string + secrets: + CODECOV_TOKEN: + required: false env: MONGO_URL: mongodb://localhost:27017/rocketchat?replicaSet=rs0&directConnection=true @@ -36,3 +39,4 @@ jobs: with: flags: unit verbose: true + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3fe46ecf66c3..70ec4dcba6ed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -337,6 +337,8 @@ jobs: uses: ./.github/workflows/ci-test-unit.yml with: node-version: ${{ needs.release-versions.outputs.node-version }} + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} test-api: name: 🔨 Test API (CE) @@ -431,6 +433,7 @@ jobs: QASE_API_TOKEN: ${{ secrets.QASE_API_TOKEN }} REPORTER_ROCKETCHAT_API_KEY: ${{ secrets.REPORTER_ROCKETCHAT_API_KEY }} REPORTER_ROCKETCHAT_URL: ${{ secrets.REPORTER_ROCKETCHAT_URL }} + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} tests-done: name: ✅ Tests Done diff --git a/codecov.yml b/codecov.yml index 0a3501678c1e..2fe2eaf32b42 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,3 +1,5 @@ +codecov: + max_report_age: off coverage: status: patch: off @@ -10,6 +12,13 @@ coverage: flags: - client flags: + unit: + carryforward: true + e2e: + paths: + - apps/meteor/ + carryforward: true + client: paths: - apps/meteor/client From fb98eebb1101182f65054ab586fffa5dc7427f63 Mon Sep 17 00:00:00 2001 From: Tiago Evangelista Pinto Date: Wed, 6 Sep 2023 20:43:28 -0300 Subject: [PATCH 051/115] regression: Change UiKit buttons event handler (#30310) --- .../fuselage-ui-kit/src/elements/ButtonElement.tsx | 10 +++++++--- packages/fuselage-ui-kit/src/hooks/useUiKitState.ts | 5 +++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/fuselage-ui-kit/src/elements/ButtonElement.tsx b/packages/fuselage-ui-kit/src/elements/ButtonElement.tsx index c7fe05971e27..1f80358b3d93 100644 --- a/packages/fuselage-ui-kit/src/elements/ButtonElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/ButtonElement.tsx @@ -1,6 +1,6 @@ import { Button, Throbber } from '@rocket.chat/fuselage'; import * as UiKit from '@rocket.chat/ui-kit'; -import type { ReactElement } from 'react'; +import type { MouseEventHandler, ReactElement } from 'react'; import { useUiKitState } from '../hooks/useUiKitState'; import type { BlockProps } from '../utils/BlockProps'; @@ -15,6 +15,10 @@ const ButtonElement = ({ const [{ loading }, action] = useUiKitState(block, context); const { style, url, text, value, secondary } = block; + const handleClick: MouseEventHandler = (e) => { + action({ target: e.currentTarget }); + }; + if (url) { return ( - + diff --git a/apps/meteor/client/views/account/accessibility/HighContrastUpsellModal.tsx b/apps/meteor/client/views/account/accessibility/HighContrastUpsellModal.tsx index c06501aae282..bcb28ea587d1 100644 --- a/apps/meteor/client/views/account/accessibility/HighContrastUpsellModal.tsx +++ b/apps/meteor/client/views/account/accessibility/HighContrastUpsellModal.tsx @@ -33,7 +33,7 @@ const HighContrastUpsellModal = ({ onClose }: { onClose: () => void }) => { onClose={onClose} onCancel={handleTalkToSales} onConfirm={handleGoFullyFeatured} - cancelText={t('Talk_to_sales')} + cancelText={t('Talk_to_an_expert')} confirmText={t('Start_free_trial')} /> ); diff --git a/apps/meteor/client/views/account/accessibility/MentionsWithSymbolUpsellModal.tsx b/apps/meteor/client/views/account/accessibility/MentionsWithSymbolUpsellModal.tsx new file mode 100644 index 000000000000..8a998af348c0 --- /dev/null +++ b/apps/meteor/client/views/account/accessibility/MentionsWithSymbolUpsellModal.tsx @@ -0,0 +1,41 @@ +import { useRole, useTranslation } from '@rocket.chat/ui-contexts'; +import React from 'react'; + +import GenericUpsellModal from '../../../components/GenericUpsellModal'; +import { useUpsellActions } from '../../../components/GenericUpsellModal/hooks'; + +const MentionsWithSymbolUpsellModal = ({ onClose }: { onClose: () => void }) => { + const t = useTranslation(); + + const isAdmin = useRole('admin'); + const { handleGoFullyFeatured, handleTalkToSales } = useUpsellActions(); + + if (!isAdmin) { + return ( + + ); + } + return ( + + ); +}; +export default MentionsWithSymbolUpsellModal; diff --git a/apps/meteor/client/views/account/accessibility/hooks/useAcessibilityPreferencesValues.ts b/apps/meteor/client/views/account/accessibility/hooks/useAcessibilityPreferencesValues.ts new file mode 100644 index 000000000000..339cdcff7dd9 --- /dev/null +++ b/apps/meteor/client/views/account/accessibility/hooks/useAcessibilityPreferencesValues.ts @@ -0,0 +1,31 @@ +import type { FontSize } from '@rocket.chat/rest-typings'; +import { useUserPreference } from '@rocket.chat/ui-contexts'; +import type { ThemePreference } from '@rocket.chat/ui-theming/src/types/themes'; + +export type AccessibilityPreferencesData = { + themeAppearence?: ThemePreference; + fontSize?: FontSize; + fontSizePreference?: FontSize; + mentionsWithSymbol?: boolean; + clockMode?: 0 | 1 | 2; + hideUsernames?: boolean; + hideRoles?: boolean; +}; + +export const useAccessiblityPreferencesValues = (): AccessibilityPreferencesData => { + const themeAppearence = useUserPreference('themeAppearence') || 'auto'; + const fontSize = useUserPreference('fontSize') || '100%'; + const mentionsWithSymbol = useUserPreference('mentionsWithSymbol') || false; + const clockMode = useUserPreference<0 | 1 | 2>('clockMode') ?? 0; + const hideUsernames = useUserPreference('hideUsernames'); + const hideRoles = useUserPreference('hideRoles'); + + return { + themeAppearence, + fontSize, + mentionsWithSymbol, + clockMode, + hideUsernames, + hideRoles, + }; +}; diff --git a/apps/meteor/client/views/account/accessibility/hooks/useAdsjustableFontSize.tsx b/apps/meteor/client/views/account/accessibility/hooks/useAdsjustableFontSize.tsx deleted file mode 100644 index 35607de1f9b5..000000000000 --- a/apps/meteor/client/views/account/accessibility/hooks/useAdsjustableFontSize.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import type { FontSize } from '@rocket.chat/rest-typings'; -import { useUserPreference } from '@rocket.chat/ui-contexts'; -import { useState } from 'react'; - -import { useCreateFontStyleElement } from './useCreateFontStyleElement'; - -export const useAdjustableFontSize = (): [FontSize, (value: FontSize) => void] => { - const fontSizePreference = useUserPreference('fontSize') || '100%'; - const [fontSize, setFontSize] = useState(fontSizePreference); - - useCreateFontStyleElement(fontSize); - - return [fontSize, setFontSize]; -}; diff --git a/apps/meteor/client/views/account/accessibility/hooks/useCreateFontStyleElement.ts b/apps/meteor/client/views/account/accessibility/hooks/useCreateFontStyleElement.ts index 63ecd3c0cf4b..923b3af88c60 100644 --- a/apps/meteor/client/views/account/accessibility/hooks/useCreateFontStyleElement.ts +++ b/apps/meteor/client/views/account/accessibility/hooks/useCreateFontStyleElement.ts @@ -1,4 +1,4 @@ -import { useEffect } from 'react'; +import { useMemo } from 'react'; const createStyleElement = (id: string) => { const styleElement = document.getElementById(id); @@ -10,11 +10,14 @@ const createStyleElement = (id: string) => { return newStyleElement; }; -export const useCreateFontStyleElement = (fontSize: string): void => { - useEffect(() => { - const styleElement = createStyleElement('rcx-font-size'); - const css = `html { font-size: ${fontSize}; }`; - styleElement.innerHTML = css; - document.head.appendChild(styleElement); - }, [fontSize]); +export const useCreateFontStyleElement = (): ((fontSize: string) => void) => { + return useMemo( + () => (fontSize: string) => { + const styleElement = createStyleElement('rcx-font-size'); + const css = `html { font-size: ${fontSize}; }`; + styleElement.innerHTML = css; + document.head.appendChild(styleElement); + }, + [], + ); }; diff --git a/apps/meteor/client/views/account/preferences/PreferencesMessagesSection.tsx b/apps/meteor/client/views/account/preferences/PreferencesMessagesSection.tsx index e5157d517967..30c4c5fe6725 100644 --- a/apps/meteor/client/views/account/preferences/PreferencesMessagesSection.tsx +++ b/apps/meteor/client/views/account/preferences/PreferencesMessagesSection.tsx @@ -1,14 +1,16 @@ import type { SelectOption } from '@rocket.chat/fuselage'; -import { Accordion, Field, Select, FieldGroup, ToggleSwitch, Box } from '@rocket.chat/fuselage'; +import { FieldDescription, FieldLabel, Accordion, Field, Select, FieldGroup, ToggleSwitch, Box } from '@rocket.chat/fuselage'; import { useUniqueId } from '@rocket.chat/fuselage-hooks'; -import { useSetting, useTranslation } from '@rocket.chat/ui-contexts'; +import { useRouter, useTranslation } from '@rocket.chat/ui-contexts'; import React, { useMemo } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; const PreferencesMessagesSection = () => { const t = useTranslation(); - const displayRolesEnabled = useSetting('UI_DisplayRoles'); const { control } = useFormContext(); + const router = useRouter(); + + const handleGoToAccessibilityPage = () => router.navigate('/account/accessibility-and-appearance'); const alsoSendThreadMessageToChannelOptions = useMemo( (): SelectOption[] => [ @@ -19,15 +21,6 @@ const PreferencesMessagesSection = () => { [t], ); - const timeFormatOptions = useMemo( - (): SelectOption[] => [ - ['0', t('Default')], // TO DO: update SelectOption type to accept number as first item - ['1', t('12_Hour')], - ['2', t('24_Hour')], - ], - [t], - ); - const sendOnEnterOptions = useMemo( (): SelectOption[] => [ ['normal', t('Enter_Normal')], @@ -40,14 +33,11 @@ const PreferencesMessagesSection = () => { const unreadAlertId = useUniqueId(); const showThreadsInMainChannelId = useUniqueId(); const alsoSendThreadToChannelId = useUniqueId(); - const clockModeId = useUniqueId(); const useEmojisId = useUniqueId(); const convertAsciiEmojiId = useUniqueId(); const autoImageLoadId = useUniqueId(); const saveMobileBandwidthId = useUniqueId(); const collapseMediaByDefaultId = useUniqueId(); - const hideUsernamesId = useUniqueId(); - const hideRolesId = useUniqueId(); const hideFlexTabId = useUniqueId(); const displayAvatarsId = useUniqueId(); const sendOnEnterId = useUniqueId(); @@ -114,16 +104,10 @@ const PreferencesMessagesSection = () => { - {t('Message_TimeFormat')} - - ( - - {children} - - ); -} diff --git a/packages/livechat/src/components/FilesDropTarget/index.tsx b/packages/livechat/src/components/FilesDropTarget/index.tsx new file mode 100644 index 000000000000..3e9935c37565 --- /dev/null +++ b/packages/livechat/src/components/FilesDropTarget/index.tsx @@ -0,0 +1,122 @@ +import type { ComponentChildren, Ref } from 'preact'; +import type { TargetedEvent } from 'preact/compat'; +import { useState } from 'preact/hooks'; +import type { JSXInternal } from 'preact/src/jsx'; + +import { createClassName } from '../../helpers/createClassName'; +import styles from './styles.scss'; + +const escapeForRegExp = (string: string) => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + +type FilesDropTargetProps = { + overlayed?: boolean; + overlayText?: string; + accept?: string; + multiple?: boolean; + className?: string; + style?: JSXInternal.CSSProperties; + children?: ComponentChildren; + inputRef?: Ref; + onUpload?: (files: File[]) => void; +}; + +export const FilesDropTarget = ({ + overlayed, + overlayText, + accept, + multiple, + className, + style = {}, + children, + inputRef, + onUpload, +}: FilesDropTargetProps) => { + const [dragLevel, setDragLevel] = useState(0); + + const handleDragOver = (event: DragEvent) => { + event.preventDefault(); + }; + + const handleDragEnter = (event: DragEvent) => { + event.preventDefault(); + setDragLevel(dragLevel + 1); + }; + + const handleDragLeave = (event: DragEvent) => { + event.preventDefault(); + setDragLevel(dragLevel - 1); + }; + + const handleDrop = (event: DragEvent) => { + event.preventDefault(); + + if (dragLevel === 0 || !event?.dataTransfer?.files?.length) { + return; + } + + setDragLevel(0); + + handleUpload(event?.dataTransfer?.files); + }; + + const handleInputChange = (event: TargetedEvent) => { + if (!event?.currentTarget?.files?.length) { + return; + } + + handleUpload(event.currentTarget.files); + }; + + const handleUpload = (files: FileList) => { + if (!onUpload) { + return; + } + + let filteredFiles = Array.from(files); + + if (accept) { + const acceptMatchers = accept.split(',').map((acceptString) => { + if (acceptString.charAt(0) === '.') { + return ({ name }: { name: string }) => new RegExp(`${escapeForRegExp(acceptString)}$`, 'i').test(name); + } + + const matchTypeOnly = /^(.+)\/\*$/i.exec(acceptString); + if (matchTypeOnly) { + return ({ type }: { type: string }) => new RegExp(`^${escapeForRegExp(matchTypeOnly[1])}/.*$`, 'i').test(type); + } + + return ({ type }: { type: string }) => new RegExp(`^s${escapeForRegExp(acceptString)}$`, 'i').test(type); + }); + + filteredFiles = filteredFiles.filter((file) => acceptMatchers.some((acceptMatcher) => acceptMatcher(file))); + } + + if (!multiple) { + filteredFiles = filteredFiles.slice(0, 1); + } + + filteredFiles.length && onUpload(filteredFiles); + }; + + return ( +
0 }, [className])} + style={style} + > + + {children} +
+ ); +}; diff --git a/packages/livechat/src/components/FilesDropTarget/stories.tsx b/packages/livechat/src/components/FilesDropTarget/stories.tsx index e1a01cbaea09..d687fbaad492 100644 --- a/packages/livechat/src/components/FilesDropTarget/stories.tsx +++ b/packages/livechat/src/components/FilesDropTarget/stories.tsx @@ -71,7 +71,7 @@ AcceptingMultipleFiles.args = { export const TriggeringBrowseAction = Template.bind({}); TriggeringBrowseAction.storyName = 'triggering browse action'; -const ref = createRef(); +const inputRef = createRef(); TriggeringBrowseAction.args = { children: (
- +
), - ref, + inputRef, }; diff --git a/packages/livechat/src/routes/Chat/component.js b/packages/livechat/src/routes/Chat/component.js index 98991ab72b53..8bd9ac468c6e 100644 --- a/packages/livechat/src/routes/Chat/component.js +++ b/packages/livechat/src/routes/Chat/component.js @@ -1,4 +1,4 @@ -import { Component } from 'preact'; +import { Component, createRef } from 'preact'; import { Suspense, lazy } from 'preact/compat'; import { withTranslation } from 'react-i18next'; @@ -35,6 +35,8 @@ class Chat extends Component { emojiPickerActive: false, }; + inputRef = createRef(null); + handleFilesDropTargetRef = (ref) => { this.filesDropTarget = ref; }; @@ -61,7 +63,7 @@ class Chat extends Component { handleUploadClick = (event) => { event.preventDefault(); - this.filesDropTarget.browse(); + this.inputRef?.current?.click(); }; handleSendClick = (event) => { @@ -151,7 +153,7 @@ class Chat extends Component { handleEmojiClick={this.handleEmojiClick} {...props} > - + {incomingCallAlert && !!incomingCallAlert.show && } {incomingCallAlert?.show && ongoingCall && ongoingCall.callStatus === CallStatus.IN_PROGRESS_SAME_TAB ? ( From 781bdfe9055ce1178629d5e6d0c147c2071356c0 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Thu, 14 Sep 2023 14:47:15 -0300 Subject: [PATCH 099/115] regression: commit subject alignment --- apps/meteor/client/views/admin/info/DeploymentCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/meteor/client/views/admin/info/DeploymentCard.tsx b/apps/meteor/client/views/admin/info/DeploymentCard.tsx index 6bc9ece2b850..7a95e7aae018 100644 --- a/apps/meteor/client/views/admin/info/DeploymentCard.tsx +++ b/apps/meteor/client/views/admin/info/DeploymentCard.tsx @@ -65,7 +65,7 @@ const DeploymentCard = ({ info, statistics, instances }: DeploymentCardProps): R {t('Commit_details')} {t('github_HEAD')}: ({commit.hash ? commit.hash.slice(0, 9) : ''})
- {t('Branch')}: {commit.branch} + {t('Branch')}: {commit.branch}
{commit.subject}
From 3bbe12e8502680151b488816d903d8d46372d06e Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Thu, 14 Sep 2023 18:10:03 +0000 Subject: [PATCH 100/115] Bump 6.3.6 --- .changeset/bump-patch-1694715003701.md | 5 +++++ yarn.lock | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/bump-patch-1694715003701.md diff --git a/.changeset/bump-patch-1694715003701.md b/.changeset/bump-patch-1694715003701.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1694715003701.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/yarn.lock b/yarn.lock index 2c9a3afee277..f74e6ebcd635 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.4 + "@rocket.chat/ui-contexts": 1.0.5 "@rocket.chat/ui-kit": "*" - "@rocket.chat/ui-video-conf": 1.0.4 + "@rocket.chat/ui-video-conf": 1.0.5 "@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.4 + "@rocket.chat/core-typings": 6.3.5 "@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.4 - "@rocket.chat/ui-contexts": 1.0.4 + "@rocket.chat/ui-client": 1.0.5 + "@rocket.chat/ui-contexts": 1.0.5 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.4 + "@rocket.chat/ui-contexts": 1.0.5 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.4 + "@rocket.chat/ui-contexts": 1.0.5 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.4 + "@rocket.chat/ui-contexts": 1.0.5 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" From 285e591a732d0c8f3f4ba7917a9a9dc41c785232 Mon Sep 17 00:00:00 2001 From: Rafael Tapia Date: Thu, 7 Sep 2023 15:43:15 -0300 Subject: [PATCH 101/115] fix: engagement dashboard not working (#30277) --- .changeset/lucky-balloons-divide.md | 5 +++++ apps/meteor/app/statistics/server/lib/SAUMonitor.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/lucky-balloons-divide.md diff --git a/.changeset/lucky-balloons-divide.md b/.changeset/lucky-balloons-divide.md new file mode 100644 index 000000000000..beb4cbfe3b57 --- /dev/null +++ b/.changeset/lucky-balloons-divide.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Fix engagement dashboard not showing data diff --git a/apps/meteor/app/statistics/server/lib/SAUMonitor.ts b/apps/meteor/app/statistics/server/lib/SAUMonitor.ts index de6b0877d973..370bb3774e20 100644 --- a/apps/meteor/app/statistics/server/lib/SAUMonitor.ts +++ b/apps/meteor/app/statistics/server/lib/SAUMonitor.ts @@ -46,7 +46,7 @@ export class SAUMonitorClass { constructor() { this._started = false; this._dailyComputeJobName = 'aggregate-sessions'; - this._dailyFinishSessionsJobName = 'aggregate-sessions'; + this._dailyFinishSessionsJobName = 'finish-sessions'; } async start(): Promise { From 886631bef6c6dcaae58f5143f869b0d6e38e0aeb Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Thu, 14 Sep 2023 12:20:48 -0600 Subject: [PATCH 102/115] regression: Move queue-timeout setting to CE and remove dependency on waiting queue (#30386) --- .../app/livechat-enterprise/server/settings.ts | 16 ---------------- apps/meteor/server/services/omnichannel/queue.ts | 2 +- apps/meteor/server/settings/omnichannel.ts | 10 ++++++++++ 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/apps/meteor/ee/app/livechat-enterprise/server/settings.ts b/apps/meteor/ee/app/livechat-enterprise/server/settings.ts index d72e5364d101..0f21374ebf83 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/settings.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/settings.ts @@ -114,22 +114,6 @@ export const createSettings = async (): Promise => { modules: ['livechat-enterprise'], }); - await this.add('Omnichannel_queue_delay_timeout', 5, { - type: 'int', - group: 'Omnichannel', - section: 'Queue_management', - i18nLabel: 'Queue_delay_timeout', - i18nDescription: 'Time_in_seconds', - enableQuery: [ - { _id: 'Livechat_waiting_queue', value: true }, - { _id: 'Livechat_Routing_Method', value: { $ne: 'Manual_Selection' } }, - omnichannelEnabledQuery, - ], - enterprise: true, - invalidValue: 5, - modules: ['livechat-enterprise'], - }); - await this.add('Livechat_number_most_recent_chats_estimate_wait_time', 100, { type: 'int', group: 'Omnichannel', diff --git a/apps/meteor/server/services/omnichannel/queue.ts b/apps/meteor/server/services/omnichannel/queue.ts index 8bf5453587ce..684c10161a94 100644 --- a/apps/meteor/server/services/omnichannel/queue.ts +++ b/apps/meteor/server/services/omnichannel/queue.ts @@ -15,7 +15,7 @@ export class OmnichannelQueue implements IOmnichannelQueue { private queues: (string | undefined)[] = []; private delay() { - const timeout = settings.get('Omnichannel_queue_delay_timeout'); + const timeout = settings.get('Omnichannel_queue_delay_timeout') ?? 5; return timeout < 1 ? DEFAULT_RACE_TIMEOUT : timeout * 1000; } diff --git a/apps/meteor/server/settings/omnichannel.ts b/apps/meteor/server/settings/omnichannel.ts index 70fa92d347b8..fe5d27c1e677 100644 --- a/apps/meteor/server/settings/omnichannel.ts +++ b/apps/meteor/server/settings/omnichannel.ts @@ -534,6 +534,16 @@ export const createOmniSettings = () => enableQuery: [{ _id: 'Livechat_Routing_Method', value: 'External' }, omnichannelEnabledQuery], }); + await this.add('Omnichannel_queue_delay_timeout', 5, { + type: 'int', + group: 'Omnichannel', + section: 'Queue_management', + i18nLabel: 'Queue_delay_timeout', + i18nDescription: 'Time_in_seconds', + enableQuery: [{ _id: 'Livechat_Routing_Method', value: { $ne: 'Manual_Selection' } }, omnichannelEnabledQuery], + invalidValue: 5, + }); + await this.add('Livechat_Allow_collect_and_store_HTTP_header_informations', false, { type: 'boolean', group: 'Omnichannel', From 7ac55bfac9d2509dfd45988c4976ed1bf0f4c82e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrique=20Guimar=C3=A3es=20Ribeiro?= Date: Thu, 14 Sep 2023 15:32:13 -0300 Subject: [PATCH 103/115] regression: Fix rooms table not showing teams (#30361) --- apps/meteor/client/views/admin/rooms/RoomsTable.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/meteor/client/views/admin/rooms/RoomsTable.tsx b/apps/meteor/client/views/admin/rooms/RoomsTable.tsx index c480fab9f657..094ccb95857a 100644 --- a/apps/meteor/client/views/admin/rooms/RoomsTable.tsx +++ b/apps/meteor/client/views/admin/rooms/RoomsTable.tsx @@ -22,14 +22,15 @@ import RoomsTableFilters from './RoomsTableFilters'; type RoomFilters = { searchText: string; types: OptionProp[]; - visibility: OptionProp[]; }; +const DEFAULT_TYPES = ['d', 'p', 'c', 'l', 'discussions', 'teams']; + const RoomsTable = ({ reload }: { reload: MutableRefObject<() => void> }): ReactElement => { const t = useTranslation(); const mediaQuery = useMediaQuery('(min-width: 1024px)'); - const [roomFilters, setRoomFilters] = useState({ searchText: '', types: [], visibility: [] }); + const [roomFilters, setRoomFilters] = useState({ searchText: '', types: [] }); const prevRoomFilterText = useRef(roomFilters.searchText); @@ -47,7 +48,7 @@ const RoomsTable = ({ reload }: { reload: MutableRefObject<() => void> }): React sort: `{ "${sortBy}": ${sortDirection === 'asc' ? 1 : -1} }`, count: itemsPerPage, offset: searchText === prevRoomFilterText.current ? current : 0, - types: [...roomFilters.types.map((roomType) => roomType.id)], + types: roomFilters.types.length ? [...roomFilters.types.map((roomType) => roomType.id)] : DEFAULT_TYPES, }; }, [searchText, sortBy, sortDirection, itemsPerPage, current, roomFilters.types, setCurrent]), 500, From 3a3245a8e182349ea92396657ec6159815f2ac80 Mon Sep 17 00:00:00 2001 From: Heitor Tanoue <68477006+heitortanoue@users.noreply.github.com> Date: Thu, 14 Sep 2023 16:02:09 -0300 Subject: [PATCH 104/115] test: tests for muting and unmuting (#30286) --- .../meteor/tests/end-to-end/api/24-methods.js | 235 +++++++++++++++++- 1 file changed, 234 insertions(+), 1 deletion(-) diff --git a/apps/meteor/tests/end-to-end/api/24-methods.js b/apps/meteor/tests/end-to-end/api/24-methods.js index 032d25018066..899eb0db7d5f 100644 --- a/apps/meteor/tests/end-to-end/api/24-methods.js +++ b/apps/meteor/tests/end-to-end/api/24-methods.js @@ -5,7 +5,7 @@ import { getCredentials, request, methodCall, api, credentials } from '../../dat import { CI_MAX_ROOMS_PER_GUEST as maxRoomsPerGuest } from '../../data/constants'; import { updatePermission, updateSetting } from '../../data/permissions.helper'; import { createRoom } from '../../data/rooms.helper'; -import { createUser, deleteUser } from '../../data/users.helper.js'; +import { createUser, deleteUser, login } from '../../data/users.helper.js'; describe('Meteor.methods', function () { this.retries(0); @@ -2397,4 +2397,237 @@ describe('Meteor.methods', function () { }); }); }); + + describe('[@muteUserInRoom & @unmuteUserInRoom]', () => { + let rid = null; + let channelName = null; + let testUser = null; + let testUserCredentials = {}; + + before('create test user', async () => { + const username = `user.test.${Date.now()}`; + const email = `${username}@rocket.chat`; + + testUser = await createUser({ email, name: username, username, password: username, roles: ['user'] }); + }); + + before('create channel', async () => { + channelName = `methods-test-channel-${Date.now()}`; + rid = (await createRoom({ type: 'c', name: channelName, members: [testUser.username] })).body.channel._id; + }); + + before('login testUser', async () => { + testUserCredentials = await login(testUser.username, testUser.username); + }); + + describe('-> standard room', () => { + describe('- when muting a user in a standard room', () => { + it('should mute an user in a standard room', async () => { + await request + .post(methodCall('muteUserInRoom')) + .set(credentials) + .send({ + message: JSON.stringify({ + method: 'muteUserInRoom', + params: [{ rid, username: testUser.username }], + id: 'id', + msg: 'method', + }), + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('message').that.is.a('string'); + const data = JSON.parse(res.body.message); + expect(data).to.have.a.property('msg', 'result'); + expect(data).to.have.a.property('id', 'id'); + expect(data).not.to.have.a.property('error'); + }); + }); + + it('muted user should not be able to send message', async () => { + await request + .post(api('chat.sendMessage')) + .set(testUserCredentials) + .send({ + message: { + msg: 'Sample message', + rid, + }, + }) + .expect('Content-Type', 'application/json') + .expect(400) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error').that.is.a('string'); + expect(res.body.error).to.equal('You_have_been_muted'); + }); + }); + }); + + describe('- when unmuting a user in a standard room', () => { + it('should unmute an user in a standard room', async () => { + await request + .post(methodCall('unmuteUserInRoom')) + .set(credentials) + .send({ + message: JSON.stringify({ + method: 'unmuteUserInRoom', + params: [{ rid, username: testUser.username }], + id: 'id', + msg: 'method', + }), + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('message').that.is.a('string'); + const data = JSON.parse(res.body.message); + expect(data).to.have.a.property('msg', 'result'); + expect(data).to.have.a.property('id', 'id'); + expect(data).not.to.have.a.property('error'); + }); + }); + + it('unmuted user should be able to send message', async () => { + await request + .post(api('chat.sendMessage')) + .set(testUserCredentials) + .send({ + message: { + msg: 'Sample message', + rid, + }, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + }); + }); + }); + }); + + describe('-> read-only room', () => { + before('set room to read-only', async () => { + await request + .post(api('channels.setReadOnly')) + .set(credentials) + .send({ + roomId: rid, + readOnly: true, + }) + .expect('Content-Type', 'application/json') + .expect(200); + }); + + it('should not allow an user to send messages', async () => { + await request + .post(api('chat.sendMessage')) + .set(testUserCredentials) + .send({ + message: { + msg: 'Sample message', + rid, + }, + }) + .expect('Content-Type', 'application/json') + .expect(400) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error').that.is.a('string'); + expect(res.body.error).to.equal(`You can't send messages because the room is readonly.`); + }); + }); + + describe('- when unmuting a user in a read-only room', () => { + it('should unmute an user in a read-only room', async () => { + await request + .post(methodCall('unmuteUserInRoom')) + .set(credentials) + .send({ + message: JSON.stringify({ + method: 'unmuteUserInRoom', + params: [{ rid, username: testUser.username }], + id: 'id', + msg: 'method', + }), + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('message').that.is.a('string'); + const data = JSON.parse(res.body.message); + expect(data).to.have.a.property('msg', 'result'); + expect(data).to.have.a.property('id', 'id'); + expect(data).not.to.have.a.property('error'); + }); + }); + + it('unmuted user in read-only room should be able to send message', async () => { + await request + .post(api('chat.sendMessage')) + .set(testUserCredentials) + .send({ + message: { + msg: 'Sample message', + rid, + }, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + }); + }); + }); + + describe('- when muting a user in a read-only room', () => { + it('should mute an user in a read-only room', async () => { + await request + .post(methodCall('muteUserInRoom')) + .set(credentials) + .send({ + message: JSON.stringify({ + method: 'muteUserInRoom', + params: [{ rid, username: testUser.username }], + id: 'id', + msg: 'method', + }), + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('message').that.is.a('string'); + const data = JSON.parse(res.body.message); + expect(data).to.have.a.property('msg', 'result'); + expect(data).to.have.a.property('id', 'id'); + expect(data).not.to.have.a.property('error'); + }); + }); + + it('muted user in read-only room should not be able to send message', async () => { + await request + .post(api('chat.sendMessage')) + .set(testUserCredentials) + .send({ + message: { + msg: 'Sample message', + rid, + }, + }) + .expect('Content-Type', 'application/json') + .expect(400) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error').that.is.a('string'); + }); + }); + }); + }); + }); }); From fa0708bea098e5851398a69c3f3487046afeb4b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrique=20Guimar=C3=A3es=20Ribeiro?= Date: Thu, 14 Sep 2023 18:06:52 -0300 Subject: [PATCH 105/115] regression: Login page callout messages (#30399) --- packages/web-ui-registration/src/LoginForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web-ui-registration/src/LoginForm.tsx b/packages/web-ui-registration/src/LoginForm.tsx index 112139a483e6..efc7e6268feb 100644 --- a/packages/web-ui-registration/src/LoginForm.tsx +++ b/packages/web-ui-registration/src/LoginForm.tsx @@ -99,7 +99,7 @@ export const LoginForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRoute const renderErrorOnSubmit = (error: LoginErrors) => { const { type, i18n } = LOGIN_SUBMIT_ERRORS[error]; - return {i18n}; + return {t(i18n)}; }; if (errors.username?.type === 'invalid-email') { From db43ef890b39b3575749a0343274e523e9e8cd1c Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Thu, 14 Sep 2023 23:57:54 +0000 Subject: [PATCH 106/115] Release 6.3.6 [no ci] --- .changeset/bump-patch-1694715003701.md | 5 ---- .changeset/lucky-balloons-divide.md | 5 ---- apps/meteor/.docker/Dockerfile.rhel | 2 +- apps/meteor/CHANGELOG.md | 26 +++++++++++++++++++ apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/ee/server/services/CHANGELOG.md | 10 +++++++ apps/meteor/ee/server/services/package.json | 2 +- apps/meteor/package.json | 2 +- ee/apps/account-service/CHANGELOG.md | 10 +++++++ ee/apps/account-service/package.json | 2 +- ee/apps/authorization-service/CHANGELOG.md | 10 +++++++ ee/apps/authorization-service/package.json | 2 +- ee/apps/ddp-streamer/CHANGELOG.md | 12 +++++++++ ee/apps/ddp-streamer/package.json | 2 +- ee/apps/omnichannel-transcript/CHANGELOG.md | 11 ++++++++ ee/apps/omnichannel-transcript/package.json | 2 +- ee/apps/presence-service/CHANGELOG.md | 10 +++++++ ee/apps/presence-service/package.json | 2 +- ee/apps/queue-worker/CHANGELOG.md | 10 +++++++ ee/apps/queue-worker/package.json | 2 +- ee/apps/stream-hub-service/CHANGELOG.md | 9 +++++++ ee/apps/stream-hub-service/package.json | 2 +- ee/packages/api-client/CHANGELOG.md | 7 +++++ ee/packages/api-client/package.json | 2 +- ee/packages/ddp-client/CHANGELOG.md | 7 +++++ ee/packages/ddp-client/package.json | 2 +- ee/packages/omnichannel-services/CHANGELOG.md | 11 ++++++++ ee/packages/omnichannel-services/package.json | 2 +- ee/packages/pdf-worker/CHANGELOG.md | 6 +++++ ee/packages/pdf-worker/package.json | 2 +- ee/packages/presence/CHANGELOG.md | 8 ++++++ ee/packages/presence/package.json | 2 +- package.json | 2 +- packages/core-services/CHANGELOG.md | 8 ++++++ packages/core-services/package.json | 2 +- packages/core-typings/CHANGELOG.md | 2 ++ packages/core-typings/package.json | 2 +- packages/cron/CHANGELOG.md | 7 +++++ packages/cron/package.json | 2 +- packages/fuselage-ui-kit/CHANGELOG.md | 8 ++++++ packages/fuselage-ui-kit/package.json | 6 ++--- packages/gazzodown/CHANGELOG.md | 8 ++++++ packages/gazzodown/package.json | 8 +++--- packages/instance-status/CHANGELOG.md | 6 +++++ packages/instance-status/package.json | 2 +- packages/model-typings/CHANGELOG.md | 6 +++++ packages/model-typings/package.json | 2 +- packages/models/CHANGELOG.md | 6 +++++ packages/models/package.json | 2 +- packages/rest-typings/CHANGELOG.md | 6 +++++ packages/rest-typings/package.json | 2 +- packages/ui-client/CHANGELOG.md | 6 +++++ packages/ui-client/package.json | 4 +-- packages/ui-contexts/CHANGELOG.md | 8 ++++++ packages/ui-contexts/package.json | 2 +- packages/ui-video-conf/CHANGELOG.md | 6 +++++ packages/ui-video-conf/package.json | 4 +-- packages/uikit-playground/CHANGELOG.md | 7 +++++ packages/uikit-playground/package.json | 2 +- packages/web-ui-registration/CHANGELOG.md | 6 +++++ packages/web-ui-registration/package.json | 4 +-- 61 files changed, 276 insertions(+), 49 deletions(-) delete mode 100644 .changeset/bump-patch-1694715003701.md delete mode 100644 .changeset/lucky-balloons-divide.md diff --git a/.changeset/bump-patch-1694715003701.md b/.changeset/bump-patch-1694715003701.md deleted file mode 100644 index e1eaa7980afb..000000000000 --- a/.changeset/bump-patch-1694715003701.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Bump @rocket.chat/meteor version. diff --git a/.changeset/lucky-balloons-divide.md b/.changeset/lucky-balloons-divide.md deleted file mode 100644 index beb4cbfe3b57..000000000000 --- a/.changeset/lucky-balloons-divide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Fix engagement dashboard not showing data diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index c351eb6d4450..df3f57884ce1 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 6.3.5 +ENV RC_VERSION 6.3.6 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 312d30461f77..411d568aadb5 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,31 @@ # @rocket.chat/meteor +## 6.3.6 + +### Patch Changes + +- 3bbe12e850: Bump @rocket.chat/meteor version. +- Bump @rocket.chat/meteor version. +- 285e591a73: Fix engagement dashboard not showing data + - @rocket.chat/core-typings@6.3.6 + - @rocket.chat/rest-typings@6.3.6 + - @rocket.chat/api-client@0.1.6 + - @rocket.chat/omnichannel-services@0.0.12 + - @rocket.chat/pdf-worker@0.0.12 + - @rocket.chat/presence@0.0.12 + - @rocket.chat/core-services@0.1.6 + - @rocket.chat/cron@0.0.8 + - @rocket.chat/gazzodown@1.0.6 + - @rocket.chat/model-typings@0.0.12 + - @rocket.chat/ui-contexts@1.0.6 + - @rocket.chat/fuselage-ui-kit@1.0.6 + - @rocket.chat/models@0.0.12 + - @rocket.chat/ui-theming@0.0.1 + - @rocket.chat/ui-client@1.0.6 + - @rocket.chat/ui-video-conf@1.0.6 + - @rocket.chat/web-ui-registration@1.0.6 + - @rocket.chat/instance-status@0.0.12 + ## 6.3.5 ### Patch Changes diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index ad7a7f611711..dd5225ccd8d7 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "6.3.5" + "version": "6.3.6" } diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md index faa70b77b09c..fef6a1afd627 100644 --- a/apps/meteor/ee/server/services/CHANGELOG.md +++ b/apps/meteor/ee/server/services/CHANGELOG.md @@ -1,5 +1,15 @@ # rocketchat-services +## 1.1.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/rest-typings@6.3.6 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/models@0.0.12 + ## 1.1.5 ### Patch Changes diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 1d6834ce99d2..9cd474d8d313 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -1,7 +1,7 @@ { "name": "rocketchat-services", "private": true, - "version": "1.1.5", + "version": "1.1.6", "description": "Rocket.Chat Authorization service", "main": "index.js", "scripts": { diff --git a/apps/meteor/package.json b/apps/meteor/package.json index f33e836995a9..03b83755faa5 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "6.3.5", + "version": "6.3.6", "private": true, "author": { "name": "Rocket.Chat", diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md index aaa49cdc19aa..9fabd0886289 100644 --- a/ee/apps/account-service/CHANGELOG.md +++ b/ee/apps/account-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/account-service +## 0.2.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/rest-typings@6.3.6 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/models@0.0.12 + ## 0.2.5 ### Patch Changes diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index 047d313cf5a5..4d987dd0a002 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/account-service", "private": true, - "version": "0.2.5", + "version": "0.2.6", "description": "Rocket.Chat Account service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md index 7587e33e021e..528320aa2622 100644 --- a/ee/apps/authorization-service/CHANGELOG.md +++ b/ee/apps/authorization-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/authorization-service +## 0.2.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/rest-typings@6.3.6 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/models@0.0.12 + ## 0.2.5 ### Patch Changes diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index ef397d1812da..60ca18dcd9dd 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/authorization-service", "private": true, - "version": "0.2.5", + "version": "0.2.6", "description": "Rocket.Chat Authorization service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md index 493157091bae..f5a32f533a43 100644 --- a/ee/apps/ddp-streamer/CHANGELOG.md +++ b/ee/apps/ddp-streamer/CHANGELOG.md @@ -1,5 +1,17 @@ # @rocket.chat/ddp-streamer +## 0.1.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/rest-typings@6.3.6 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/ui-contexts@1.0.6 +- @rocket.chat/models@0.0.12 +- @rocket.chat/instance-status@0.0.12 + ## 0.1.5 ### Patch Changes diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index 9f804c175f20..2db7333fe350 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/ddp-streamer", "private": true, - "version": "0.1.5", + "version": "0.1.6", "description": "Rocket.Chat DDP-Streamer service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md index c1ea9bcc713d..dcb38ad24016 100644 --- a/ee/apps/omnichannel-transcript/CHANGELOG.md +++ b/ee/apps/omnichannel-transcript/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/omnichannel-transcript +## 0.2.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/omnichannel-services@0.0.12 +- @rocket.chat/pdf-worker@0.0.12 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/models@0.0.12 + ## 0.2.5 ### Patch Changes diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index d4ca4c276817..4b6edef420de 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/omnichannel-transcript", "private": true, - "version": "0.2.5", + "version": "0.2.6", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md index 788c4e8ee58f..ac9e0c98c089 100644 --- a/ee/apps/presence-service/CHANGELOG.md +++ b/ee/apps/presence-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/presence-service +## 0.2.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/presence@0.0.12 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/models@0.0.12 + ## 0.2.5 ### Patch Changes diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index 6c034ec44f29..a2c39e0518c2 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/presence-service", "private": true, - "version": "0.2.5", + "version": "0.2.6", "description": "Rocket.Chat Presence service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md index fd65d61ca6db..cb7e231f3aa6 100644 --- a/ee/apps/queue-worker/CHANGELOG.md +++ b/ee/apps/queue-worker/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/queue-worker +## 0.2.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/omnichannel-services@0.0.12 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/models@0.0.12 + ## 0.2.5 ### Patch Changes diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index 9b71610bf208..8c6df52977ce 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/queue-worker", "private": true, - "version": "0.2.5", + "version": "0.2.6", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/stream-hub-service/CHANGELOG.md b/ee/apps/stream-hub-service/CHANGELOG.md index 6d7c07507afd..2d03cc992eb3 100644 --- a/ee/apps/stream-hub-service/CHANGELOG.md +++ b/ee/apps/stream-hub-service/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/stream-hub-service +## 0.2.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/models@0.0.12 + ## 0.2.5 ### Patch Changes diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json index a33e0e01a02c..aacd997473e1 100644 --- a/ee/apps/stream-hub-service/package.json +++ b/ee/apps/stream-hub-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/stream-hub-service", "private": true, - "version": "0.2.5", + "version": "0.2.6", "description": "Rocket.Chat Stream Hub service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/packages/api-client/CHANGELOG.md b/ee/packages/api-client/CHANGELOG.md index 6bfc7ca29e86..7424a2793b7f 100644 --- a/ee/packages/api-client/CHANGELOG.md +++ b/ee/packages/api-client/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/api-client +## 0.1.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/rest-typings@6.3.6 + ## 0.1.5 ### Patch Changes diff --git a/ee/packages/api-client/package.json b/ee/packages/api-client/package.json index 322df088445d..463a1a835059 100644 --- a/ee/packages/api-client/package.json +++ b/ee/packages/api-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/api-client", - "version": "0.1.5", + "version": "0.1.6", "devDependencies": { "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", diff --git a/ee/packages/ddp-client/CHANGELOG.md b/ee/packages/ddp-client/CHANGELOG.md index 93091ac68a74..067872b9102e 100644 --- a/ee/packages/ddp-client/CHANGELOG.md +++ b/ee/packages/ddp-client/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/ddp-client +## 0.1.6 + +### Patch Changes + +- @rocket.chat/rest-typings@6.3.6 +- @rocket.chat/api-client@0.1.6 + ## 0.1.5 ### Patch Changes diff --git a/ee/packages/ddp-client/package.json b/ee/packages/ddp-client/package.json index 7548af76d202..da4701cfa450 100644 --- a/ee/packages/ddp-client/package.json +++ b/ee/packages/ddp-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-client", - "version": "0.1.5", + "version": "0.1.6", "devDependencies": { "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md index 309b9db3d4ab..2978b6e0d040 100644 --- a/ee/packages/omnichannel-services/CHANGELOG.md +++ b/ee/packages/omnichannel-services/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/omnichannel-services +## 0.0.12 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/rest-typings@6.3.6 +- @rocket.chat/pdf-worker@0.0.12 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/model-typings@0.0.12 +- @rocket.chat/models@0.0.12 + ## 0.0.11 ### Patch Changes diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index a3f3f594026f..b52222b745e6 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omnichannel-services", - "version": "0.0.11", + "version": "0.0.12", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md index 4f6a6457035c..854547b5f9ec 100644 --- a/ee/packages/pdf-worker/CHANGELOG.md +++ b/ee/packages/pdf-worker/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/pdf-worker +## 0.0.12 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 + ## 0.0.11 ### Patch Changes diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json index 0f141493e1e2..5523064812b7 100644 --- a/ee/packages/pdf-worker/package.json +++ b/ee/packages/pdf-worker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/pdf-worker", - "version": "0.0.11", + "version": "0.0.12", "private": true, "devDependencies": { "@storybook/addon-essentials": "~6.5.16", diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md index 9a190ef2cce4..bb5797aa4bf0 100644 --- a/ee/packages/presence/CHANGELOG.md +++ b/ee/packages/presence/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/presence +## 0.0.12 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/core-services@0.1.6 +- @rocket.chat/models@0.0.12 + ## 0.0.11 ### Patch Changes diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index 7d83e5833f62..5c4d5ff68864 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence", - "version": "0.0.11", + "version": "0.0.12", "private": true, "devDependencies": { "@babel/core": "~7.22.5", diff --git a/package.json b/package.json index 2147c4f3d9fb..4674313c5096 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "6.3.5", + "version": "6.3.6", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md index ea6e66ae4e75..e3f1dae4abc0 100644 --- a/packages/core-services/CHANGELOG.md +++ b/packages/core-services/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/core-services +## 0.1.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/rest-typings@6.3.6 +- @rocket.chat/models@0.0.12 + ## 0.1.5 ### Patch Changes diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 152d7ed8ff30..2222ac18e05a 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-services", - "version": "0.1.5", + "version": "0.1.6", "private": true, "devDependencies": { "@babel/core": "^7.21.4", diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index cf9fcdfceaed..94c719551e59 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,7 @@ # @rocket.chat/core-typings +## 6.3.6 + ## 6.3.5 ## 6.3.4 diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index 705e5ee1703c..3cd0a312aa4b 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-typings", - "version": "6.3.5", + "version": "6.3.6", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "eslint": "~8.43.0", diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md index 44f83d2a66eb..2bee9aea43fe 100644 --- a/packages/cron/CHANGELOG.md +++ b/packages/cron/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/cron +## 0.0.8 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/models@0.0.12 + ## 0.0.7 ### Patch Changes diff --git a/packages/cron/package.json b/packages/cron/package.json index 483f86e1bfa9..ffec42e7056a 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/cron", - "version": "0.0.7", + "version": "0.0.8", "private": true, "devDependencies": { "@types/jest": "^27.4.1", diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md index a9d9d80edbad..4f4601173288 100644 --- a/packages/fuselage-ui-kit/CHANGELOG.md +++ b/packages/fuselage-ui-kit/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 1.0.6 + +### Patch Changes + +- @rocket.chat/gazzodown@1.0.6 +- @rocket.chat/ui-contexts@1.0.6 +- @rocket.chat/ui-video-conf@1.0.6 + ## 1.0.5 ### Patch Changes diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index c213f1006e88..2330e2825076 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/fuselage-ui-kit", "private": true, - "version": "1.0.5", + "version": "1.0.6", "description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system", "homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/", "author": { @@ -47,9 +47,9 @@ "@rocket.chat/icons": "*", "@rocket.chat/prettier-config": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-contexts": "1.0.5", + "@rocket.chat/ui-contexts": "1.0.6", "@rocket.chat/ui-kit": "*", - "@rocket.chat/ui-video-conf": "1.0.5", + "@rocket.chat/ui-video-conf": "1.0.6", "@tanstack/react-query": "*", "react": "*", "react-dom": "*" diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md index 017cfda56da1..8eadf7c8ee12 100644 --- a/packages/gazzodown/CHANGELOG.md +++ b/packages/gazzodown/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/gazzodown +## 1.0.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/ui-contexts@1.0.6 +- @rocket.chat/ui-client@1.0.6 + ## 1.0.5 ### Patch Changes diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index e7bcd59c70d0..00acba4363c7 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/gazzodown", - "version": "1.0.5", + "version": "1.0.6", "private": true, "devDependencies": { "@babel/core": "~7.22.5", @@ -65,14 +65,14 @@ "/dist" ], "peerDependencies": { - "@rocket.chat/core-typings": "6.3.5", + "@rocket.chat/core-typings": "6.3.6", "@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.5", - "@rocket.chat/ui-contexts": "1.0.5", + "@rocket.chat/ui-client": "1.0.6", + "@rocket.chat/ui-contexts": "1.0.6", "katex": "*", "react": "*" }, diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md index 7bf8af7c0408..830f4b9304a7 100644 --- a/packages/instance-status/CHANGELOG.md +++ b/packages/instance-status/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/instance-status +## 0.0.12 + +### Patch Changes + +- @rocket.chat/models@0.0.12 + ## 0.0.11 ### Patch Changes diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index df467c68749f..b47b71936a9f 100644 --- a/packages/instance-status/package.json +++ b/packages/instance-status/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/instance-status", - "version": "0.0.11", + "version": "0.0.12", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 0b24ee6c382f..26ccaa9524bf 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/model-typings +## 0.0.12 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 + ## 0.0.11 ### Patch Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 408993ef7fae..2029970c8a62 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "0.0.11", + "version": "0.0.12", "private": true, "devDependencies": { "@types/jest": "~29.5.2", diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index d3a9722b3e26..3f7d7e9456bd 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/models +## 0.0.12 + +### Patch Changes + +- @rocket.chat/model-typings@0.0.12 + ## 0.0.11 ### Patch Changes diff --git a/packages/models/package.json b/packages/models/package.json index 27d5d58fcb81..f4991ae85db1 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/models", - "version": "0.0.11", + "version": "0.0.12", "private": true, "devDependencies": { "@types/jest": "~29.5.2", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index d3c98c1d5d36..b708dfc8ac89 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/rest-typings +## 6.3.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 + ## 6.3.5 ### Patch Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 5be801d3db98..f4d6c8c6beb8 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/rest-typings", - "version": "6.3.5", + "version": "6.3.6", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "@types/jest": "~29.5.2", diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md index 1b31effb7118..3dc07e124e60 100644 --- a/packages/ui-client/CHANGELOG.md +++ b/packages/ui-client/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/ui-client +## 1.0.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@1.0.6 + ## 1.0.5 ### Patch Changes diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 67f65cb44f8b..6b5b5959a4bf 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-client", - "version": "1.0.5", + "version": "1.0.6", "private": true, "devDependencies": { "@babel/core": "~7.22.5", @@ -53,7 +53,7 @@ "@rocket.chat/fuselage": "*", "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", - "@rocket.chat/ui-contexts": "1.0.5", + "@rocket.chat/ui-contexts": "1.0.6", "react": "~17.0.2" }, "volta": { diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md index fa7eac82131b..dd6bf6a33e6e 100644 --- a/packages/ui-contexts/CHANGELOG.md +++ b/packages/ui-contexts/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/ui-contexts +## 1.0.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.3.6 +- @rocket.chat/rest-typings@6.3.6 +- @rocket.chat/ddp-client@0.1.6 + ## 1.0.5 ### Patch Changes diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index 3a1f3cfc92d1..979442310f20 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-contexts", - "version": "1.0.5", + "version": "1.0.6", "private": true, "devDependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md index b87008e5df9c..a0b379bf3b6b 100644 --- a/packages/ui-video-conf/CHANGELOG.md +++ b/packages/ui-video-conf/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/ui-video-conf +## 1.0.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@1.0.6 + ## 1.0.5 ### Patch Changes diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index d8b1f62f744c..fbd8c6843909 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-video-conf", - "version": "1.0.5", + "version": "1.0.6", "private": true, "devDependencies": { "@babel/core": "~7.22.5", @@ -35,7 +35,7 @@ "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-contexts": "1.0.5", + "@rocket.chat/ui-contexts": "1.0.6", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/packages/uikit-playground/CHANGELOG.md b/packages/uikit-playground/CHANGELOG.md index 0500041f3f23..0f539a5fdbb9 100644 --- a/packages/uikit-playground/CHANGELOG.md +++ b/packages/uikit-playground/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/uikit-playground +## 0.1.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@1.0.6 +- @rocket.chat/fuselage-ui-kit@1.0.6 + ## 0.1.5 ### Patch Changes diff --git a/packages/uikit-playground/package.json b/packages/uikit-playground/package.json index 60ba6b84dc2a..58930541bedd 100644 --- a/packages/uikit-playground/package.json +++ b/packages/uikit-playground/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/uikit-playground", "private": true, - "version": "0.1.5", + "version": "0.1.6", "type": "module", "scripts": { "dev": "vite", diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md index 58b731980522..c87f91401ab9 100644 --- a/packages/web-ui-registration/CHANGELOG.md +++ b/packages/web-ui-registration/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/web-ui-registration +## 1.0.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@1.0.6 + ## 1.0.5 ### Patch Changes diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index 3e64f17725e4..686ddff549b4 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/web-ui-registration", - "version": "1.0.5", + "version": "1.0.6", "private": true, "devDependencies": { "@rocket.chat/layout": "next", @@ -17,7 +17,7 @@ }, "peerDependencies": { "@rocket.chat/layout": "*", - "@rocket.chat/ui-contexts": "1.0.5", + "@rocket.chat/ui-contexts": "1.0.6", "@tanstack/react-query": "*", "react": "*", "react-hook-form": "*", From f634601d909812b368941298e428af96f671fb83 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Fri, 15 Sep 2023 01:31:48 +0000 Subject: [PATCH 107/115] Release 6.4.0-rc.1 [no ci] --- .changeset/bump-patch-1694741499930.md | 5 ++++ .changeset/pre.json | 1 + apps/meteor/.docker/Dockerfile.rhel | 2 +- apps/meteor/CHANGELOG.md | 24 +++++++++++++++++++ apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/ee/server/services/CHANGELOG.md | 10 ++++++++ apps/meteor/ee/server/services/package.json | 2 +- apps/meteor/package.json | 2 +- ee/apps/account-service/CHANGELOG.md | 10 ++++++++ ee/apps/account-service/package.json | 2 +- ee/apps/authorization-service/CHANGELOG.md | 10 ++++++++ ee/apps/authorization-service/package.json | 2 +- ee/apps/ddp-streamer/CHANGELOG.md | 12 ++++++++++ ee/apps/ddp-streamer/package.json | 2 +- ee/apps/omnichannel-transcript/CHANGELOG.md | 11 +++++++++ ee/apps/omnichannel-transcript/package.json | 2 +- ee/apps/presence-service/CHANGELOG.md | 10 ++++++++ ee/apps/presence-service/package.json | 2 +- ee/apps/queue-worker/CHANGELOG.md | 10 ++++++++ ee/apps/queue-worker/package.json | 2 +- ee/apps/stream-hub-service/CHANGELOG.md | 9 +++++++ ee/apps/stream-hub-service/package.json | 2 +- ee/packages/api-client/CHANGELOG.md | 7 ++++++ ee/packages/api-client/package.json | 2 +- ee/packages/ddp-client/CHANGELOG.md | 7 ++++++ ee/packages/ddp-client/package.json | 2 +- ee/packages/omnichannel-services/CHANGELOG.md | 11 +++++++++ ee/packages/omnichannel-services/package.json | 2 +- ee/packages/pdf-worker/CHANGELOG.md | 6 +++++ ee/packages/pdf-worker/package.json | 2 +- ee/packages/presence/CHANGELOG.md | 8 +++++++ ee/packages/presence/package.json | 2 +- package.json | 2 +- packages/core-services/CHANGELOG.md | 8 +++++++ packages/core-services/package.json | 2 +- packages/core-typings/CHANGELOG.md | 2 ++ packages/core-typings/package.json | 2 +- packages/cron/CHANGELOG.md | 7 ++++++ packages/cron/package.json | 2 +- packages/fuselage-ui-kit/CHANGELOG.md | 8 +++++++ packages/fuselage-ui-kit/package.json | 6 ++--- packages/gazzodown/CHANGELOG.md | 8 +++++++ packages/gazzodown/package.json | 8 +++---- packages/instance-status/CHANGELOG.md | 6 +++++ packages/instance-status/package.json | 2 +- packages/livechat/CHANGELOG.md | 6 +++++ packages/livechat/package.json | 2 +- packages/model-typings/CHANGELOG.md | 6 +++++ packages/model-typings/package.json | 2 +- packages/models/CHANGELOG.md | 6 +++++ packages/models/package.json | 2 +- packages/rest-typings/CHANGELOG.md | 6 +++++ packages/rest-typings/package.json | 2 +- packages/ui-client/CHANGELOG.md | 6 +++++ packages/ui-client/package.json | 4 ++-- packages/ui-contexts/CHANGELOG.md | 8 +++++++ packages/ui-contexts/package.json | 2 +- packages/ui-video-conf/CHANGELOG.md | 6 +++++ packages/ui-video-conf/package.json | 4 ++-- packages/uikit-playground/CHANGELOG.md | 7 ++++++ packages/uikit-playground/package.json | 2 +- packages/web-ui-registration/CHANGELOG.md | 6 +++++ packages/web-ui-registration/package.json | 4 ++-- 63 files changed, 287 insertions(+), 40 deletions(-) create mode 100644 .changeset/bump-patch-1694741499930.md diff --git a/.changeset/bump-patch-1694741499930.md b/.changeset/bump-patch-1694741499930.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1694741499930.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/pre.json b/.changeset/pre.json index e39bf5821cf9..bf2911665af5 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -56,6 +56,7 @@ "bright-carpets-fly", "bright-snakes-vanish", "brown-clouds-add", + "bump-patch-1694741499930", "chilled-flies-fold", "chilled-phones-give", "cool-students-tan", diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index fc8ddacd14bc..037a4e51337e 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 6.4.0-rc.0 +ENV RC_VERSION 6.4.0-rc.1 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 5f5a8ba0ab00..f2d50f90c7da 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,29 @@ # @rocket.chat/meteor +## 6.4.0-rc.1 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + - @rocket.chat/core-typings@6.4.0-rc.1 + - @rocket.chat/rest-typings@6.4.0-rc.1 + - @rocket.chat/api-client@0.1.5-rc.1 + - @rocket.chat/omnichannel-services@0.0.11-rc.1 + - @rocket.chat/pdf-worker@0.0.11-rc.1 + - @rocket.chat/presence@0.0.11-rc.1 + - @rocket.chat/core-services@0.2.0-rc.1 + - @rocket.chat/cron@0.0.7-rc.1 + - @rocket.chat/gazzodown@2.0.0-rc.1 + - @rocket.chat/model-typings@0.1.0-rc.1 + - @rocket.chat/ui-contexts@2.0.0-rc.1 + - @rocket.chat/fuselage-ui-kit@2.0.0-rc.1 + - @rocket.chat/models@0.0.11-rc.1 + - @rocket.chat/ui-theming@0.1.0-rc.0 + - @rocket.chat/ui-client@2.0.0-rc.1 + - @rocket.chat/ui-video-conf@2.0.0-rc.1 + - @rocket.chat/web-ui-registration@2.0.0-rc.1 + - @rocket.chat/instance-status@0.0.11-rc.1 + ## 6.4.0-rc.0 ### Minor Changes diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 4f19f3927185..660bed4d191b 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "6.4.0-rc.0" + "version": "6.4.0-rc.1" } diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md index 2d6687144bba..2789731d04f1 100644 --- a/apps/meteor/ee/server/services/CHANGELOG.md +++ b/apps/meteor/ee/server/services/CHANGELOG.md @@ -1,5 +1,15 @@ # rocketchat-services +## 1.1.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/rest-typings@6.4.0-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 1.1.5-rc.0 ### Patch Changes diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index c1fc40a4ae02..3c8bfb1cdc8c 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -1,7 +1,7 @@ { "name": "rocketchat-services", "private": true, - "version": "1.1.5-rc.0", + "version": "1.1.5-rc.1", "description": "Rocket.Chat Authorization service", "main": "index.js", "scripts": { diff --git a/apps/meteor/package.json b/apps/meteor/package.json index b8f734fb191a..568e96beff0d 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "6.4.0-rc.0", + "version": "6.4.0-rc.1", "private": true, "author": { "name": "Rocket.Chat", diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md index 5907054a9a8b..544fffee9b05 100644 --- a/ee/apps/account-service/CHANGELOG.md +++ b/ee/apps/account-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/account-service +## 0.2.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/rest-typings@6.4.0-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.2.5-rc.0 ### Patch Changes diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index 059ef76c1066..689a5e1bb7cf 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/account-service", "private": true, - "version": "0.2.5-rc.0", + "version": "0.2.5-rc.1", "description": "Rocket.Chat Account service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md index 7f26f70250d6..f33180f55f15 100644 --- a/ee/apps/authorization-service/CHANGELOG.md +++ b/ee/apps/authorization-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/authorization-service +## 0.2.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/rest-typings@6.4.0-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.2.5-rc.0 ### Patch Changes diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index eb832c48e455..76aab841e82a 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/authorization-service", "private": true, - "version": "0.2.5-rc.0", + "version": "0.2.5-rc.1", "description": "Rocket.Chat Authorization service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md index a4a45e8b5c50..f94faa46a76a 100644 --- a/ee/apps/ddp-streamer/CHANGELOG.md +++ b/ee/apps/ddp-streamer/CHANGELOG.md @@ -1,5 +1,17 @@ # @rocket.chat/ddp-streamer +## 0.1.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/rest-typings@6.4.0-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/ui-contexts@2.0.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 +- @rocket.chat/instance-status@0.0.11-rc.1 + ## 0.1.5-rc.0 ### Patch Changes diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index 85424ade0529..b6b4f23109e1 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/ddp-streamer", "private": true, - "version": "0.1.5-rc.0", + "version": "0.1.5-rc.1", "description": "Rocket.Chat DDP-Streamer service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md index c2365ba36730..22e8f02d25a6 100644 --- a/ee/apps/omnichannel-transcript/CHANGELOG.md +++ b/ee/apps/omnichannel-transcript/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/omnichannel-transcript +## 0.2.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/omnichannel-services@0.0.11-rc.1 +- @rocket.chat/pdf-worker@0.0.11-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.2.5-rc.0 ### Patch Changes diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index 217b9898d180..30bcbeec74d4 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/omnichannel-transcript", "private": true, - "version": "0.2.5-rc.0", + "version": "0.2.5-rc.1", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md index 3706e35e6792..fc1429886c66 100644 --- a/ee/apps/presence-service/CHANGELOG.md +++ b/ee/apps/presence-service/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/presence-service +## 0.2.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/presence@0.0.11-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.2.5-rc.0 ### Patch Changes diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index 1d461ba668a0..15db25ea9e15 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/presence-service", "private": true, - "version": "0.2.5-rc.0", + "version": "0.2.5-rc.1", "description": "Rocket.Chat Presence service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md index 3c7203fed5a3..7d5f29ad24a7 100644 --- a/ee/apps/queue-worker/CHANGELOG.md +++ b/ee/apps/queue-worker/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/queue-worker +## 0.2.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/omnichannel-services@0.0.11-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.2.5-rc.0 ### Patch Changes diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index 64c87a9124bc..4ef2db926961 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/queue-worker", "private": true, - "version": "0.2.5-rc.0", + "version": "0.2.5-rc.1", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/stream-hub-service/CHANGELOG.md b/ee/apps/stream-hub-service/CHANGELOG.md index c62c7b6fe349..83becb8f7ac2 100644 --- a/ee/apps/stream-hub-service/CHANGELOG.md +++ b/ee/apps/stream-hub-service/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/stream-hub-service +## 0.2.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.2.5-rc.0 ### Patch Changes diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json index 2052b598fd51..d601e1e23b3b 100644 --- a/ee/apps/stream-hub-service/package.json +++ b/ee/apps/stream-hub-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/stream-hub-service", "private": true, - "version": "0.2.5-rc.0", + "version": "0.2.5-rc.1", "description": "Rocket.Chat Stream Hub service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/packages/api-client/CHANGELOG.md b/ee/packages/api-client/CHANGELOG.md index 78995509f213..77b96078d0da 100644 --- a/ee/packages/api-client/CHANGELOG.md +++ b/ee/packages/api-client/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/api-client +## 0.1.5-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/rest-typings@6.4.0-rc.1 + ## 0.1.5-rc.0 ### Patch Changes diff --git a/ee/packages/api-client/package.json b/ee/packages/api-client/package.json index c9ff1ca756f8..03b012d720e6 100644 --- a/ee/packages/api-client/package.json +++ b/ee/packages/api-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/api-client", - "version": "0.1.5-rc.0", + "version": "0.1.5-rc.1", "devDependencies": { "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", diff --git a/ee/packages/ddp-client/CHANGELOG.md b/ee/packages/ddp-client/CHANGELOG.md index e27581f37632..5fa1bc86a677 100644 --- a/ee/packages/ddp-client/CHANGELOG.md +++ b/ee/packages/ddp-client/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/ddp-client +## 0.2.0-rc.1 + +### Patch Changes + +- @rocket.chat/rest-typings@6.4.0-rc.1 +- @rocket.chat/api-client@0.1.5-rc.1 + ## 0.2.0-rc.0 ### Minor Changes diff --git a/ee/packages/ddp-client/package.json b/ee/packages/ddp-client/package.json index e49f74c5003f..fe74871830c1 100644 --- a/ee/packages/ddp-client/package.json +++ b/ee/packages/ddp-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-client", - "version": "0.2.0-rc.0", + "version": "0.2.0-rc.1", "devDependencies": { "@swc/core": "^1.3.66", "@swc/jest": "^0.2.26", diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md index 89a52e900f64..080206c83a0f 100644 --- a/ee/packages/omnichannel-services/CHANGELOG.md +++ b/ee/packages/omnichannel-services/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/omnichannel-services +## 0.0.11-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/rest-typings@6.4.0-rc.1 +- @rocket.chat/pdf-worker@0.0.11-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/model-typings@0.1.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.0.11-rc.0 ### Patch Changes diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index 05c9e80cfa4d..4759e8423b7f 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omnichannel-services", - "version": "0.0.11-rc.0", + "version": "0.0.11-rc.1", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md index d79f1ecad4d8..e438e4713796 100644 --- a/ee/packages/pdf-worker/CHANGELOG.md +++ b/ee/packages/pdf-worker/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/pdf-worker +## 0.0.11-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 + ## 0.0.11-rc.0 ### Patch Changes diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json index 77c3e702fe27..ee97717a72c1 100644 --- a/ee/packages/pdf-worker/package.json +++ b/ee/packages/pdf-worker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/pdf-worker", - "version": "0.0.11-rc.0", + "version": "0.0.11-rc.1", "private": true, "devDependencies": { "@storybook/addon-essentials": "~6.5.16", diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md index b029ffc5ccb5..a50d5bdeaef9 100644 --- a/ee/packages/presence/CHANGELOG.md +++ b/ee/packages/presence/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/presence +## 0.0.11-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/core-services@0.2.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.0.11-rc.0 ### Patch Changes diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index e607edbca0c4..f6b555a60d99 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence", - "version": "0.0.11-rc.0", + "version": "0.0.11-rc.1", "private": true, "devDependencies": { "@babel/core": "~7.22.9", diff --git a/package.json b/package.json index f1cdae960726..978e0634a0ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "6.4.0-rc.0", + "version": "6.4.0-rc.1", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md index 4dd13f0e9231..fed560627994 100644 --- a/packages/core-services/CHANGELOG.md +++ b/packages/core-services/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/core-services +## 0.2.0-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/rest-typings@6.4.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.2.0-rc.0 ### Minor Changes diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 238ecf7f8efb..c5185a20d394 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-services", - "version": "0.2.0-rc.0", + "version": "0.2.0-rc.1", "private": true, "devDependencies": { "@babel/core": "~7.22.9", diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index e3746fc996e0..20ddc9082a41 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,7 @@ # @rocket.chat/core-typings +## 6.4.0-rc.1 + ## 6.4.0-rc.0 ### Minor Changes diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index ba92b31a7cd8..5512e8fb5df4 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-typings", - "version": "6.4.0-rc.0", + "version": "6.4.0-rc.1", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "eslint": "~8.45.0", diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md index 37570bdeeb5d..a1d91cc2d52a 100644 --- a/packages/cron/CHANGELOG.md +++ b/packages/cron/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/cron +## 0.0.7-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/models@0.0.11-rc.1 + ## 0.0.7-rc.0 ### Patch Changes diff --git a/packages/cron/package.json b/packages/cron/package.json index 12e16e759d15..312e5bdbb599 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/cron", - "version": "0.0.7-rc.0", + "version": "0.0.7-rc.1", "private": true, "devDependencies": { "@types/jest": "~29.5.3", diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md index 6a73eb77ac60..d646b2eb3712 100644 --- a/packages/fuselage-ui-kit/CHANGELOG.md +++ b/packages/fuselage-ui-kit/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 2.0.0-rc.1 + +### Patch Changes + +- @rocket.chat/gazzodown@2.0.0-rc.1 +- @rocket.chat/ui-contexts@2.0.0-rc.1 +- @rocket.chat/ui-video-conf@2.0.0-rc.1 + ## 2.0.0-rc.0 ### Minor Changes diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index 979726fd5087..cb28e0699874 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/fuselage-ui-kit", "private": true, - "version": "2.0.0-rc.0", + "version": "2.0.0-rc.1", "description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system", "homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/", "author": { @@ -46,9 +46,9 @@ "@rocket.chat/icons": "*", "@rocket.chat/prettier-config": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-contexts": "2.0.0-rc.0", + "@rocket.chat/ui-contexts": "2.0.0-rc.1", "@rocket.chat/ui-kit": "*", - "@rocket.chat/ui-video-conf": "2.0.0-rc.0", + "@rocket.chat/ui-video-conf": "2.0.0-rc.1", "@tanstack/react-query": "*", "react": "*", "react-dom": "*" diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md index 3e38986be6bd..8b8096b99251 100644 --- a/packages/gazzodown/CHANGELOG.md +++ b/packages/gazzodown/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/gazzodown +## 2.0.0-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/ui-contexts@2.0.0-rc.1 +- @rocket.chat/ui-client@2.0.0-rc.1 + ## 2.0.0-rc.0 ### Patch Changes diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index 4a654b4b6051..6f0d63803d66 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/gazzodown", - "version": "2.0.0-rc.0", + "version": "2.0.0-rc.1", "private": true, "devDependencies": { "@babel/core": "~7.22.9", @@ -65,14 +65,14 @@ "/dist" ], "peerDependencies": { - "@rocket.chat/core-typings": "6.4.0-rc.0", + "@rocket.chat/core-typings": "6.4.0-rc.1", "@rocket.chat/css-in-js": "*", "@rocket.chat/fuselage": "*", "@rocket.chat/fuselage-tokens": "*", "@rocket.chat/message-parser": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-client": "2.0.0-rc.0", - "@rocket.chat/ui-contexts": "2.0.0-rc.0", + "@rocket.chat/ui-client": "2.0.0-rc.1", + "@rocket.chat/ui-contexts": "2.0.0-rc.1", "katex": "*", "react": "*" }, diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md index 5c3093e07a29..399307d7f772 100644 --- a/packages/instance-status/CHANGELOG.md +++ b/packages/instance-status/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/instance-status +## 0.0.11-rc.1 + +### Patch Changes + +- @rocket.chat/models@0.0.11-rc.1 + ## 0.0.11-rc.0 ### Patch Changes diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index 8e0b758e4436..d446a42b7e79 100644 --- a/packages/instance-status/package.json +++ b/packages/instance-status/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/instance-status", - "version": "0.0.11-rc.0", + "version": "0.0.11-rc.1", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/packages/livechat/CHANGELOG.md b/packages/livechat/CHANGELOG.md index 02f804e0949e..08ebfcb6dc18 100644 --- a/packages/livechat/CHANGELOG.md +++ b/packages/livechat/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/livechat Change Log +## 1.14.0-rc.1 + +### Patch Changes + +- @rocket.chat/gazzodown@2.0.0-rc.1 + ## 1.14.0-rc.0 ### Minor Changes diff --git a/packages/livechat/package.json b/packages/livechat/package.json index ce9df8755849..b2ebd22a89f2 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/livechat", - "version": "1.14.0-rc.0", + "version": "1.14.0-rc.1", "files": [ "/build" ], diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 69d9005974d3..498fc2cef4a3 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/model-typings +## 0.1.0-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 + ## 0.1.0-rc.0 ### Minor Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 0618912a2f51..f9cbc45b910c 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "0.1.0-rc.0", + "version": "0.1.0-rc.1", "private": true, "devDependencies": { "@types/jest": "~29.5.3", diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index 16d8372b6b6a..d1523c91b283 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/models +## 0.0.11-rc.1 + +### Patch Changes + +- @rocket.chat/model-typings@0.1.0-rc.1 + ## 0.0.11-rc.0 ### Patch Changes diff --git a/packages/models/package.json b/packages/models/package.json index 9823117a92eb..dffa357f0768 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/models", - "version": "0.0.11-rc.0", + "version": "0.0.11-rc.1", "private": true, "devDependencies": { "@types/jest": "~29.5.3", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 228209db8b62..5150a5160262 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/rest-typings +## 6.4.0-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 + ## 6.4.0-rc.0 ### Minor Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 34dcc90e2076..26b7de5653d3 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/rest-typings", - "version": "6.4.0-rc.0", + "version": "6.4.0-rc.1", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "@types/jest": "~29.5.3", diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md index 727e050db4c8..e7b3d0de00e7 100644 --- a/packages/ui-client/CHANGELOG.md +++ b/packages/ui-client/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/ui-client +## 2.0.0-rc.1 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.0-rc.1 + ## 2.0.0-rc.0 ### Minor Changes diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 2d9e156dcb8c..4bfa46253f8e 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-client", - "version": "2.0.0-rc.0", + "version": "2.0.0-rc.1", "private": true, "devDependencies": { "@babel/core": "~7.22.9", @@ -61,7 +61,7 @@ "@rocket.chat/fuselage": "*", "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", - "@rocket.chat/ui-contexts": "2.0.0-rc.0", + "@rocket.chat/ui-contexts": "2.0.0-rc.1", "react": "~17.0.2" }, "volta": { diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md index fb04c87aefbd..91761e8c8c76 100644 --- a/packages/ui-contexts/CHANGELOG.md +++ b/packages/ui-contexts/CHANGELOG.md @@ -1,5 +1,13 @@ # @rocket.chat/ui-contexts +## 2.0.0-rc.1 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.0-rc.1 +- @rocket.chat/rest-typings@6.4.0-rc.1 +- @rocket.chat/ddp-client@0.2.0-rc.1 + ## 2.0.0-rc.0 ### Minor Changes diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index 5c0ae099f718..49c9fc82227a 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-contexts", - "version": "2.0.0-rc.0", + "version": "2.0.0-rc.1", "private": true, "devDependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md index 04a9823f8153..9b6c98073ed4 100644 --- a/packages/ui-video-conf/CHANGELOG.md +++ b/packages/ui-video-conf/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/ui-video-conf +## 2.0.0-rc.1 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.0-rc.1 + ## 2.0.0-rc.0 ### Patch Changes diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 3c89b5dfeade..5c01a6db8f21 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-video-conf", - "version": "2.0.0-rc.0", + "version": "2.0.0-rc.1", "private": true, "devDependencies": { "@babel/core": "~7.22.9", @@ -35,7 +35,7 @@ "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-contexts": "2.0.0-rc.0", + "@rocket.chat/ui-contexts": "2.0.0-rc.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/packages/uikit-playground/CHANGELOG.md b/packages/uikit-playground/CHANGELOG.md index fbffbd624c36..b84a4b9f22bf 100644 --- a/packages/uikit-playground/CHANGELOG.md +++ b/packages/uikit-playground/CHANGELOG.md @@ -1,5 +1,12 @@ # @rocket.chat/uikit-playground +## 0.2.0-rc.1 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.0-rc.1 +- @rocket.chat/fuselage-ui-kit@2.0.0-rc.1 + ## 0.2.0-rc.0 ### Minor Changes diff --git a/packages/uikit-playground/package.json b/packages/uikit-playground/package.json index f31b9fcf1ddb..1e3998359a66 100644 --- a/packages/uikit-playground/package.json +++ b/packages/uikit-playground/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/uikit-playground", "private": true, - "version": "0.2.0-rc.0", + "version": "0.2.0-rc.1", "type": "module", "scripts": { "dev": "vite", diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md index 0399b9558155..fd436f651254 100644 --- a/packages/web-ui-registration/CHANGELOG.md +++ b/packages/web-ui-registration/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/web-ui-registration +## 2.0.0-rc.1 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.0-rc.1 + ## 2.0.0-rc.0 ### Patch Changes diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index 502ed3b402d6..2f31e571ca8c 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/web-ui-registration", - "version": "2.0.0-rc.0", + "version": "2.0.0-rc.1", "private": true, "homepage": "https://rocket.chat", "main": "./dist/index.js", @@ -49,7 +49,7 @@ }, "peerDependencies": { "@rocket.chat/layout": "*", - "@rocket.chat/ui-contexts": "2.0.0-rc.0", + "@rocket.chat/ui-contexts": "2.0.0-rc.1", "@tanstack/react-query": "*", "react": "*", "react-hook-form": "*", From c7206553d2ba6609d60d73687f79ed80c5d2f4ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrique=20Guimar=C3=A3es=20Ribeiro?= Date: Fri, 15 Sep 2023 16:02:14 -0300 Subject: [PATCH 108/115] refactor: Implement functional code for the 'useFilteredApps' hook (#30279) Co-authored-by: Tiago Evangelista Pinto <17487063+tiagoevanp@users.noreply.github.com> --- .../marketplace/AppsPage/AppsPageContent.tsx | 24 +++- .../marketplace/hooks/useFilteredApps.ts | 114 ++++++++---------- 2 files changed, 71 insertions(+), 67 deletions(-) diff --git a/apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx b/apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx index 40d90b56e046..5b47634bff29 100644 --- a/apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx +++ b/apps/meteor/client/views/marketplace/AppsPage/AppsPageContent.tsx @@ -100,6 +100,24 @@ const AppsPageContent = (): ReactElement => { } }, [context, marketplaceApps, installedApps, privateApps]); + const findSort = () => { + const possibleSort = sortFilterStructure.items.find(({ checked }) => checked); + + return possibleSort ? possibleSort.id : 'mru'; + }; + + const findPurchaseType = () => { + const possiblePurchaseType = freePaidFilterStructure.items.find(({ checked }) => checked); + + return possiblePurchaseType ? possiblePurchaseType.id : 'all'; + }; + + const findStatus = () => { + const possibleStatus = statusFilterStructure.items.find(({ checked }) => checked); + + return possibleStatus ? possibleStatus.id : 'all'; + }; + const [categories, selectedCategories, categoryTagList, onSelected] = useCategories(); const appsResult = useFilteredApps({ appsData: getAppsData(), @@ -107,9 +125,9 @@ const AppsPageContent = (): ReactElement => { current, itemsPerPage, categories: useMemo(() => selectedCategories.map(({ label }) => label), [selectedCategories]), - purchaseType: useMemo(() => freePaidFilterStructure.items.find(({ checked }) => checked)?.id, [freePaidFilterStructure]), - sortingMethod: useMemo(() => sortFilterStructure.items.find(({ checked }) => checked)?.id, [sortFilterStructure]), - status: useMemo(() => statusFilterStructure.items.find(({ checked }) => checked)?.id, [statusFilterStructure]), + purchaseType: useMemo(findPurchaseType, [freePaidFilterStructure]), + sortingMethod: useMemo(findSort, [sortFilterStructure]), + status: useMemo(findStatus, [statusFilterStructure]), context, }); diff --git a/apps/meteor/client/views/marketplace/hooks/useFilteredApps.ts b/apps/meteor/client/views/marketplace/hooks/useFilteredApps.ts index 19664cd4b693..1027aae75a8a 100644 --- a/apps/meteor/client/views/marketplace/hooks/useFilteredApps.ts +++ b/apps/meteor/client/views/marketplace/hooks/useFilteredApps.ts @@ -33,11 +33,11 @@ export const useFilteredApps = ({ text: string; current: number; itemsPerPage: number; - categories?: string[]; - purchaseType?: string; + categories: string[]; + purchaseType: string; isEnterpriseOnly?: boolean; - sortingMethod?: string; - status?: string; + sortingMethod: string; + status: string; context?: string; }): AsyncState< { items: App[] } & { shouldShowSearchText: boolean } & PaginatedResult & { allApps: App[] } & { totalAppsLength: number } @@ -48,72 +48,58 @@ export const useFilteredApps = ({ } const { apps } = appsData.value; - - let filtered: App[] = apps; - let shouldShowSearchText = true; - - const sortingMethods: Record App[]> = { - urf: () => - filtered.sort( - (firstApp, secondApp) => (secondApp?.appRequestStats?.totalUnseen || 0) - (firstApp?.appRequestStats?.totalUnseen || 0), - ), - url: () => - filtered.sort( - (firstApp, secondApp) => (firstApp?.appRequestStats?.totalUnseen || 0) - (secondApp?.appRequestStats?.totalUnseen || 0), - ), - az: () => filtered.sort((firstApp, secondApp) => sortAppsByAlphabeticalOrInverseOrder(firstApp.name, secondApp.name)), - za: () => filtered.sort((firstApp, secondApp) => sortAppsByAlphabeticalOrInverseOrder(secondApp.name, firstApp.name)), - mru: () => - filtered.sort((firstApp, secondApp) => sortAppsByClosestOrFarthestModificationDate(firstApp.modifiedAt, secondApp.modifiedAt)), - lru: () => - filtered.sort((firstApp, secondApp) => sortAppsByClosestOrFarthestModificationDate(secondApp.modifiedAt, firstApp.modifiedAt)), + const fallback = (apps: App[]) => apps; + + const sortingMethods: Record App[]> = { + urf: (apps: App[]) => + apps.sort((firstApp, secondApp) => (secondApp?.appRequestStats?.totalUnseen || 0) - (firstApp?.appRequestStats?.totalUnseen || 0)), + url: (apps: App[]) => + apps.sort((firstApp, secondApp) => (firstApp?.appRequestStats?.totalUnseen || 0) - (secondApp?.appRequestStats?.totalUnseen || 0)), + az: (apps: App[]) => apps.sort((firstApp, secondApp) => sortAppsByAlphabeticalOrInverseOrder(firstApp.name, secondApp.name)), + za: (apps: App[]) => apps.sort((firstApp, secondApp) => sortAppsByAlphabeticalOrInverseOrder(secondApp.name, firstApp.name)), + mru: (apps: App[]) => + apps.sort((firstApp, secondApp) => sortAppsByClosestOrFarthestModificationDate(firstApp.modifiedAt, secondApp.modifiedAt)), + lru: (apps: App[]) => + apps.sort((firstApp, secondApp) => sortAppsByClosestOrFarthestModificationDate(secondApp.modifiedAt, firstApp.modifiedAt)), }; - if (context && context === 'enterprise') { - filtered = apps.filter(({ categories }) => categories.includes('Enterprise')); - } - - if (sortingMethod) { - filtered = sortingMethods[sortingMethod](); - } - - const filterByPurchaseType: Record App[]> = { - paid: () => filtered.filter(filterAppsByPaid), - enterprise: () => filtered.filter(filterAppsByEnterprise), - free: () => filtered.filter(filterAppsByFree), + const filterByPurchaseType: Record App[]> = { + all: fallback, + paid: (apps: App[]) => apps.filter(filterAppsByPaid), + enterprise: (apps: App[]) => apps.filter(filterAppsByEnterprise), + free: (apps: App[]) => apps.filter(filterAppsByFree), }; - if (purchaseType && purchaseType !== 'all') { - filtered = filterByPurchaseType[purchaseType](); - - if (!filtered.length) shouldShowSearchText = false; - } - - if (status && status !== 'all') { - filtered = status === 'enabled' ? filtered.filter(filterAppsByEnabled) : filtered.filter(filterAppsByDisabled); - - if (!filtered.length) shouldShowSearchText = false; - } - - if (Boolean(categories.length) && Boolean(text)) { - filtered = filtered.filter((app) => filterAppsByCategories(app, categories)).filter(({ name }) => filterAppsByText(name, text)); - shouldShowSearchText = true; - } - - if (Boolean(categories.length) && !text) { - filtered = filtered.filter((app) => filterAppsByCategories(app, categories)); - shouldShowSearchText = false; - } - - if (!categories.length && Boolean(text)) { - filtered = filtered.filter(({ name }) => filterAppsByText(name, text)); - shouldShowSearchText = true; - } + const filterByStatus: Record App[]> = { + all: fallback, + enabled: (apps: App[]) => apps.filter(filterAppsByEnabled), + disabled: (apps: App[]) => apps.filter(filterAppsByDisabled), + }; - if (context && context === 'requested') { - filtered = apps.filter(({ appRequestStats, installed }) => Boolean(appRequestStats) && !installed); - } + const filterByContext: Record App[]> = { + explore: fallback, + installed: fallback, + private: fallback, + enterprise: (apps: App[]) => apps.filter(({ categories }) => categories.includes('Enterprise')), + requested: (apps: App[]) => apps.filter(({ appRequestStats, installed }) => Boolean(appRequestStats) && !installed), + }; + type appsFilterFunction = (apps: App[]) => App[]; + const pipeAppsFilter = + (...functions: appsFilterFunction[]) => + (initialValue: App[]) => + functions.reduce((currentAppsList, currentFilterFunction) => currentFilterFunction(currentAppsList), initialValue); + + const filtered = pipeAppsFilter( + context ? filterByContext[context] : fallback, + filterByPurchaseType[purchaseType], + filterByStatus[status], + categories.length ? (apps: App[]) => apps.filter((app) => filterAppsByCategories(app, categories)) : fallback, + text ? (apps: App[]) => apps.filter(({ name }) => filterAppsByText(name, text)) : fallback, + sortingMethods[sortingMethod], + )(apps); + + const shouldShowSearchText = !!text; const total = filtered.length; const offset = current > total ? 0 : current; const end = current + itemsPerPage; From eccaf085eac2b469f770c8c97ecacd09b9b592fc Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Fri, 15 Sep 2023 17:52:00 -0300 Subject: [PATCH 109/115] Bump version to 6.5.0-develop --- apps/meteor/.docker/Dockerfile.rhel | 2 +- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index 9f03ae9f3db4..1481b0445e45 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 6.4.0-develop +ENV RC_VERSION 6.5.0-develop MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index a5d2fcb9bc57..b9e235456291 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "6.4.0-develop" + "version": "6.5.0-develop" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 1e1d7e03ce02..4954c22a319b 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "6.4.0-develop", + "version": "6.5.0-develop", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index 47f10019e2cc..7d3e08d4f5a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "6.4.0-develop", + "version": "6.5.0-develop", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, From b3fa016832c343711e9a617798c06473bf72c40c Mon Sep 17 00:00:00 2001 From: janainaCoelhoRocketchat <105796517+janainaCoelhoRocketchat@users.noreply.github.com> Date: Fri, 15 Sep 2023 21:15:28 -0300 Subject: [PATCH 110/115] test: create non private team and readonly team (#30371) --- .../header/CreateTeam/CreateTeamModal.tsx | 95 ++++++++++++++----- .../tests/e2e/page-objects/home-team.ts | 10 +- apps/meteor/tests/e2e/team-management.spec.ts | 26 ++++- 3 files changed, 102 insertions(+), 29 deletions(-) diff --git a/apps/meteor/client/sidebar/header/CreateTeam/CreateTeamModal.tsx b/apps/meteor/client/sidebar/header/CreateTeam/CreateTeamModal.tsx index 1f12c2b59b49..9907aa788894 100644 --- a/apps/meteor/client/sidebar/header/CreateTeam/CreateTeamModal.tsx +++ b/apps/meteor/client/sidebar/header/CreateTeam/CreateTeamModal.tsx @@ -1,15 +1,16 @@ -import { Box, Modal, Button, TextInput, Field, ToggleSwitch, FieldGroup, Icon } from '@rocket.chat/fuselage'; +import { Box, Button, Field, FieldGroup, Icon, Modal, TextInput, ToggleSwitch } from '@rocket.chat/fuselage'; +import { useUniqueId } from '@rocket.chat/fuselage-hooks'; import { - useTranslation, - useSetting, - usePermission, useEndpoint, - useToastMessageDispatch, + usePermission, usePermissionWithScopedRoles, + useSetting, + useToastMessageDispatch, + useTranslation, } from '@rocket.chat/ui-contexts'; import type { ComponentProps, ReactElement } from 'react'; -import React, { memo, useMemo, useEffect } from 'react'; -import { useForm, Controller } from 'react-hook-form'; +import React, { memo, useEffect, useMemo } from 'react'; +import { Controller, useForm } from 'react-hook-form'; import UserAutoCompleteMultiple from '../../../components/UserAutoCompleteMultiple'; import { goToRoomById } from '../../../lib/utils/goToRoomById'; @@ -129,18 +130,35 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => } }; + const createTeamFormId = useUniqueId(); + const nameId = useUniqueId(); + const topicId = useUniqueId(); + const privateId = useUniqueId(); + const readOnlyId = useUniqueId(); + const encryptedId = useUniqueId(); + const broadcastId = useUniqueId(); + const addMembersId = useUniqueId(); + return ( - ) => }> + ) => ( + + )} + > - {t('Teams_New_Title')} + {t('Teams_New_Title')} - {t('Teams_New_Name_Label')} + + {t('Teams_New_Name_Label')} + void }): ReactElement => placeholder={t('Team_Name')} addon={} error={errors.name?.message} + aria-describedby={`${nameId}-error`} + aria-required='true' /> - {errors?.name && {errors.name.message}} + {errors?.name && ( + + {errors.name.message} + + )} - + {t('Teams_New_Description_Label')}{' '} ({t('optional')}) - + - {t('Teams_New_Private_Label')} - + {t('Teams_New_Private_Label')} + {isPrivate ? t('Teams_New_Private_Description_Enabled') : t('Teams_New_Private_Description_Disabled')} @@ -176,7 +205,7 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => control={control} name='isPrivate' render={({ field: { onChange, value, ref } }): ReactElement => ( - + )} /> @@ -184,8 +213,8 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => - {t('Teams_New_Read_only_Label')} - + {t('Teams_New_Read_only_Label')} + {readOnly ? t('Only_authorized_users_can_write_new_messages') : t('Teams_New_Read_only_Description')} @@ -193,7 +222,14 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => control={control} name='readOnly' render={({ field: { onChange, value, ref } }): ReactElement => ( - + )} /> @@ -201,8 +237,8 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => - {t('Teams_New_Encrypted_Label')} - + {t('Teams_New_Encrypted_Label')} + {isPrivate ? t('Teams_New_Encrypted_Description_Enabled') : t('Teams_New_Encrypted_Description_Disabled')} @@ -210,7 +246,14 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => control={control} name='encrypted' render={({ field: { onChange, value, ref } }): ReactElement => ( - + )} /> @@ -218,20 +261,20 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => - {t('Teams_New_Broadcast_Label')} - {t('Teams_New_Broadcast_Description')} + {t('Teams_New_Broadcast_Label')} + {t('Teams_New_Broadcast_Description')} ( - + )} /> - + {t('Teams_New_Add_members_Label')}{' '} ({t('optional')}) diff --git a/apps/meteor/tests/e2e/page-objects/home-team.ts b/apps/meteor/tests/e2e/page-objects/home-team.ts index 24e8396979c9..9c890da05db8 100644 --- a/apps/meteor/tests/e2e/page-objects/home-team.ts +++ b/apps/meteor/tests/e2e/page-objects/home-team.ts @@ -1,6 +1,6 @@ import type { Locator, Page } from '@playwright/test'; -import { HomeContent, HomeSidenav, HomeFlextab } from './fragments'; +import { HomeContent, HomeFlextab, HomeSidenav } from './fragments'; export class HomeTeam { private readonly page: Page; @@ -30,4 +30,12 @@ export class HomeTeam { get btnTeamCreate(): Locator { return this.page.locator('role=dialog >> role=group >> role=button[name=Create]'); } + + get textPrivate(): Locator { + return this.page.locator('role=dialog[name="Create Team"] >> label >> text="Private"'); + } + + get textReadOnly(): Locator { + return this.page.locator('role=dialog[name="Create Team"] >> label >> text="Read Only"'); + } } diff --git a/apps/meteor/tests/e2e/team-management.spec.ts b/apps/meteor/tests/e2e/team-management.spec.ts index ee2220966d8d..338f5c5eb0ef 100644 --- a/apps/meteor/tests/e2e/team-management.spec.ts +++ b/apps/meteor/tests/e2e/team-management.spec.ts @@ -3,7 +3,7 @@ import { faker } from '@faker-js/faker'; import { Users } from './fixtures/userStates'; import { HomeTeam } from './page-objects'; import { createTargetChannel } from './utils'; -import { test, expect } from './utils/test'; +import { expect, test } from './utils/test'; test.use({ storageState: Users.admin.state }); @@ -11,6 +11,8 @@ test.describe.serial('teams-management', () => { let poHomeTeam: HomeTeam; let targetChannel: string; const targetTeam = faker.string.uuid(); + const targetTeamNonPrivate = faker.string.uuid(); + const targetTeamReadOnly = faker.string.uuid(); test.beforeAll(async ({ api }) => { targetChannel = await createTargetChannel(api); @@ -22,7 +24,7 @@ test.describe.serial('teams-management', () => { await page.goto('/home'); }); - test('expect create "targetTeam"', async ({ page }) => { + test('expect create "targetTeam" private', async ({ page }) => { await poHomeTeam.sidenav.openNewByLabel('Team'); await poHomeTeam.inputTeamName.type(targetTeam); await poHomeTeam.addMember('user1'); @@ -31,6 +33,26 @@ test.describe.serial('teams-management', () => { await expect(page).toHaveURL(`/group/${targetTeam}`); }); + test('expect create "targetTeamNonPrivate" non private', async ({ page }) => { + await poHomeTeam.sidenav.openNewByLabel('Team'); + await poHomeTeam.inputTeamName.type(targetTeamNonPrivate); + await poHomeTeam.textPrivate.click(); + await poHomeTeam.addMember('user1'); + await poHomeTeam.btnTeamCreate.click(); + + await expect(page).toHaveURL(`/channel/${targetTeamNonPrivate}`); + }); + + test('expect create "targetTeamReadOnly" readonly', async ({ page }) => { + await poHomeTeam.sidenav.openNewByLabel('Team'); + await poHomeTeam.inputTeamName.type(targetTeamReadOnly); + await poHomeTeam.textReadOnly.click(); + await poHomeTeam.addMember('user1'); + await poHomeTeam.btnTeamCreate.click(); + + await expect(page).toHaveURL(`/group/${targetTeamReadOnly}`); + }); + test('expect throw validation error if team name already exists', async () => { await poHomeTeam.sidenav.openNewByLabel('Team'); await poHomeTeam.inputTeamName.type(targetTeam); From 9a90bfffa8ac5b4f9ba9c18818379baa19a72b2b Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Mon, 18 Sep 2023 09:54:49 -0300 Subject: [PATCH 111/115] fix: Presence broadcast isn't enabled after license validation (#30282) Co-authored-by: Diego Sampaio --- .changeset/tall-pumpkins-cross.md | 5 +++++ ee/packages/presence/src/Presence.ts | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 .changeset/tall-pumpkins-cross.md diff --git a/.changeset/tall-pumpkins-cross.md b/.changeset/tall-pumpkins-cross.md new file mode 100644 index 000000000000..e6cfd8a309b9 --- /dev/null +++ b/.changeset/tall-pumpkins-cross.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/presence": patch +--- + +Fixed presence broadcast being disabled on server restart diff --git a/ee/packages/presence/src/Presence.ts b/ee/packages/presence/src/Presence.ts index 2f30a2ea8912..238cd445def4 100755 --- a/ee/packages/presence/src/Presence.ts +++ b/ee/packages/presence/src/Presence.ts @@ -39,9 +39,14 @@ export class Presence extends ServiceClass implements IPresence { } }); - this.onEvent('license.module', ({ module, valid }) => { + this.onEvent('license.module', async ({ module, valid }) => { if (module === 'scalability') { this.hasLicense = valid; + + // broadcast should always be enabled if license is active (unless the troubleshoot setting is on) + if (!this.broadcastEnabled && valid) { + await this.toggleBroadcast(true); + } } }); } @@ -58,9 +63,9 @@ export class Presence extends ServiceClass implements IPresence { }, 10000); try { - this.hasLicense = await License.hasLicense('scalability'); - await Settings.updateValueById('Presence_broadcast_disabled', false); + + this.hasLicense = await License.hasLicense('scalability'); } catch (e: unknown) { // ignore } From b1c2a4c71283da38baf6b58f7a6856aa4f442b92 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Mon, 18 Sep 2023 11:37:51 -0300 Subject: [PATCH 112/115] fix: increase cron job check delay to 1 min (#30402) --- .changeset/three-ants-give.md | 8 ++++++++ packages/cron/src/index.ts | 1 + 2 files changed, 9 insertions(+) create mode 100644 .changeset/three-ants-give.md diff --git a/.changeset/three-ants-give.md b/.changeset/three-ants-give.md new file mode 100644 index 000000000000..4d33fad05f39 --- /dev/null +++ b/.changeset/three-ants-give.md @@ -0,0 +1,8 @@ +--- +"@rocket.chat/cron": patch +"@rocket.chat/meteor": patch +--- + +Increase cron job check delay to 1 min from 5s. + +This reduces MongoDB requests introduced on 6.3. diff --git a/packages/cron/src/index.ts b/packages/cron/src/index.ts index 62bc0512bac6..dcd4dc5745d8 100644 --- a/packages/cron/src/index.ts +++ b/packages/cron/src/index.ts @@ -64,6 +64,7 @@ export class AgendaCronJobs { mongo, db: { collection: 'rocketchat_cron' }, defaultConcurrency: 1, + processEvery: '1 minute', }); await this.scheduler.start(); From 5ce4c41f7b29e903f39bf3054bd854c936a07162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlia=20Jaeger=20Foresti?= <60678893+juliajforesti@users.noreply.github.com> Date: Mon, 18 Sep 2023 12:26:35 -0300 Subject: [PATCH 113/115] chore: color palette changes (#30385) --- ee/packages/ui-theming/src/PaletteStyleTag.tsx | 5 ++--- ee/packages/ui-theming/src/paletteDark.ts | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ee/packages/ui-theming/src/PaletteStyleTag.tsx b/ee/packages/ui-theming/src/PaletteStyleTag.tsx index 52d912388987..ce911ce4a122 100644 --- a/ee/packages/ui-theming/src/PaletteStyleTag.tsx +++ b/ee/packages/ui-theming/src/PaletteStyleTag.tsx @@ -3,7 +3,6 @@ import { createPortal } from 'react-dom'; import { codeBlock } from './codeBlockStyles'; import { convertToCss } from './helpers/convertToCss'; -import { filterOnlyChangedColors } from './helpers/filterOnlyChangedColors'; import { useCreateStyleContainer } from './hooks/useCreateStyleContainer'; import { useThemeMode } from './hooks/useThemeMode'; import { defaultPalette } from './palette'; @@ -20,9 +19,9 @@ export const PaletteStyleTag = memo(function PaletteStyleTag() { if (theme === 'high-contrast') { return paletteHighContrast; } - return {}; + return defaultPalette; }; - const palette = convertToCss(filterOnlyChangedColors(defaultPalette, getPalette()), '.rcx-content--main'); + const palette = convertToCss(getPalette(), '.rcx-content--main, .rcx-tile'); return createPortal(theme === 'dark' ? palette + codeBlock : palette, useCreateStyleContainer('main-palette')); }); diff --git a/ee/packages/ui-theming/src/paletteDark.ts b/ee/packages/ui-theming/src/paletteDark.ts index 9898c7fe95f9..cdb60efffeac 100644 --- a/ee/packages/ui-theming/src/paletteDark.ts +++ b/ee/packages/ui-theming/src/paletteDark.ts @@ -51,7 +51,7 @@ export const palette = [ { name: 'font-default', token: 'N400', color: '#E4E7EA' }, { name: 'font-titles-labels', token: '', color: '#F2F3F5' }, { name: 'font-info', token: '', color: '#739EDE' }, - { name: 'font-danger', token: '', color: '#CF6E7A' }, + { name: 'font-danger', token: '', color: '#D88892' }, { name: 'font-pure-black', token: '', color: '#2F343D' }, { name: 'font-pure-white', token: '', color: '#FFFFFF' }, ], From 76083c810083b064ac138d85d716cc4c285e599f Mon Sep 17 00:00:00 2001 From: Aleksander Nicacio da Silva Date: Mon, 18 Sep 2023 13:31:43 -0300 Subject: [PATCH 114/115] chore: Webhooks page refactor (#30274) --- .../app/livechat/server/api/v1/webhooks.ts | 2 +- .../omnichannel/webhooks/WebhooksPage.js | 170 ------------- .../omnichannel/webhooks/WebhooksPage.tsx | 233 ++++++++++++++++++ ...Container.js => WebhooksPageContainer.tsx} | 23 +- .../rocketchat-i18n/i18n/en.i18n.json | 1 + .../rocketchat-i18n/i18n/pt-BR.i18n.json | 1 + packages/rest-typings/src/v1/omnichannel.ts | 5 +- 7 files changed, 254 insertions(+), 181 deletions(-) delete mode 100644 apps/meteor/client/views/omnichannel/webhooks/WebhooksPage.js create mode 100644 apps/meteor/client/views/omnichannel/webhooks/WebhooksPage.tsx rename apps/meteor/client/views/omnichannel/webhooks/{WebhooksPageContainer.js => WebhooksPageContainer.tsx} (51%) diff --git a/apps/meteor/app/livechat/server/api/v1/webhooks.ts b/apps/meteor/app/livechat/server/api/v1/webhooks.ts index dceb19ed0420..e282e2bd548b 100644 --- a/apps/meteor/app/livechat/server/api/v1/webhooks.ts +++ b/apps/meteor/app/livechat/server/api/v1/webhooks.ts @@ -66,7 +66,7 @@ API.v1.addRoute( const webhookUrl = settings.get('Livechat_webhookUrl'); if (!webhookUrl) { - return API.v1.failure('Webhook URL is not set'); + return API.v1.failure('Webhook_URL_not_set'); } try { diff --git a/apps/meteor/client/views/omnichannel/webhooks/WebhooksPage.js b/apps/meteor/client/views/omnichannel/webhooks/WebhooksPage.js deleted file mode 100644 index 03de7930f3ff..000000000000 --- a/apps/meteor/client/views/omnichannel/webhooks/WebhooksPage.js +++ /dev/null @@ -1,170 +0,0 @@ -import { Box, FieldGroup, Field, TextInput, MultiSelect, Button, ButtonGroup, NumberInput } from '@rocket.chat/fuselage'; -import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; -import { ExternalLink } from '@rocket.chat/ui-client'; -import { useToastMessageDispatch, useTranslation, useEndpoint } from '@rocket.chat/ui-contexts'; -import React, { useMemo } from 'react'; - -import Page from '../../../components/Page'; -import { useForm } from '../../../hooks/useForm'; - -const reduceSendOptions = (options) => - Object.entries(options).reduce((acc, [key, val]) => { - if (val) { - acc = [...acc, key]; - } - return acc; - }, []); - -const integrationsUrl = 'https://docs.rocket.chat/use-rocket.chat/omnichannel/webhooks'; - -const getInitialValues = ({ - Livechat_webhookUrl, - Livechat_secret_token, - Livechat_webhook_on_start, - Livechat_webhook_on_close, - Livechat_webhook_on_chat_taken, - Livechat_webhook_on_chat_queued, - Livechat_webhook_on_forward, - Livechat_webhook_on_offline_msg, - Livechat_webhook_on_visitor_message, - Livechat_webhook_on_agent_message, - Livechat_http_timeout, -}) => { - const sendOptions = { - Livechat_webhook_on_start, - Livechat_webhook_on_close, - Livechat_webhook_on_chat_taken, - Livechat_webhook_on_chat_queued, - Livechat_webhook_on_forward, - Livechat_webhook_on_offline_msg, - Livechat_webhook_on_visitor_message, - Livechat_webhook_on_agent_message, - }; - - const mappedSendOptions = reduceSendOptions(sendOptions); - - return { - Livechat_webhookUrl, - Livechat_secret_token, - Livechat_http_timeout, - sendOn: mappedSendOptions, - }; -}; - -const WebhooksPage = ({ settings }) => { - const t = useTranslation(); - const dispatchToastMessage = useToastMessageDispatch(); - - const { values, handlers, hasUnsavedChanges, reset, commit } = useForm(getInitialValues(settings)); - - const save = useEndpoint('POST', '/v1/omnichannel/integrations'); - const test = useEndpoint('POST', '/v1/livechat/webhook.test'); - - const { Livechat_webhookUrl, Livechat_secret_token, Livechat_http_timeout, sendOn } = values; - - const { handleLivechat_webhookUrl, handleLivechat_secret_token, handleLivechat_http_timeout, handleSendOn } = handlers; - - const sendOptions = useMemo( - () => [ - ['Livechat_webhook_on_start', t('Chat_start')], - ['Livechat_webhook_on_close', t('Chat_close')], - ['Livechat_webhook_on_chat_taken', t('Chat_taken')], - ['Livechat_webhook_on_chat_queued', t('Chat_queued')], - ['Livechat_webhook_on_forward', t('Forwarding')], - ['Livechat_webhook_on_offline_msg', t('Offline_messages')], - ['Livechat_webhook_on_visitor_message', t('Visitor_message')], - ['Livechat_webhook_on_agent_message', t('Agent_messages')], - ], - [t], - ); - - const handleSave = useMutableCallback(async () => { - try { - await save({ - LivechatWebhookUrl: Livechat_webhookUrl, - LivechatSecretToken: Livechat_secret_token, - LivechatHttpTimeout: Livechat_http_timeout, - LivechatWebhookOnStart: sendOn.includes('Livechat_webhook_on_start'), - LivechatWebhookOnClose: sendOn.includes('Livechat_webhook_on_close'), - LivechatWebhookOnChatTaken: sendOn.includes('Livechat_webhook_on_chat_taken'), - LivechatWebhookOnChatQueued: sendOn.includes('Livechat_webhook_on_chat_queued'), - LivechatWebhookOnForward: sendOn.includes('Livechat_webhook_on_forward'), - LivechatWebhookOnOfflineMsg: sendOn.includes('Livechat_webhook_on_offline_msg'), - LivechatWebhookOnVisitorMessage: sendOn.includes('Livechat_webhook_on_visitor_message'), - LivechatWebhookOnAgentMessage: sendOn.includes('Livechat_webhook_on_agent_message'), - }); - dispatchToastMessage({ type: 'success', message: t('Saved') }); - commit(); - } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); - } - }); - - const handleTest = useMutableCallback(async () => { - try { - await test(); - dispatchToastMessage({ type: 'success', message: t('It_works') }); - commit(); - } catch (error) { - dispatchToastMessage({ type: 'error', message: error }); - } - }); - - return ( - - - - - - - - - - -

{t('You_can_use_webhooks_to_easily_integrate_livechat_with_your_CRM')}

-

- {t('Click_here')} {t('to_see_more_details_on_how_to_integrate')} -

- - - {t('Webhook_URL')} - - - - - - {t('Secret_token')} - - - - - - {t('Send_request_on')} - - - - - - - - {t('Http_timeout')} - - - - - -
-
-
- ); -}; - -export default WebhooksPage; diff --git a/apps/meteor/client/views/omnichannel/webhooks/WebhooksPage.tsx b/apps/meteor/client/views/omnichannel/webhooks/WebhooksPage.tsx new file mode 100644 index 000000000000..437c4a9a2afc --- /dev/null +++ b/apps/meteor/client/views/omnichannel/webhooks/WebhooksPage.tsx @@ -0,0 +1,233 @@ +import type { SettingValue } from '@rocket.chat/core-typings'; +import type { SelectOption } from '@rocket.chat/fuselage'; +import { + Box, + FieldGroup, + Field, + FieldRow, + TextInput, + MultiSelect, + Button, + ButtonGroup, + NumberInput, + FieldLabel, +} from '@rocket.chat/fuselage'; +import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; +import { ExternalLink } from '@rocket.chat/ui-client'; +import { useToastMessageDispatch, useTranslation, useEndpoint } from '@rocket.chat/ui-contexts'; +import { useMutation } from '@tanstack/react-query'; +import React, { useMemo } from 'react'; +import { Controller, useForm, useWatch } from 'react-hook-form'; + +import Page from '../../../components/Page'; + +type WebhooksPageProps = { + settings: Record; +}; + +type SendOnOptions = + | 'Livechat_webhook_on_start' + | 'Livechat_webhook_on_close' + | 'Livechat_webhook_on_chat_taken' + | 'Livechat_webhook_on_chat_queued' + | 'Livechat_webhook_on_forward' + | 'Livechat_webhook_on_offline_msg' + | 'Livechat_webhook_on_visitor_message' + | 'Livechat_webhook_on_agent_message'; + +type WebhookFormValues = { + Livechat_webhookUrl: string | undefined; + Livechat_secret_token: string | undefined; + Livechat_http_timeout: string | undefined; + sendOn: SendOnOptions[]; +}; + +const reduceSendOptions = (options: Record) => + Object.entries(options).reduce((acc, [key, val]) => { + if (val) { + acc = [...acc, key]; + } + return acc; + }, []); + +const INTEGRATION_URL = 'https://docs.rocket.chat/use-rocket.chat/omnichannel/webhooks'; + +const getInitialValues = ({ + Livechat_webhookUrl, + Livechat_secret_token, + Livechat_webhook_on_start, + Livechat_webhook_on_close, + Livechat_webhook_on_chat_taken, + Livechat_webhook_on_chat_queued, + Livechat_webhook_on_forward, + Livechat_webhook_on_offline_msg, + Livechat_webhook_on_visitor_message, + Livechat_webhook_on_agent_message, + Livechat_http_timeout, +}: WebhooksPageProps['settings']): WebhookFormValues => { + const mappedSendOptions = reduceSendOptions({ + Livechat_webhook_on_start, + Livechat_webhook_on_close, + Livechat_webhook_on_chat_taken, + Livechat_webhook_on_chat_queued, + Livechat_webhook_on_forward, + Livechat_webhook_on_offline_msg, + Livechat_webhook_on_visitor_message, + Livechat_webhook_on_agent_message, + }); + + return { + Livechat_webhookUrl, + Livechat_secret_token, + Livechat_http_timeout, + sendOn: mappedSendOptions, + } as WebhookFormValues; +}; + +const WebhooksPage = ({ settings }: WebhooksPageProps) => { + const t = useTranslation(); + const dispatchToastMessage = useToastMessageDispatch(); + const defaultValues = getInitialValues(settings); + const { + control, + reset, + formState: { isDirty, isSubmitting }, + handleSubmit, + } = useForm({ + defaultValues, + }); + + const save = useEndpoint('POST', '/v1/omnichannel/integrations'); + const test = useEndpoint('POST', '/v1/livechat/webhook.test'); + + const livechatWebhookUrl = useWatch({ name: 'Livechat_webhookUrl', control }); + const canTest = !(livechatWebhookUrl && !isDirty); + + const sendOptions = useMemo( + () => [ + ['Livechat_webhook_on_start', t('Chat_start')], + ['Livechat_webhook_on_close', t('Chat_close')], + ['Livechat_webhook_on_chat_taken', t('Chat_taken')], + ['Livechat_webhook_on_chat_queued', t('Chat_queued')], + ['Livechat_webhook_on_forward', t('Forwarding')], + ['Livechat_webhook_on_offline_msg', t('Offline_messages')], + ['Livechat_webhook_on_visitor_message', t('Visitor_message')], + ['Livechat_webhook_on_agent_message', t('Agent_messages')], + ], + [t], + ); + + const handleSave = useMutableCallback(async (values) => { + const { sendOn, Livechat_webhookUrl, Livechat_secret_token, Livechat_http_timeout } = values; + try { + await save({ + LivechatWebhookUrl: Livechat_webhookUrl, + LivechatSecretToken: Livechat_secret_token, + LivechatHttpTimeout: Livechat_http_timeout, + LivechatWebhookOnStart: sendOn.includes('Livechat_webhook_on_start'), + LivechatWebhookOnClose: sendOn.includes('Livechat_webhook_on_close'), + LivechatWebhookOnChatTaken: sendOn.includes('Livechat_webhook_on_chat_taken'), + LivechatWebhookOnChatQueued: sendOn.includes('Livechat_webhook_on_chat_queued'), + LivechatWebhookOnForward: sendOn.includes('Livechat_webhook_on_forward'), + LivechatWebhookOnOfflineMsg: sendOn.includes('Livechat_webhook_on_offline_msg'), + LivechatWebhookOnVisitorMessage: sendOn.includes('Livechat_webhook_on_visitor_message'), + LivechatWebhookOnAgentMessage: sendOn.includes('Livechat_webhook_on_agent_message'), + }); + + reset(values); + dispatchToastMessage({ type: 'success', message: t('Saved') }); + } catch (error) { + dispatchToastMessage({ type: 'error', message: error }); + } + }); + + const testWebhook = useMutation({ + mutationFn: () => test(), + onSuccess: () => dispatchToastMessage({ type: 'success', message: t('It_works') }), + onError: (error) => dispatchToastMessage({ type: 'error', message: error }), + }); + + return ( + + + + + + + + + + +

{t('You_can_use_webhooks_to_easily_integrate_livechat_with_your_CRM')}

+

+ {t('Click_here')} {t('to_see_more_details_on_how_to_integrate')} +

+ + + {t('Webhook_URL')} + + ( + + )} + /> + + + + {t('Secret_token')} + + ( + + )} + /> + + + + {t('Send_request_on')} + + + ( + + )} + /> + + + + + {t('Http_timeout')} + + ( + + )} + /> + + + +
+
+
+ ); +}; + +export default WebhooksPage; diff --git a/apps/meteor/client/views/omnichannel/webhooks/WebhooksPageContainer.js b/apps/meteor/client/views/omnichannel/webhooks/WebhooksPageContainer.tsx similarity index 51% rename from apps/meteor/client/views/omnichannel/webhooks/WebhooksPageContainer.js rename to apps/meteor/client/views/omnichannel/webhooks/WebhooksPageContainer.tsx index d1e7379e1c3c..5442f3d27c90 100644 --- a/apps/meteor/client/views/omnichannel/webhooks/WebhooksPageContainer.js +++ b/apps/meteor/client/views/omnichannel/webhooks/WebhooksPageContainer.tsx @@ -1,16 +1,16 @@ +import type { ISetting, Serialized, SettingValue } from '@rocket.chat/core-typings'; import { Callout } from '@rocket.chat/fuselage'; -import { usePermission, useTranslation } from '@rocket.chat/ui-contexts'; +import { useEndpoint, usePermission, useTranslation } from '@rocket.chat/ui-contexts'; +import { useQuery } from '@tanstack/react-query'; import React from 'react'; import Page from '../../../components/Page'; import PageSkeleton from '../../../components/PageSkeleton'; -import { AsyncStatePhase } from '../../../hooks/useAsyncState'; -import { useEndpointData } from '../../../hooks/useEndpointData'; import NotAuthorizedPage from '../../notAuthorized/NotAuthorizedPage'; import WebhooksPage from './WebhooksPage'; -const reduceSettings = (settings) => - settings.reduce((acc, { _id, value }) => { +const reduceSettings = (settings: Serialized[]) => + settings.reduce>((acc, { _id, value }) => { acc = { ...acc, [_id]: value }; return acc; }, {}); @@ -18,7 +18,12 @@ const reduceSettings = (settings) => const WebhooksPageContainer = () => { const t = useTranslation(); - const { value: data, phase: state, error } = useEndpointData('/v1/livechat/integrations.settings'); + const getIntegrationsSettings = useEndpoint('GET', '/v1/livechat/integrations.settings'); + + const { data, isLoading, isError } = useQuery(['/v1/livechat/integrations.settings'], async () => { + const { settings, success } = await getIntegrationsSettings(); + return { settings: reduceSettings(settings), success }; + }); const canViewLivechatWebhooks = usePermission('view-livechat-webhooks'); @@ -26,11 +31,11 @@ const WebhooksPageContainer = () => { return ; } - if (state === AsyncStatePhase.LOADING) { + if (isLoading) { return ; } - if (!data || !data.success || !data.settings || error) { + if (!data?.success || !data?.settings || isError) { return ( @@ -41,7 +46,7 @@ const WebhooksPageContainer = () => { ); } - return ; + return ; }; export default WebhooksPageContainer; diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index a0f6d0e0c6a8..e8b2a9fcdebf 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -5665,6 +5665,7 @@ "webdav-server-not-found": "WebDAV server not found", "Webhook_Details": "WebHook Details", "Webhook_URL": "Webhook URL", + "Webhook_URL_not_set": "Webhook URL is not set", "Webhooks": "Webhooks", "WebRTC": "WebRTC", "WebRTC_Description": "Broadcast audio and/or video material, as well as transmit arbitrary data between browsers without the need for a middleman.", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index de5c2356a6b9..1b24ab3c4129 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -4752,6 +4752,7 @@ "webdav-account-updated": "Conta WebDAV atualizada", "Webhook_Details": "Detalhes do WebHook", "Webhook_URL": "URL do webhook", + "Webhook_URL_not_set": "A URL do webhook não foi definida", "Webhooks": "Webhooks", "WebRTC_Call": "Chamada WebRTC", "WebRTC_direct_audio_call_from_%s": "Chamada de áudio direta de %s", diff --git a/packages/rest-typings/src/v1/omnichannel.ts b/packages/rest-typings/src/v1/omnichannel.ts index f85358c38ee9..60f6ed7ace08 100644 --- a/packages/rest-typings/src/v1/omnichannel.ts +++ b/packages/rest-typings/src/v1/omnichannel.ts @@ -3607,7 +3607,7 @@ export type OmnichannelEndpoints = { }>; }; '/v1/livechat/integrations.settings': { - GET: () => { settings: ISetting[] }; + GET: () => { settings: ISetting[]; success: boolean }; }; '/v1/livechat/upload/:rid': { POST: (params: { file: File }) => IMessage & { newRoom: boolean; showConnecting: boolean }; @@ -3804,4 +3804,7 @@ export type OmnichannelEndpoints = { '/v1/livechat/analytics/dashboards/conversations-by-agent': { GET: (params: GETDashboardConversationsByType) => ReportWithUnmatchingElements; }; + '/v1/livechat/webhook.test': { + POST: () => void; + }; }; From 7c8c4b4394b46fd93fb5227783cfff9836ecd1dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlia=20Jaeger=20Foresti?= <60678893+juliajforesti@users.noreply.github.com> Date: Mon, 18 Sep 2023 13:48:02 -0300 Subject: [PATCH 115/115] chore: bump fuselage packages (#30424) --- .../RoomAutoCompleteMultiple.tsx | 4 +- .../UserAutoCompleteMultiple.tsx | 2 +- .../actions/hooks/useGroupingListItems.tsx | 6 +- .../header/actions/hooks/useSortModeItems.tsx | 4 +- .../header/actions/hooks/useViewModeItems.tsx | 8 +- apps/meteor/ee/server/services/package.json | 4 +- apps/meteor/package.json | 12 +- ee/packages/ui-theming/package.json | 6 +- packages/core-services/package.json | 4 +- packages/core-typings/package.json | 4 +- packages/fuselage-ui-kit/package.json | 10 +- packages/gazzodown/package.json | 2 +- packages/livechat/package.json | 4 +- packages/rest-typings/package.json | 2 +- packages/ui-client/package.json | 6 +- packages/ui-composer/package.json | 4 +- packages/ui-contexts/package.json | 2 +- packages/ui-video-conf/package.json | 6 +- packages/uikit-playground/package.json | 8 +- yarn.lock | 232 +++++++++--------- 20 files changed, 165 insertions(+), 165 deletions(-) diff --git a/apps/meteor/client/components/RoomAutoCompleteMultiple/RoomAutoCompleteMultiple.tsx b/apps/meteor/client/components/RoomAutoCompleteMultiple/RoomAutoCompleteMultiple.tsx index 7026c6cab35f..eb0414e7da14 100644 --- a/apps/meteor/client/components/RoomAutoCompleteMultiple/RoomAutoCompleteMultiple.tsx +++ b/apps/meteor/client/components/RoomAutoCompleteMultiple/RoomAutoCompleteMultiple.tsx @@ -49,8 +49,8 @@ const RoomAutoCompleteMultiple = ({ value, onChange, ...props }: RoomAutoComplet filter={filter} setFilter={setFilter} multiple - renderSelected={({ selected: { value, label }, onRemove }): ReactElement => ( - + renderSelected={({ selected: { value, label }, onRemove, ...props }): ReactElement => ( + {label?.name} diff --git a/apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultiple.tsx b/apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultiple.tsx index dfda12cdd2e4..857af5e9c43f 100644 --- a/apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultiple.tsx +++ b/apps/meteor/client/components/UserAutoCompleteMultiple/UserAutoCompleteMultiple.tsx @@ -31,7 +31,7 @@ const UserAutoCompleteMultiple = ({ onChange, ...props }: UserAutoCompleteMultip setFilter={setFilter} onChange={onChange} multiple - renderSelected={({ selected: { value, label }, onRemove }): ReactElement => ( + renderSelected={({ selected: { value, label }, onRemove, ...props }): ReactElement => ( diff --git a/apps/meteor/client/sidebar/header/actions/hooks/useGroupingListItems.tsx b/apps/meteor/client/sidebar/header/actions/hooks/useGroupingListItems.tsx index 20006cf01588..646b85c838be 100644 --- a/apps/meteor/client/sidebar/header/actions/hooks/useGroupingListItems.tsx +++ b/apps/meteor/client/sidebar/header/actions/hooks/useGroupingListItems.tsx @@ -25,19 +25,19 @@ export const useGroupingListItems = (): GenericMenuItemProps[] => { id: 'unread', content: t('Unread'), icon: 'flag', - addon: , + addon: , }, { id: 'favorites', content: t('Favorites'), icon: 'star', - addon: , + addon: , }, { id: 'types', content: t('Types'), icon: 'group-by-type', - addon: , + addon: , }, ]; }; diff --git a/apps/meteor/client/sidebar/header/actions/hooks/useSortModeItems.tsx b/apps/meteor/client/sidebar/header/actions/hooks/useSortModeItems.tsx index b9432f821373..56041ab4e571 100644 --- a/apps/meteor/client/sidebar/header/actions/hooks/useSortModeItems.tsx +++ b/apps/meteor/client/sidebar/header/actions/hooks/useSortModeItems.tsx @@ -26,14 +26,14 @@ export const useSortModeItems = (): GenericMenuItemProps[] => { id: 'activity', content: t('Activity'), icon: 'clock', - addon: , + addon: , description: sidebarSortBy === 'activity' && isOmnichannelEnabled && , }, { id: 'name', content: t('Name'), icon: 'sort-az', - addon: , + addon: , description: sidebarSortBy === 'alphabetical' && isOmnichannelEnabled && , }, ]; diff --git a/apps/meteor/client/sidebar/header/actions/hooks/useViewModeItems.tsx b/apps/meteor/client/sidebar/header/actions/hooks/useViewModeItems.tsx index 3e27dd22c7fa..ca2855d09db5 100644 --- a/apps/meteor/client/sidebar/header/actions/hooks/useViewModeItems.tsx +++ b/apps/meteor/client/sidebar/header/actions/hooks/useViewModeItems.tsx @@ -29,25 +29,25 @@ export const useViewModeItems = (): GenericMenuItemProps[] => { id: 'extended', content: t('Extended'), icon: 'extended-view', - addon: , + addon: , }, { id: 'medium', content: t('Medium'), icon: 'medium-view', - addon: , + addon: , }, { id: 'condensed', content: t('Condensed'), icon: 'condensed-view', - addon: , + addon: , }, { id: 'avatars', content: t('Avatars'), icon: 'user-rounded', - addon: , + addon: , }, ]; }; diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 3ab8bd2abfd3..3466067fd742 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -27,7 +27,7 @@ "@rocket.chat/models": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", "@rocket.chat/string-helpers": "next", - "@rocket.chat/ui-kit": "next", + "@rocket.chat/ui-kit": "^0.32.1", "ajv": "^8.11.0", "bcrypt": "^5.0.1", "body-parser": "^1.20.2", @@ -50,7 +50,7 @@ "ws": "^8.8.1" }, "devDependencies": { - "@rocket.chat/icons": "next", + "@rocket.chat/icons": "^0.32.0", "@types/cookie": "^0.5.1", "@types/cookie-parser": "^1.4.3", "@types/ejson": "^2.2.0", diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 4954c22a319b..030b77fd7814 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -236,27 +236,27 @@ "@rocket.chat/favicon": "workspace:^", "@rocket.chat/forked-matrix-appservice-bridge": "^4.0.1", "@rocket.chat/forked-matrix-bot-sdk": "^0.6.0-beta.2", - "@rocket.chat/fuselage": "next", - "@rocket.chat/fuselage-hooks": "next", + "@rocket.chat/fuselage": "^0.32.1", + "@rocket.chat/fuselage-hooks": "^0.32.1", "@rocket.chat/fuselage-polyfills": "next", "@rocket.chat/fuselage-toastbar": "next", "@rocket.chat/fuselage-tokens": "next", "@rocket.chat/fuselage-ui-kit": "workspace:^", "@rocket.chat/gazzodown": "workspace:^", "@rocket.chat/i18n": "workspace:^", - "@rocket.chat/icons": "next", + "@rocket.chat/icons": "^0.32.0", "@rocket.chat/instance-status": "workspace:^", "@rocket.chat/layout": "next", "@rocket.chat/log-format": "workspace:^", "@rocket.chat/logger": "workspace:^", - "@rocket.chat/logo": "next", + "@rocket.chat/logo": "^0.31.27", "@rocket.chat/memo": "next", "@rocket.chat/message-parser": "next", "@rocket.chat/model-typings": "workspace:^", "@rocket.chat/models": "workspace:^", "@rocket.chat/mp3-encoder": "0.24.0", "@rocket.chat/omnichannel-services": "workspace:^", - "@rocket.chat/onboarding-ui": "next", + "@rocket.chat/onboarding-ui": "^0.32.1", "@rocket.chat/password-policies": "workspace:^", "@rocket.chat/pdf-worker": "workspace:^", "@rocket.chat/poplib": "workspace:^", @@ -270,7 +270,7 @@ "@rocket.chat/ui-client": "workspace:^", "@rocket.chat/ui-composer": "workspace:^", "@rocket.chat/ui-contexts": "workspace:^", - "@rocket.chat/ui-kit": "next", + "@rocket.chat/ui-kit": "^0.32.1", "@rocket.chat/ui-theming": "workspace:^", "@rocket.chat/ui-video-conf": "workspace:^", "@rocket.chat/web-ui-registration": "workspace:^", diff --git a/ee/packages/ui-theming/package.json b/ee/packages/ui-theming/package.json index 4e6c5c42aec7..a378fee8f896 100644 --- a/ee/packages/ui-theming/package.json +++ b/ee/packages/ui-theming/package.json @@ -4,9 +4,9 @@ "private": true, "devDependencies": { "@rocket.chat/css-in-js": "next", - "@rocket.chat/fuselage": "next", - "@rocket.chat/fuselage-hooks": "next", - "@rocket.chat/icons": "next", + "@rocket.chat/fuselage": "^0.32.1", + "@rocket.chat/fuselage-hooks": "^0.32.1", + "@rocket.chat/icons": "^0.32.0", "@rocket.chat/ui-contexts": "workspace:~", "@storybook/addon-actions": "~6.5.16", "@storybook/addon-docs": "~6.5.16", diff --git a/packages/core-services/package.json b/packages/core-services/package.json index c5185a20d394..f4e05cf08e5b 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -33,11 +33,11 @@ "dependencies": { "@rocket.chat/apps-engine": "1.41.0-alpha.290", "@rocket.chat/core-typings": "workspace:^", - "@rocket.chat/icons": "next", + "@rocket.chat/icons": "^0.32.0", "@rocket.chat/message-parser": "next", "@rocket.chat/models": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", - "@rocket.chat/ui-kit": "next", + "@rocket.chat/ui-kit": "^0.32.1", "@types/fibers": "^3.1.1", "fibers": "^5.0.3" } diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index 5512e8fb5df4..b582e15f3118 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -22,9 +22,9 @@ ], "dependencies": { "@rocket.chat/apps-engine": "1.41.0-alpha.290", - "@rocket.chat/icons": "next", + "@rocket.chat/icons": "^0.32.0", "@rocket.chat/message-parser": "next", - "@rocket.chat/ui-kit": "next" + "@rocket.chat/ui-kit": "^0.32.1" }, "volta": { "extends": "../../package.json" diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index cb28e0699874..fe0d4f02a5cf 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -56,14 +56,14 @@ "devDependencies": { "@rocket.chat/apps-engine": "1.41.0-alpha.290", "@rocket.chat/eslint-config": "workspace:^", - "@rocket.chat/fuselage": "next", - "@rocket.chat/fuselage-hooks": "next", + "@rocket.chat/fuselage": "^0.32.1", + "@rocket.chat/fuselage-hooks": "^0.32.1", "@rocket.chat/fuselage-polyfills": "next", - "@rocket.chat/icons": "next", + "@rocket.chat/icons": "^0.32.0", "@rocket.chat/prettier-config": "next", "@rocket.chat/styled": "next", "@rocket.chat/ui-contexts": "workspace:^", - "@rocket.chat/ui-kit": "next", + "@rocket.chat/ui-kit": "^0.32.1", "@rocket.chat/ui-video-conf": "workspace:^", "@storybook/addon-essentials": "~6.5.16", "@storybook/addons": "~6.5.16", @@ -89,7 +89,7 @@ }, "dependencies": { "@rocket.chat/gazzodown": "workspace:^", - "@rocket.chat/ui-kit": "next", + "@rocket.chat/ui-kit": "^0.32.1", "tslib": "^2.5.3" }, "volta": { diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index 6f0d63803d66..db80f6e36266 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -6,7 +6,7 @@ "@babel/core": "~7.22.9", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/css-in-js": "next", - "@rocket.chat/fuselage": "next", + "@rocket.chat/fuselage": "^0.32.1", "@rocket.chat/fuselage-tokens": "next", "@rocket.chat/message-parser": "next", "@rocket.chat/styled": "next", diff --git a/packages/livechat/package.json b/packages/livechat/package.json index b2ebd22a89f2..bf151cdad809 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -31,7 +31,7 @@ "@rocket.chat/ddp-client": "workspace:^", "@rocket.chat/eslint-config": "workspace:^", "@rocket.chat/fuselage-tokens": "next", - "@rocket.chat/logo": "next", + "@rocket.chat/logo": "^0.31.27", "@storybook/addon-essentials": "~6.5.16", "@storybook/addon-postcss": "~2.0.0", "@storybook/preact": "~6.5.16", @@ -98,7 +98,7 @@ "@rocket.chat/message-parser": "next", "@rocket.chat/random": "workspace:~", "@rocket.chat/sdk": "^1.0.0-alpha.42", - "@rocket.chat/ui-kit": "next", + "@rocket.chat/ui-kit": "^0.32.1", "css-vars-ponyfill": "^2.4.8", "date-fns": "^2.15.0", "emoji-mart": "^3.0.1", diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 26b7de5653d3..cc12bd6d901d 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -27,7 +27,7 @@ "@rocket.chat/apps-engine": "1.41.0-alpha.290", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/message-parser": "next", - "@rocket.chat/ui-kit": "next", + "@rocket.chat/ui-kit": "^0.32.1", "ajv": "^8.11.0", "ajv-formats": "^2.1.1" }, diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 4bfa46253f8e..9fc0b7f3617c 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -5,9 +5,9 @@ "devDependencies": { "@babel/core": "~7.22.9", "@rocket.chat/css-in-js": "next", - "@rocket.chat/fuselage": "next", - "@rocket.chat/fuselage-hooks": "next", - "@rocket.chat/icons": "next", + "@rocket.chat/fuselage": "^0.32.1", + "@rocket.chat/fuselage-hooks": "^0.32.1", + "@rocket.chat/icons": "^0.32.0", "@rocket.chat/mock-providers": "workspace:^", "@rocket.chat/ui-contexts": "workspace:~", "@storybook/addon-actions": "~6.5.16", diff --git a/packages/ui-composer/package.json b/packages/ui-composer/package.json index 40c5c052874e..abf79394f171 100644 --- a/packages/ui-composer/package.json +++ b/packages/ui-composer/package.json @@ -5,8 +5,8 @@ "devDependencies": { "@babel/core": "~7.22.9", "@rocket.chat/eslint-config": "workspace:^", - "@rocket.chat/fuselage": "next", - "@rocket.chat/icons": "next", + "@rocket.chat/fuselage": "^0.32.1", + "@rocket.chat/icons": "^0.32.0", "@storybook/addon-actions": "~6.5.16", "@storybook/addon-docs": "~6.5.16", "@storybook/addon-essentials": "~6.5.16", diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index f9bb30499b28..ce84a75089b3 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -5,7 +5,7 @@ "devDependencies": { "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", - "@rocket.chat/fuselage-hooks": "next", + "@rocket.chat/fuselage-hooks": "^0.32.1", "@rocket.chat/rest-typings": "workspace:^", "@types/jest": "~29.5.3", "@types/react": "~17.0.62", diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 5c01a6db8f21..91ffd97b27d7 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -6,9 +6,9 @@ "@babel/core": "~7.22.9", "@rocket.chat/css-in-js": "next", "@rocket.chat/eslint-config": "workspace:^", - "@rocket.chat/fuselage": "next", - "@rocket.chat/fuselage-hooks": "next", - "@rocket.chat/icons": "next", + "@rocket.chat/fuselage": "^0.32.1", + "@rocket.chat/fuselage-hooks": "^0.32.1", + "@rocket.chat/icons": "^0.32.0", "@rocket.chat/styled": "next", "@rocket.chat/ui-contexts": "workspace:^", "@storybook/addon-actions": "~6.5.16", diff --git a/packages/uikit-playground/package.json b/packages/uikit-playground/package.json index 1e3998359a66..d9b9587f5cf3 100644 --- a/packages/uikit-playground/package.json +++ b/packages/uikit-playground/package.json @@ -15,13 +15,13 @@ "@codemirror/tooltip": "^0.19.16", "@lezer/highlight": "^1.1.6", "@rocket.chat/css-in-js": "next", - "@rocket.chat/fuselage": "next", - "@rocket.chat/fuselage-hooks": "next", + "@rocket.chat/fuselage": "^0.32.1", + "@rocket.chat/fuselage-hooks": "^0.32.1", "@rocket.chat/fuselage-polyfills": "next", "@rocket.chat/fuselage-tokens": "next", "@rocket.chat/fuselage-ui-kit": "workspace:~", - "@rocket.chat/icons": "next", - "@rocket.chat/logo": "next", + "@rocket.chat/icons": "^0.32.0", + "@rocket.chat/logo": "^0.31.27", "@rocket.chat/styled": "next", "@rocket.chat/ui-contexts": "workspace:~", "codemirror": "^6.0.1", diff --git a/yarn.lock b/yarn.lock index 851694f201fc..80c6598eb02c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7863,11 +7863,11 @@ __metadata: "@rocket.chat/apps-engine": 1.41.0-alpha.290 "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/icons": next + "@rocket.chat/icons": ^0.32.0 "@rocket.chat/message-parser": next "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" - "@rocket.chat/ui-kit": next + "@rocket.chat/ui-kit": ^0.32.1 "@types/babel__core": ^7 "@types/babel__preset-env": ^7 "@types/fibers": ^3.1.1 @@ -7888,9 +7888,9 @@ __metadata: dependencies: "@rocket.chat/apps-engine": 1.41.0-alpha.290 "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/icons": next + "@rocket.chat/icons": ^0.32.0 "@rocket.chat/message-parser": next - "@rocket.chat/ui-kit": next + "@rocket.chat/ui-kit": ^0.32.1 eslint: ~8.45.0 mongodb: ^4.12.1 prettier: ~2.8.8 @@ -7915,6 +7915,19 @@ __metadata: languageName: unknown linkType: soft +"@rocket.chat/css-in-js@npm:^0.31.25": + version: 0.31.25 + resolution: "@rocket.chat/css-in-js@npm:0.31.25" + dependencies: + "@emotion/hash": ^0.9.0 + "@rocket.chat/css-supports": ^0.31.25 + "@rocket.chat/memo": ^0.31.25 + "@rocket.chat/stylis-logical-props-middleware": ^0.31.25 + stylis: ~4.1.3 + checksum: c9c60816a2517ed8fff7289587301421f0f36c064b7d8b99698470c8676b17f339be799a5703e9575437ccf1e4dafe2c12ca96264ef711d96388e196b8a38123 + languageName: node + linkType: hard + "@rocket.chat/css-in-js@npm:next, @rocket.chat/css-in-js@npm:~0.31.26-dev.19": version: 0.31.26-dev.19 resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.19" @@ -7928,16 +7941,12 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/css-in-js@npm:~0.31.26-dev.23": - version: 0.31.26-dev.23 - resolution: "@rocket.chat/css-in-js@npm:0.31.26-dev.23" +"@rocket.chat/css-supports@npm:^0.31.25": + version: 0.31.25 + resolution: "@rocket.chat/css-supports@npm:0.31.25" dependencies: - "@emotion/hash": ^0.9.0 - "@rocket.chat/css-supports": ~0.31.26-dev.23 - "@rocket.chat/memo": ~0.31.26-dev.23 - "@rocket.chat/stylis-logical-props-middleware": ~0.31.26-dev.23 - stylis: ~4.1.3 - checksum: 6d71bd0f232c8ea3fc2711347064ddd14925b1c2b8713f6d7649b98679455029a53ee41d08b98d010da3ea4789afa21a15901a92efef61dee7b32d6965157445 + "@rocket.chat/memo": ^0.31.25 + checksum: fb7fde175475af41a77c105bacbc10b56d883b75046eb1c15c65d977a2388166d927afa4953296a133037a78eae41c628c376ca4a155a0254930b64a9b3bc12b languageName: node linkType: hard @@ -7950,15 +7959,6 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/css-supports@npm:~0.31.26-dev.23": - version: 0.31.26-dev.23 - resolution: "@rocket.chat/css-supports@npm:0.31.26-dev.23" - dependencies: - "@rocket.chat/memo": ~0.31.26-dev.23 - checksum: a4f25562df67214b1c92c85a1cd16eb03fc2aea385f48cdde42ad0053b9e03a92ca9e3486d1387c7a31cf68f47fa888825f31acae8f4700ee2b9f03495286a12 - languageName: node - linkType: hard - "@rocket.chat/ddp-client@workspace:^, @rocket.chat/ddp-client@workspace:ee/packages/ddp-client": version: 0.0.0-use.local resolution: "@rocket.chat/ddp-client@workspace:ee/packages/ddp-client" @@ -8124,15 +8124,15 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/fuselage-hooks@npm:next, @rocket.chat/fuselage-hooks@npm:~0.32.0-dev.342": - version: 0.32.0-dev.342 - resolution: "@rocket.chat/fuselage-hooks@npm:0.32.0-dev.342" +"@rocket.chat/fuselage-hooks@npm:^0.32.1": + version: 0.32.1 + resolution: "@rocket.chat/fuselage-hooks@npm:0.32.1" dependencies: use-sync-external-store: ~1.2.0 peerDependencies: "@rocket.chat/fuselage-tokens": "*" react: ^17.0.2 - checksum: aa5f10490cc2e11f3ca30a20bac945e543d9e1760a4c08168314e4df7f67da347c597edb63e452ad80b68f13721f2c7ac6ceae36b168a93edfae5146247240c5 + checksum: caf9b7e999f02cc0cbc3ca23e903cbd5da4b1870278d903aafadcb67df00f709ea055dc1bd8facd6d572851fcbb01317029131cc40239e29f61797685b37292a languageName: node linkType: hard @@ -8164,6 +8164,13 @@ __metadata: languageName: node linkType: hard +"@rocket.chat/fuselage-tokens@npm:^0.31.25": + version: 0.31.25 + resolution: "@rocket.chat/fuselage-tokens@npm:0.31.25" + checksum: d05460f2f7b7f01b1498aab6fb7d932b7d752d55ce5a6bad6e7a42f2c1f056164ff8caa7dd8ec11bc0f4441a83d8aad0b8aab5e02c03f3452c4583d159b1a2f7 + languageName: node + linkType: hard + "@rocket.chat/fuselage-tokens@npm:next": version: 0.32.0-dev.379 resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.379" @@ -8171,28 +8178,21 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/fuselage-tokens@npm:~0.32.0-dev.383": - version: 0.32.0-dev.383 - resolution: "@rocket.chat/fuselage-tokens@npm:0.32.0-dev.383" - checksum: bd3504fa6a7ce4ed6fc91246c4c8a4e3e3da8bc5e2c5590e7f913bc1fd6f08896aa4a6c4b1d01dccf78267ade9ad5a831c788cb17a4eb744deefb45032a34894 - languageName: node - linkType: hard - "@rocket.chat/fuselage-ui-kit@workspace:^, @rocket.chat/fuselage-ui-kit@workspace:packages/fuselage-ui-kit, @rocket.chat/fuselage-ui-kit@workspace:~": version: 0.0.0-use.local resolution: "@rocket.chat/fuselage-ui-kit@workspace:packages/fuselage-ui-kit" dependencies: "@rocket.chat/apps-engine": 1.41.0-alpha.290 "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/fuselage": next - "@rocket.chat/fuselage-hooks": next + "@rocket.chat/fuselage": ^0.32.1 + "@rocket.chat/fuselage-hooks": ^0.32.1 "@rocket.chat/fuselage-polyfills": next "@rocket.chat/gazzodown": "workspace:^" - "@rocket.chat/icons": next + "@rocket.chat/icons": ^0.32.0 "@rocket.chat/prettier-config": next "@rocket.chat/styled": next "@rocket.chat/ui-contexts": "workspace:^" - "@rocket.chat/ui-kit": next + "@rocket.chat/ui-kit": ^0.32.1 "@rocket.chat/ui-video-conf": "workspace:^" "@storybook/addon-essentials": ~6.5.16 "@storybook/addons": ~6.5.16 @@ -8233,15 +8233,15 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/fuselage@npm:next": - version: 0.32.0-dev.433 - resolution: "@rocket.chat/fuselage@npm:0.32.0-dev.433" +"@rocket.chat/fuselage@npm:^0.32.1": + version: 0.32.1 + resolution: "@rocket.chat/fuselage@npm:0.32.1" dependencies: - "@rocket.chat/css-in-js": ~0.31.26-dev.23 - "@rocket.chat/css-supports": ~0.31.26-dev.23 - "@rocket.chat/fuselage-tokens": ~0.32.0-dev.383 - "@rocket.chat/memo": ~0.31.26-dev.23 - "@rocket.chat/styled": ~0.31.26-dev.23 + "@rocket.chat/css-in-js": ^0.31.25 + "@rocket.chat/css-supports": ^0.31.25 + "@rocket.chat/fuselage-tokens": ^0.31.25 + "@rocket.chat/memo": ^0.31.25 + "@rocket.chat/styled": ^0.31.25 invariant: ^2.2.4 react-aria: ~3.23.1 react-keyed-flatten-children: ^1.3.0 @@ -8253,7 +8253,7 @@ __metadata: react: ^17.0.2 react-dom: ^17.0.2 react-virtuoso: 1.2.4 - checksum: 2696da3e5cdf9d21c9c96ba069a3ef44b946ce832796ed10047666da780ee3ae88d679f3c3222fe6c6d88b1bdc0b7dab97c83d0acfbb67ca330a14b6e4739aa9 + checksum: d3937be369a4b8e0d9849f5131a0143defcc313a38c2f4055a4d9bf2be6234c09244e71fde6c0adc90fbdfac8a0d572122e5fbbdac5c83656ac27063042ec94c languageName: node linkType: hard @@ -8264,7 +8264,7 @@ __metadata: "@babel/core": ~7.22.9 "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/css-in-js": next - "@rocket.chat/fuselage": next + "@rocket.chat/fuselage": ^0.32.1 "@rocket.chat/fuselage-tokens": next "@rocket.chat/message-parser": next "@rocket.chat/styled": next @@ -8336,10 +8336,10 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/icons@npm:next": - version: 0.32.0-dev.411 - resolution: "@rocket.chat/icons@npm:0.32.0-dev.411" - checksum: edbb691e61bac3c8502f21fb8166af40c8fc48767e1feeeb7e9731c8761d1f7411aeca81e2ac8f23032a04f1e585c3d822a1a211d5f304287843916c26c8b4ba +"@rocket.chat/icons@npm:^0.32.0": + version: 0.32.0 + resolution: "@rocket.chat/icons@npm:0.32.0" + checksum: 013c819eaaa5a2abc6e35f237e904c35ba105eb0be101dadba678732815423c3a4e01e0e65d0301acfeac77bc59e3aa2bc997744e3c7611c0814c733118cb248 languageName: node linkType: hard @@ -8380,11 +8380,11 @@ __metadata: "@rocket.chat/eslint-config": "workspace:^" "@rocket.chat/fuselage-tokens": next "@rocket.chat/gazzodown": "workspace:^" - "@rocket.chat/logo": next + "@rocket.chat/logo": ^0.31.27 "@rocket.chat/message-parser": next "@rocket.chat/random": "workspace:~" "@rocket.chat/sdk": ^1.0.0-alpha.42 - "@rocket.chat/ui-kit": next + "@rocket.chat/ui-kit": ^0.32.1 "@storybook/addon-essentials": ~6.5.16 "@storybook/addon-postcss": ~2.0.0 "@storybook/preact": ~6.5.16 @@ -8491,16 +8491,23 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/logo@npm:next": - version: 0.32.0-dev.379 - resolution: "@rocket.chat/logo@npm:0.32.0-dev.379" +"@rocket.chat/logo@npm:^0.31.27": + version: 0.31.27 + resolution: "@rocket.chat/logo@npm:0.31.27" dependencies: - "@rocket.chat/fuselage-hooks": ~0.32.0-dev.342 - "@rocket.chat/styled": ~0.31.26-dev.19 + "@rocket.chat/fuselage-hooks": ^0.32.1 + "@rocket.chat/styled": ^0.31.25 peerDependencies: react: 17.0.2 react-dom: 17.0.2 - checksum: 6bba31313e2cc047bdae4e711a0411a2c786ca98ee12f1f597837fb74ec139d13ad75d2bcb419c7b4e798eb1a8ae06eeefcd039adda60fe7fb4024f53f0bc708 + checksum: acc56410813a0d4f634f9e847bc4b49275c26aff4e2f285720818cb012a2ad42554982fcc4078c485222a9c9a78244d1a4b16b60588b5c50441b8928c3957efb + languageName: node + linkType: hard + +"@rocket.chat/memo@npm:^0.31.25": + version: 0.31.25 + resolution: "@rocket.chat/memo@npm:0.31.25" + checksum: 92d595c68d76a5258fb37ed4639e2709ba290c5d240df1272d81a2ab6b4be28ee2dd5b721dad940fe2638a89e8d14e684a970c59890003a06ce6088c655b7c0e languageName: node linkType: hard @@ -8511,13 +8518,6 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/memo@npm:~0.31.26-dev.23": - version: 0.31.26-dev.23 - resolution: "@rocket.chat/memo@npm:0.31.26-dev.23" - checksum: 68301161d87ba25347f1d2ab85c139ba86c5fdd1101f41678808c19ba461772814f4bff048a30e4aefd08978fe2feb952c541bddc0beb6bc3cd190bd7852393b - languageName: node - linkType: hard - "@rocket.chat/message-parser@npm:next": version: 0.32.0-dev.377 resolution: "@rocket.chat/message-parser@npm:0.32.0-dev.377" @@ -8568,21 +8568,21 @@ __metadata: "@rocket.chat/favicon": "workspace:^" "@rocket.chat/forked-matrix-appservice-bridge": ^4.0.1 "@rocket.chat/forked-matrix-bot-sdk": ^0.6.0-beta.2 - "@rocket.chat/fuselage": next - "@rocket.chat/fuselage-hooks": next + "@rocket.chat/fuselage": ^0.32.1 + "@rocket.chat/fuselage-hooks": ^0.32.1 "@rocket.chat/fuselage-polyfills": next "@rocket.chat/fuselage-toastbar": next "@rocket.chat/fuselage-tokens": next "@rocket.chat/fuselage-ui-kit": "workspace:^" "@rocket.chat/gazzodown": "workspace:^" "@rocket.chat/i18n": "workspace:^" - "@rocket.chat/icons": next + "@rocket.chat/icons": ^0.32.0 "@rocket.chat/instance-status": "workspace:^" "@rocket.chat/layout": next "@rocket.chat/livechat": "workspace:^" "@rocket.chat/log-format": "workspace:^" "@rocket.chat/logger": "workspace:^" - "@rocket.chat/logo": next + "@rocket.chat/logo": ^0.31.27 "@rocket.chat/memo": next "@rocket.chat/message-parser": next "@rocket.chat/mock-providers": "workspace:^" @@ -8590,7 +8590,7 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/mp3-encoder": 0.24.0 "@rocket.chat/omnichannel-services": "workspace:^" - "@rocket.chat/onboarding-ui": next + "@rocket.chat/onboarding-ui": ^0.32.1 "@rocket.chat/password-policies": "workspace:^" "@rocket.chat/pdf-worker": "workspace:^" "@rocket.chat/poplib": "workspace:^" @@ -8604,7 +8604,7 @@ __metadata: "@rocket.chat/ui-client": "workspace:^" "@rocket.chat/ui-composer": "workspace:^" "@rocket.chat/ui-contexts": "workspace:^" - "@rocket.chat/ui-kit": next + "@rocket.chat/ui-kit": ^0.32.1 "@rocket.chat/ui-theming": "workspace:^" "@rocket.chat/ui-video-conf": "workspace:^" "@rocket.chat/web-ui-registration": "workspace:^" @@ -9033,9 +9033,9 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/onboarding-ui@npm:next": - version: 0.32.0-dev.429 - resolution: "@rocket.chat/onboarding-ui@npm:0.32.0-dev.429" +"@rocket.chat/onboarding-ui@npm:^0.32.1": + version: 0.32.1 + resolution: "@rocket.chat/onboarding-ui@npm:0.32.1" dependencies: i18next: ~21.6.16 react-hook-form: ~7.27.1 @@ -9050,7 +9050,7 @@ __metadata: react: 17.0.2 react-dom: 17.0.2 react-i18next: ~11.15.4 - checksum: 659d97a38b4ce94b18a931087d948fcdc3caf98853d1402eef8867d4f26d8f083f50764b46c6fd18c91f193b6de248d80a3654e8e8a6673ebea3dafd2044b22e + checksum: 362938332de5d865e12b891288e631e579e1f6f0d8da99004d27d1fc5722e25821b68cb60de8cb51cf8768daae0f9bf68cbd374580e8e8bfdb292f8ed6ee8cb1 languageName: node linkType: hard @@ -9254,7 +9254,7 @@ __metadata: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/eslint-config": "workspace:^" "@rocket.chat/message-parser": next - "@rocket.chat/ui-kit": next + "@rocket.chat/ui-kit": ^0.32.1 "@types/jest": ~29.5.3 ajv: ^8.11.0 ajv-formats: ^2.1.1 @@ -9354,7 +9354,16 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/styled@npm:next, @rocket.chat/styled@npm:~0.31.26-dev.19": +"@rocket.chat/styled@npm:^0.31.25": + version: 0.31.25 + resolution: "@rocket.chat/styled@npm:0.31.25" + dependencies: + "@rocket.chat/css-in-js": ^0.31.25 + checksum: 8b0a2b3d6248ab8256736da058061e5f1a2f6a4455a20d0e0b6b75887ac82a0bbfbfe91bd60e278f3462e849ef744f38093a9acc7c3ba5db46f00fd640d7a52e + languageName: node + linkType: hard + +"@rocket.chat/styled@npm:next": version: 0.31.26-dev.19 resolution: "@rocket.chat/styled@npm:0.31.26-dev.19" dependencies: @@ -9363,12 +9372,14 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/styled@npm:~0.31.26-dev.23": - version: 0.31.26-dev.23 - resolution: "@rocket.chat/styled@npm:0.31.26-dev.23" +"@rocket.chat/stylis-logical-props-middleware@npm:^0.31.25": + version: 0.31.25 + resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.25" dependencies: - "@rocket.chat/css-in-js": ~0.31.26-dev.23 - checksum: 0a1ff89b068f011097671c617844856b91f2477c16ff3771fcfc0bab62a905a9b21c7b79549ff028613700a72685fd591ba9cbeda6b5d3bd8becd3af7aef0498 + "@rocket.chat/css-supports": ^0.31.25 + peerDependencies: + stylis: 4.0.10 + checksum: b0bc2afa2f020d65dc4af3f0180c6b7538471b2deeef026421a57d89a6279596fe6be14ab96d1634229b27308a0867c11db2684f9a51e5bc07683b6d0dc96c91 languageName: node linkType: hard @@ -9383,17 +9394,6 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/stylis-logical-props-middleware@npm:~0.31.26-dev.23": - version: 0.31.26-dev.23 - resolution: "@rocket.chat/stylis-logical-props-middleware@npm:0.31.26-dev.23" - dependencies: - "@rocket.chat/css-supports": ~0.31.26-dev.23 - peerDependencies: - stylis: 4.0.10 - checksum: b2fbfad3b2f4dedd9023b30d4cdc51e76ae76faeeca5819cf697e896c02fd4bb2dde5bbc428b377d77f32011fd8cc82c6d98a84d66b93056ef981c13aee1dc67 - languageName: node - linkType: hard - "@rocket.chat/tools@workspace:^, @rocket.chat/tools@workspace:packages/tools": version: 0.0.0-use.local resolution: "@rocket.chat/tools@workspace:packages/tools" @@ -9413,9 +9413,9 @@ __metadata: dependencies: "@babel/core": ~7.22.9 "@rocket.chat/css-in-js": next - "@rocket.chat/fuselage": next - "@rocket.chat/fuselage-hooks": next - "@rocket.chat/icons": next + "@rocket.chat/fuselage": ^0.32.1 + "@rocket.chat/fuselage-hooks": ^0.32.1 + "@rocket.chat/icons": ^0.32.0 "@rocket.chat/mock-providers": "workspace:^" "@rocket.chat/ui-contexts": "workspace:~" "@storybook/addon-actions": ~6.5.16 @@ -9464,8 +9464,8 @@ __metadata: dependencies: "@babel/core": ~7.22.9 "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/fuselage": next - "@rocket.chat/icons": next + "@rocket.chat/fuselage": ^0.32.1 + "@rocket.chat/icons": ^0.32.0 "@storybook/addon-actions": ~6.5.16 "@storybook/addon-docs": ~6.5.16 "@storybook/addon-essentials": ~6.5.16 @@ -9497,7 +9497,7 @@ __metadata: dependencies: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next - "@rocket.chat/fuselage-hooks": next + "@rocket.chat/fuselage-hooks": ^0.32.1 "@rocket.chat/password-policies": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" "@types/jest": ~29.5.3 @@ -9523,10 +9523,10 @@ __metadata: languageName: unknown linkType: soft -"@rocket.chat/ui-kit@npm:next": - version: 0.32.0-dev.364 - resolution: "@rocket.chat/ui-kit@npm:0.32.0-dev.364" - checksum: 9ac84beb88d6c1c6519485510b0e0a8dfb94f5e090209484330d5e5c01766c1e9732fc833e489ea4a958a01d2ac1c0830420f8a2685a3ab4c636e8c0d341fdf1 +"@rocket.chat/ui-kit@npm:^0.32.1": + version: 0.32.1 + resolution: "@rocket.chat/ui-kit@npm:0.32.1" + checksum: dec0d2ebc23786dae2dc62d598b89482abbd810a71527ba99a5fb0f36e3de51647e4ab13a0bb514d760156f92780c22a88317701d886fd934d848c0fd5961579 languageName: node linkType: hard @@ -9535,9 +9535,9 @@ __metadata: resolution: "@rocket.chat/ui-theming@workspace:ee/packages/ui-theming" dependencies: "@rocket.chat/css-in-js": next - "@rocket.chat/fuselage": next - "@rocket.chat/fuselage-hooks": next - "@rocket.chat/icons": next + "@rocket.chat/fuselage": ^0.32.1 + "@rocket.chat/fuselage-hooks": ^0.32.1 + "@rocket.chat/icons": ^0.32.0 "@rocket.chat/ui-contexts": "workspace:~" "@storybook/addon-actions": ~6.5.16 "@storybook/addon-docs": ~6.5.16 @@ -9578,9 +9578,9 @@ __metadata: "@rocket.chat/css-in-js": next "@rocket.chat/emitter": next "@rocket.chat/eslint-config": "workspace:^" - "@rocket.chat/fuselage": next - "@rocket.chat/fuselage-hooks": next - "@rocket.chat/icons": next + "@rocket.chat/fuselage": ^0.32.1 + "@rocket.chat/fuselage-hooks": ^0.32.1 + "@rocket.chat/icons": ^0.32.0 "@rocket.chat/styled": next "@rocket.chat/ui-contexts": "workspace:^" "@storybook/addon-actions": ~6.5.16 @@ -9621,13 +9621,13 @@ __metadata: "@codemirror/tooltip": ^0.19.16 "@lezer/highlight": ^1.1.6 "@rocket.chat/css-in-js": next - "@rocket.chat/fuselage": next - "@rocket.chat/fuselage-hooks": next + "@rocket.chat/fuselage": ^0.32.1 + "@rocket.chat/fuselage-hooks": ^0.32.1 "@rocket.chat/fuselage-polyfills": next "@rocket.chat/fuselage-tokens": next "@rocket.chat/fuselage-ui-kit": "workspace:~" - "@rocket.chat/icons": next - "@rocket.chat/logo": next + "@rocket.chat/icons": ^0.32.0 + "@rocket.chat/logo": ^0.31.27 "@rocket.chat/styled": next "@rocket.chat/ui-contexts": "workspace:~" "@types/react": ~17.0.62 @@ -34245,13 +34245,13 @@ __metadata: "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next - "@rocket.chat/icons": next + "@rocket.chat/icons": ^0.32.0 "@rocket.chat/message-parser": next "@rocket.chat/model-typings": "workspace:^" "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/string-helpers": next - "@rocket.chat/ui-kit": next + "@rocket.chat/ui-kit": ^0.32.1 "@types/cookie": ^0.5.1 "@types/cookie-parser": ^1.4.3 "@types/ejson": ^2.2.0