From ff0d9013670ab4a0c1bcbb1c9a4fbe9f4c05379e Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 17 Jun 2024 19:06:32 +0700 Subject: [PATCH 001/167] Client:Packages:Store: add new context option --- packages/client/src/store/ContextOptionsStore.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index f6d46e17e4..4a2571beed 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -1512,6 +1512,14 @@ class ContextOptionsStore { onClick: () => this.onClickCreateRoom(item), disabled: !item.security?.CreateRoomFrom, }, + { + id: "option_create-copy-room", + key: "copy-room", + label: t("Common:Duplicate"), + icon: DuplicateReactSvgUrl, + onClick: () => {}, + disabled: false, + }, { id: "option_download", key: "download", From 9239255c2043b2387b6a96fca05a37f24d0b065f Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 17 Jun 2024 19:08:18 +0700 Subject: [PATCH 002/167] Client:Packages:store: add new room Options --- packages/client/src/store/FilesStore.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index bb1b011667..ed22a5827c 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -2322,6 +2322,7 @@ class FilesStore { "mute-room", "unmute-room", "separator1", + "copy-room", "download", "archive-room", "unarchive-room", From ca23ce4aa8db5e003b474e4f0fa1435033413232 Mon Sep 17 00:00:00 2001 From: Ilya Oleshko Date: Tue, 18 Jun 2024 17:32:10 +0300 Subject: [PATCH 003/167] Client: ConfirmRoute: Added new types for link validation --- packages/client/src/helpers/confirmRoute.js | 24 ++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/client/src/helpers/confirmRoute.js b/packages/client/src/helpers/confirmRoute.js index 551a9c5707..d79c3d5923 100644 --- a/packages/client/src/helpers/confirmRoute.js +++ b/packages/client/src/helpers/confirmRoute.js @@ -109,6 +109,7 @@ const ConfirmRoute = ({ switch (validationResult) { case ValidationResult.Ok: + case ValidationResult.UserExisted: const confirmHeader = search.slice(1); const linkData = { ...confirmLinkData, @@ -129,7 +130,10 @@ const ConfirmRoute = ({ setState((val) => ({ ...val, isLoaded: true, linkData, roomData })); break; case ValidationResult.Invalid: - console.error("invlid link", { confirmLinkData, validationResult }); + console.error("invalid link", { + confirmLinkData, + validationResult, + }); window.location.href = combineUrl( window.ClientConfig?.proxy?.url, path, @@ -158,6 +162,24 @@ const ConfirmRoute = ({ "/error?messageKey=20", ); break; + case ValidationResult.QuotaFailed: + console.error("access below quota", { + confirmLinkData, + validationResult, + }); + window.location.href = combineUrl( + window.ClientConfig?.proxy?.url, + path, + "/error", + ); + break; + case ValidationResult.UserExcluded: + console.error("user excluded", { + confirmLinkData, + validationResult, + }); + window.location.replace(defaultPage); + break; default: console.error("unknown link", { confirmLinkData, From a71b61a0a49335f207ef8e1f7128ef65a366ee65 Mon Sep 17 00:00:00 2001 From: Ilya Oleshko Date: Tue, 18 Jun 2024 17:32:46 +0300 Subject: [PATCH 004/167] Client: Enums: Added new types for ValidationResult --- packages/client/src/helpers/enums.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/client/src/helpers/enums.ts b/packages/client/src/helpers/enums.ts index d0de9800d7..4df9492951 100644 --- a/packages/client/src/helpers/enums.ts +++ b/packages/client/src/helpers/enums.ts @@ -39,4 +39,7 @@ export const enum ValidationResult { Invalid = 1, Expired = 2, TariffLimit = 3, + UserExisted = 4, + UserExcluded = 5, + QuotaFailed = 6, } From 13f6d10bed9d36db65c18ec2d1f09a18903897d3 Mon Sep 17 00:00:00 2001 From: Ilya Oleshko Date: Tue, 18 Jun 2024 17:33:26 +0300 Subject: [PATCH 005/167] Client: Confirm: Changed redirect type for LinkInvite route --- packages/client/src/routes/confirm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/routes/confirm.js b/packages/client/src/routes/confirm.js index 5b172dab49..ae66ad7e43 100644 --- a/packages/client/src/routes/confirm.js +++ b/packages/client/src/routes/confirm.js @@ -105,7 +105,7 @@ const confirmRoutes = [ { path: "LinkInvite", element: ( - + ), From 0a04e18925ba626f41510b9c14f6ad738e8abd2b Mon Sep 17 00:00:00 2001 From: Ilya Oleshko Date: Fri, 21 Jun 2024 17:40:27 +0300 Subject: [PATCH 006/167] Client: Confirm: Fixed redirect for existed user --- .../src/pages/Confirm/sub-components/createUser.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/client/src/pages/Confirm/sub-components/createUser.js b/packages/client/src/pages/Confirm/sub-components/createUser.js index 5d4804c510..bfc53f0167 100644 --- a/packages/client/src/pages/Confirm/sub-components/createUser.js +++ b/packages/client/src/pages/Confirm/sub-components/createUser.js @@ -121,6 +121,7 @@ const CreateUserForm = (props) => { const emailFromLink = linkData?.email ? linkData.email : ""; const roomName = roomData?.title; + const roomId = roomData?.roomId; const [email, setEmail] = useState(emailFromLink); const [emailValid, setEmailValid] = useState(true); @@ -217,6 +218,14 @@ const CreateUserForm = (props) => { "max-age": COOKIE_EXPIRATION_YEAR, }); + const finalUrl = roomId + ? `/rooms/shared/filter?folder=${roomId}` + : defaultPage; + + if (roomId) { + sessionStorage.setItem("referenceUrl", finalUrl); + } + window.location.href = combineUrl( window.ClientConfig?.proxy?.url, "/login", From 5587c0150219f51bdbeff338d774211b3b3852f2 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 24 Jun 2024 03:23:10 +0700 Subject: [PATCH 007/167] Shared:Api:Files: add a new method for duplication --- packages/shared/api/files/index.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/shared/api/files/index.ts b/packages/shared/api/files/index.ts index e07020b567..1ecdc8b6c1 100644 --- a/packages/shared/api/files/index.ts +++ b/packages/shared/api/files/index.ts @@ -720,6 +720,21 @@ export async function copyToFolder( return res; } +export async function duplicateRoom(folderIds: number[], fileIds: number[]) { + const data = { + folderIds, + fileIds, + }; + + const res = (await request({ + method: "put", + url: "/files/fileops/duplicate", + data, + })) as TOperation[]; + + return res; +} + export async function moveToFolder( destFolderId: number, folderIds: number[], From 103a8207782a0056cd328d8532698cee26fc36e6 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 24 Jun 2024 03:27:42 +0700 Subject: [PATCH 008/167] Client:Store: add methods for duplicating a room --- .../src/pages/Home/Hooks/useOperations.js | 6 ++ .../client/src/store/ContextOptionsStore.js | 6 +- .../client/src/store/FilesActionsStore.js | 67 +++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) diff --git a/packages/client/src/pages/Home/Hooks/useOperations.js b/packages/client/src/pages/Home/Hooks/useOperations.js index 0311806e5e..b87ac8076d 100644 --- a/packages/client/src/pages/Home/Hooks/useOperations.js +++ b/packages/client/src/pages/Home/Hooks/useOperations.js @@ -121,6 +121,12 @@ const useOperations = ({ ), refreshFiles() ); + case "duplicate-room": + return toastr.success( + + {{ title }} copied + , + ); default: break; diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index 4a2571beed..969584ea3a 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -536,6 +536,10 @@ class ContextOptionsStore { .catch((err) => toastr.error(err)); }; + onDuplicateRoom = (item, t) => { + this.filesActionsStore.duplicateRoomAction(item, t("Common:Duplicate")); + }; + onClickRename = (item) => { const event = new Event(Events.RENAME); @@ -1517,7 +1521,7 @@ class ContextOptionsStore { key: "copy-room", label: t("Common:Duplicate"), icon: DuplicateReactSvgUrl, - onClick: () => {}, + onClick: () => this.onDuplicateRoom(item, t), disabled: false, }, { diff --git a/packages/client/src/store/FilesActionsStore.js b/packages/client/src/store/FilesActionsStore.js index 0025e1bb7f..1d8b64ad67 100644 --- a/packages/client/src/store/FilesActionsStore.js +++ b/packages/client/src/store/FilesActionsStore.js @@ -52,6 +52,7 @@ import { removeShareFiles, createFolder, moveToFolder, + duplicateRoom, getFolder, deleteFilesFromRecent, } from "@docspace/shared/api/files"; @@ -1137,6 +1138,72 @@ class FilesActionStore { }); }; + duplicateRoomAction = async (item, label) => { + const { setSecondaryProgressBarData, clearSecondaryProgressData } = + this.uploadDataStore.secondaryProgressDataStore; + + const { clearActiveOperations } = this.uploadDataStore; + + this.setSelectedItems(item.title, 1); + + const folderIds = [item.id]; + const fileIds = []; + console.log(item, label); + const operationId = uniqueid("operation_"); + + setSecondaryProgressBarData({ + icon: "duplicate-room", + visible: true, + percent: 0, + label, + alert: false, + operationId, + }); + + this.filesStore.addActiveItems(fileIds, folderIds); + + return duplicateRoom(folderIds, fileIds) + .then(async (res) => { + const lastResult = res && res[res.length - 1]; + + if (lastResult?.error) return Promise.reject(lastResult.error); + + const pbData = { icon: "duplicate-room", operationId }; + const data = lastResult || null; + + const operationData = await this.uploadDataStore.loopFilesOperations( + data, + pbData, + ); + + if (!operationData || operationData.error || !operationData.finished) { + return Promise.reject( + operationData?.error ? operationData.error : "", + ); + } + + return setTimeout( + () => clearSecondaryProgressData(operationId), + TIMEOUT, + ); + }) + .catch((err) => { + clearActiveOperations(fileIds, folderIds); + setSecondaryProgressBarData({ + icon: "duplicate-room", + visible: true, + alert: true, + operationId, + }); + setTimeout(() => clearSecondaryProgressData(operationId), TIMEOUT); + return toastr.error(err.message ? err.message : err); + }) + .finally(() => { + clearActiveOperations(null, folderIds); + this.setGroupMenuBlocked(false); + }); + }; + setArchiveAction = async (action, folders, t) => { const { addActiveItems, setSelected } = this.filesStore; From d5749bba4d2b8ab110caa47c72df054991c17852 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 24 Jun 2024 04:03:24 +0700 Subject: [PATCH 009/167] Client:Store: add validation to show duplication element --- packages/client/src/store/ContextOptionsStore.js | 2 +- packages/client/src/store/FilesStore.js | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index 969584ea3a..4166bc6b17 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -1522,7 +1522,7 @@ class ContextOptionsStore { label: t("Common:Duplicate"), icon: DuplicateReactSvgUrl, onClick: () => this.onDuplicateRoom(item, t), - disabled: false, + disabled: !item.security?.Duplicate, }, { id: "option_download", diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index ed22a5827c..42f3e7190c 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -2297,6 +2297,7 @@ class FilesStore { const canPinRoom = item.security?.Pin; const canEditRoom = item.security?.EditRoom; + const canDuplicateRoom = item.security?.Duplicate; const canViewRoomInfo = item.security?.Read; const canMuteRoom = item.security?.Mute; @@ -2352,11 +2353,16 @@ class FilesStore { roomOptions = this.removeOptions(roomOptions, ["delete"]); } + if (!canDuplicate) { + roomOptions = this.removeOptions(roomOptions, ["copy-room"]); + } + if (!canDownload) { - roomOptions = this.removeOptions(roomOptions, [ - "separator1", - "download", - ]); + roomOptions = this.removeOptions(roomOptions, ["download"]); + } + + if (!canDownload && !canDuplicate) { + roomOptions = this.removeOptions(roomOptions, ["separator1"]); } if (!item.providerKey) { From bf82b043f00d634ced3dc190512fb518ec8c3f9c Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 24 Jun 2024 04:44:08 +0700 Subject: [PATCH 010/167] Client:Store: add duplication for folders --- packages/client/src/store/ContextOptionsStore.js | 16 ++++++++++++++++ packages/client/src/store/FilesStore.js | 1 + 2 files changed, 17 insertions(+) diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index 4166bc6b17..a336817a1d 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -1196,6 +1196,14 @@ class ContextOptionsStore { onClick: () => this.onDuplicate(item, t), disabled: false, }, + { + id: "option_create-copy-room", + key: "copy-room", + label: t("Common:Duplicate"), + icon: DuplicateReactSvgUrl, + onClick: () => this.onDuplicateRoom(item, t), + disabled: !item.security?.Duplicate, + }, ], }, ] @@ -1226,6 +1234,14 @@ class ContextOptionsStore { onClick: () => this.onDuplicate(item, t), disabled: false, }, + { + id: "option_create-copy-room", + key: "copy-room", + label: t("Common:Duplicate"), + icon: DuplicateReactSvgUrl, + onClick: () => this.onDuplicateRoom(item, t), + disabled: !item.security?.Duplicate, + }, ]; const { pinOptions, muteOptions } = this.getRoomsRootContextOptions( diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index 42f3e7190c..42fb85c574 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -2438,6 +2438,7 @@ class FilesStore { "move", //category "move-to", "copy-to", + "copy-room", "mark-read", "restore", "rename", From c788cdddae4dc088f603a10564f6af5d7e25673d Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 24 Jun 2024 15:27:46 +0700 Subject: [PATCH 011/167] Shared:Api:Files: change method name for duplication --- packages/shared/api/files/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared/api/files/index.ts b/packages/shared/api/files/index.ts index 1ecdc8b6c1..15008c9041 100644 --- a/packages/shared/api/files/index.ts +++ b/packages/shared/api/files/index.ts @@ -720,7 +720,7 @@ export async function copyToFolder( return res; } -export async function duplicateRoom(folderIds: number[], fileIds: number[]) { +export async function duplicate(folderIds: number[], fileIds: number[]) { const data = { folderIds, fileIds, From bfd92c22a7ca7cd3ca90ad49a63fcef857b670e2 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 24 Jun 2024 15:29:56 +0700 Subject: [PATCH 012/167] Client:Store: fix duplication methods for duplicating files --- .../client/src/store/ContextOptionsStore.js | 38 ++--- .../client/src/store/FilesActionsStore.js | 130 +++++++----------- packages/client/src/store/FilesStore.js | 13 +- 3 files changed, 62 insertions(+), 119 deletions(-) diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index a336817a1d..19efb6c65b 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -531,13 +531,7 @@ class ContextOptionsStore { }; onDuplicate = (item, t) => { - this.filesActionsStore - .duplicateAction(item, t("Common:CopyOperation")) - .catch((err) => toastr.error(err)); - }; - - onDuplicateRoom = (item, t) => { - this.filesActionsStore.duplicateRoomAction(item, t("Common:Duplicate")); + this.filesActionsStore.duplicateAction(item, t("Common:Duplicate")); }; onClickRename = (item) => { @@ -1189,21 +1183,13 @@ class ContextOptionsStore { disabled: false, }, { - id: "option_create-copy", - key: "copy", + id: "option_create-duplicate", + key: "duplicate", label: t("Common:Duplicate"), icon: DuplicateReactSvgUrl, onClick: () => this.onDuplicate(item, t), disabled: false, }, - { - id: "option_create-copy-room", - key: "copy-room", - label: t("Common:Duplicate"), - icon: DuplicateReactSvgUrl, - onClick: () => this.onDuplicateRoom(item, t), - disabled: !item.security?.Duplicate, - }, ], }, ] @@ -1227,21 +1213,13 @@ class ContextOptionsStore { disabled: false, }, { - id: "option_create-copy", - key: "copy", + id: "option_create-duplicate", + key: "duplicate", label: t("Common:Duplicate"), icon: DuplicateReactSvgUrl, onClick: () => this.onDuplicate(item, t), disabled: false, }, - { - id: "option_create-copy-room", - key: "copy-room", - label: t("Common:Duplicate"), - icon: DuplicateReactSvgUrl, - onClick: () => this.onDuplicateRoom(item, t), - disabled: !item.security?.Duplicate, - }, ]; const { pinOptions, muteOptions } = this.getRoomsRootContextOptions( @@ -1533,11 +1511,11 @@ class ContextOptionsStore { disabled: !item.security?.CreateRoomFrom, }, { - id: "option_create-copy-room", - key: "copy-room", + id: "option_create-duplicate-room", + key: "duplicate-room", label: t("Common:Duplicate"), icon: DuplicateReactSvgUrl, - onClick: () => this.onDuplicateRoom(item, t), + onClick: () => this.onDuplicate(item, t), disabled: !item.security?.Duplicate, }, { diff --git a/packages/client/src/store/FilesActionsStore.js b/packages/client/src/store/FilesActionsStore.js index 1d8b64ad67..102af07ce9 100644 --- a/packages/client/src/store/FilesActionsStore.js +++ b/packages/client/src/store/FilesActionsStore.js @@ -52,7 +52,7 @@ import { removeShareFiles, createFolder, moveToFolder, - duplicateRoom, + duplicate, getFolder, deleteFilesFromRecent, } from "@docspace/shared/api/files"; @@ -965,40 +965,70 @@ class FilesActionStore { } }; - duplicateAction = (item, label) => { - const { setSecondaryProgressBarData, filesCount } = + duplicateAction = async (item, label) => { + const { setSecondaryProgressBarData, clearSecondaryProgressData } = this.uploadDataStore.secondaryProgressDataStore; + const { clearActiveOperations } = this.uploadDataStore; this.setSelectedItems(); - //TODO: duplicate for folders? const folderIds = []; const fileIds = []; item.fileExst ? fileIds.push(item.id) : folderIds.push(item.id); - const conflictResolveType = ConflictResolveType.Duplicate; - const deleteAfter = false; //TODO: get from settings + + const icon = item.fileExs ? "duplicate" : "duplicate-room"; const operationId = uniqueid("operation_"); setSecondaryProgressBarData({ - icon: "duplicate", + icon, visible: true, percent: 0, - label, alert: false, - filesCount: filesCount + fileIds.length, operationId, }); this.filesStore.addActiveItems(fileIds, folderIds); - return this.uploadDataStore.copyToAction( - this.selectedFolderStore.id, - folderIds, - fileIds, - conflictResolveType, - deleteAfter, - operationId, - ); + return duplicate(folderIds, fileIds) + .then(async (res) => { + const lastResult = res && res[res.length - 1]; + + if (lastResult?.error) return Promise.reject(lastResult.error); + + const pbData = { icon, operationId }; + const data = lastResult || null; + + const operationData = await this.uploadDataStore.loopFilesOperations( + data, + pbData, + ); + + if (!operationData || operationData.error || !operationData.finished) { + return Promise.reject( + operationData?.error ? operationData.error : "", + ); + } + + return setTimeout( + () => clearSecondaryProgressData(operationId), + TIMEOUT, + ); + }) + .catch((err) => { + clearActiveOperations(fileIds, folderIds); + setSecondaryProgressBarData({ + icon, + visible: true, + alert: true, + operationId, + }); + setTimeout(() => clearSecondaryProgressData(operationId), TIMEOUT); + return toastr.error(err.message ? err.message : err); + }) + .finally(() => { + clearActiveOperations(fileIds, folderIds); + this.setGroupMenuBlocked(false); + }); }; getFilesInfo = (items) => { @@ -1138,72 +1168,6 @@ class FilesActionStore { }); }; - duplicateRoomAction = async (item, label) => { - const { setSecondaryProgressBarData, clearSecondaryProgressData } = - this.uploadDataStore.secondaryProgressDataStore; - - const { clearActiveOperations } = this.uploadDataStore; - - this.setSelectedItems(item.title, 1); - - const folderIds = [item.id]; - const fileIds = []; - console.log(item, label); - const operationId = uniqueid("operation_"); - - setSecondaryProgressBarData({ - icon: "duplicate-room", - visible: true, - percent: 0, - label, - alert: false, - operationId, - }); - - this.filesStore.addActiveItems(fileIds, folderIds); - - return duplicateRoom(folderIds, fileIds) - .then(async (res) => { - const lastResult = res && res[res.length - 1]; - - if (lastResult?.error) return Promise.reject(lastResult.error); - - const pbData = { icon: "duplicate-room", operationId }; - const data = lastResult || null; - - const operationData = await this.uploadDataStore.loopFilesOperations( - data, - pbData, - ); - - if (!operationData || operationData.error || !operationData.finished) { - return Promise.reject( - operationData?.error ? operationData.error : "", - ); - } - - return setTimeout( - () => clearSecondaryProgressData(operationId), - TIMEOUT, - ); - }) - .catch((err) => { - clearActiveOperations(fileIds, folderIds); - setSecondaryProgressBarData({ - icon: "duplicate-room", - visible: true, - alert: true, - operationId, - }); - setTimeout(() => clearSecondaryProgressData(operationId), TIMEOUT); - return toastr.error(err.message ? err.message : err); - }) - .finally(() => { - clearActiveOperations(null, folderIds); - this.setGroupMenuBlocked(false); - }); - }; - setArchiveAction = async (action, folders, t) => { const { addActiveItems, setSelected } = this.filesStore; diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index 42fb85c574..b71573ab3b 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -2036,7 +2036,7 @@ class FilesStore { "move", //category "move-to", "copy-to", - "copy", + "duplicate", "restore", "rename", "separator2", @@ -2108,8 +2108,9 @@ class FilesStore { } if (!canDuplicate) { - fileOptions = this.removeOptions(fileOptions, ["copy"]); + fileOptions = this.removeOptions(fileOptions, ["duplicate"]); } + if (!canMove && !canCopy && !canDuplicate) { fileOptions = this.removeOptions(fileOptions, ["move"]); } @@ -2323,7 +2324,7 @@ class FilesStore { "mute-room", "unmute-room", "separator1", - "copy-room", + "duplicate-room", "download", "archive-room", "unarchive-room", @@ -2354,7 +2355,7 @@ class FilesStore { } if (!canDuplicate) { - roomOptions = this.removeOptions(roomOptions, ["copy-room"]); + roomOptions = this.removeOptions(roomOptions, ["duplicate-room"]); } if (!canDownload) { @@ -2438,7 +2439,7 @@ class FilesStore { "move", //category "move-to", "copy-to", - "copy-room", + "duplicate", "mark-read", "restore", "rename", @@ -2468,7 +2469,7 @@ class FilesStore { } if (!canDuplicate) { - folderOptions = this.removeOptions(folderOptions, ["copy"]); + folderOptions = this.removeOptions(folderOptions, ["duplicate"]); } if (!canMove && !canCopy && !canDuplicate) { From 18613e9d50dd79a3fab5f2c178d6093b6fdcb885 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 24 Jun 2024 16:39:17 +0700 Subject: [PATCH 013/167] Shared:Themes: change text color for tabs --- packages/shared/themes/dark.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shared/themes/dark.ts b/packages/shared/themes/dark.ts index 0ed9cc7567..54f4046657 100644 --- a/packages/shared/themes/dark.ts +++ b/packages/shared/themes/dark.ts @@ -992,7 +992,7 @@ const Dark: TTheme = { border: "none", }, }, - + fieldContainer: { horizontal: { margin: "0 0 16px 0", @@ -3154,7 +3154,7 @@ const Dark: TTheme = { gradientColor: black, lineColor: "#474747", - textColorPrimary: "#657077", + textColorPrimary: "#ADADAD", activeTextColorPrimary: white, hoverTextColorPrimary: white, pressedTextColorPrimary: "#CCCCCC", From 6fb70a70a7e81212c5a205eef18465c342deb497 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 24 Jun 2024 16:40:32 +0700 Subject: [PATCH 014/167] Shared:Components:Tabs: change color for border --- packages/shared/components/tabs/Tabs.styled.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/shared/components/tabs/Tabs.styled.ts b/packages/shared/components/tabs/Tabs.styled.ts index da5bf0a795..d799254585 100644 --- a/packages/shared/components/tabs/Tabs.styled.ts +++ b/packages/shared/components/tabs/Tabs.styled.ts @@ -209,6 +209,11 @@ export const Tab = styled.div<{ props.$type === TabsTypes.Secondary && !props.isActive && props.theme.tabs.hoverBackgroundColorSecondary}; + + border: ${(props) => + props.$type === TabsTypes.Secondary && + !props.isActive && + css`1px solid ${props.theme.tabs.hoverBackgroundColorSecondary}`}; }; &:active { @@ -224,6 +229,11 @@ export const Tab = styled.div<{ props.$type === TabsTypes.Secondary && !props.isActive && props.theme.tabs.pressedBackgroundColorSecondary}; + + border: ${(props) => + props.$type === TabsTypes.Secondary && + !props.isActive && + css`1px solid ${props.theme.tabs.pressedBackgroundColorSecondary}`}; }; `; From c8e72c26615e7e0210ee9c6c8e1addb0647a51fe Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Tue, 25 Jun 2024 17:54:46 +0700 Subject: [PATCH 015/167] Shared:Components:RoomIcon: remove duplicate numbers --- packages/shared/components/room-icon/index.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/shared/components/room-icon/index.tsx b/packages/shared/components/room-icon/index.tsx index e29600be97..f25e0a7809 100644 --- a/packages/shared/components/room-icon/index.tsx +++ b/packages/shared/components/room-icon/index.tsx @@ -160,7 +160,10 @@ const RoomIcon = ({ }: RoomIconProps) => { const [correctImage, setCorrectImage] = React.useState(true); - const titleWithoutSpaces = title?.replace(/\s+/g, " ").trim(); + const titleWithoutNumberDuplicate = title.replace(/\(\d+\)/, ""); + const titleWithoutSpaces = titleWithoutNumberDuplicate + .replace(/\s+/g, " ") + .trim(); const indexAfterLastSpace = titleWithoutSpaces?.lastIndexOf(" "); const secondCharacter = !titleWithoutSpaces || indexAfterLastSpace === -1 From 061529c74680b7e0cf104668e8c9c1ecf44de248 Mon Sep 17 00:00:00 2001 From: Aleksandr Lushkin Date: Thu, 27 Jun 2024 17:02:14 +0200 Subject: [PATCH 016/167] Client: Accounts: Fix showing single item context menu when selected several items --- packages/client/src/HOCs/withPeopleContent.js | 8 +++----- .../AccountsBody/InsideGroup/RowView/SimpleUserRow.js | 5 +++-- .../AccountsBody/InsideGroup/TableView/TableRow.js | 5 +++-- .../Section/AccountsBody/People/RowView/SimpleUserRow.js | 5 +++-- .../Section/AccountsBody/People/TableView/TableRow.js | 5 +++-- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/client/src/HOCs/withPeopleContent.js b/packages/client/src/HOCs/withPeopleContent.js index 7846d1ca4c..0b8449bba0 100644 --- a/packages/client/src/HOCs/withPeopleContent.js +++ b/packages/client/src/HOCs/withPeopleContent.js @@ -127,10 +127,8 @@ export default function withContent(WrappedContent) { "DataReassignmentDialog", ]); - const contextOptionsProps = useMemo( - () => ({ - contextOptions: getModel(item, t), - }), + const getContextModel = useCallback( + () => getModel(item, t), [getModel, item, t], ); @@ -147,7 +145,7 @@ export default function withContent(WrappedContent) { onEmailClick={onEmailClick} checkedProps={checkedProps} element={element} - contextOptionsProps={contextOptionsProps} + getContextModel={getContextModel} value={value} onOpenGroup={onOpenGroup} {...props} diff --git a/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/RowView/SimpleUserRow.js b/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/RowView/SimpleUserRow.js index d313f3f2cf..02fac9c2bf 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/RowView/SimpleUserRow.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/RowView/SimpleUserRow.js @@ -124,7 +124,7 @@ const SimpleUserRow = (props) => { const { item, sectionWidth, - contextOptionsProps, + getContextModel, checkedProps, onContentRowSelect, onUserContextClick, @@ -159,12 +159,13 @@ const SimpleUserRow = (props) => { onSelect={onContentRowSelect} checked={isChecked} isActive={isActive} - {...contextOptionsProps} sectionWidth={sectionWidth} mode={"modern"} className={"user-row"} onContextClick={onRowContextClick} withoutBorder={true} + contextOptions={item.options} + getContextModel={getContextModel} > diff --git a/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableRow.js b/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableRow.js index c1dc44138b..ba0e3e96bf 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableRow.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableRow.js @@ -202,7 +202,7 @@ const InsideGroupTableRow = (props) => { const { t, item, - contextOptionsProps, + getContextModel, element, checkedProps, onContentRowSelect, @@ -485,7 +485,8 @@ const InsideGroupTableRow = (props) => { onClick={onRowClick} fileContextClick={onRowContextClick} hideColumns={hideColumns} - {...contextOptionsProps} + contextOptions={item.options} + getContextModel={getContextModel} > { const { item, sectionWidth, - contextOptionsProps, + getContextModel, checkedProps, onContentRowSelect, onUserContextClick, @@ -159,11 +159,12 @@ const SimpleUserRow = (props) => { onSelect={onContentRowSelect} checked={isChecked} isActive={isActive} - {...contextOptionsProps} sectionWidth={sectionWidth} mode={"modern"} className={"user-row"} onContextClick={onRowContextClick} + contextOptions={item.options} + getContextModel={getContextModel} > diff --git a/packages/client/src/pages/Home/Section/AccountsBody/People/TableView/TableRow.js b/packages/client/src/pages/Home/Section/AccountsBody/People/TableView/TableRow.js index 5470ca2ad7..5b32a9ae96 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/People/TableView/TableRow.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/People/TableView/TableRow.js @@ -207,7 +207,7 @@ const PeopleTableRow = (props) => { const { t, item, - contextOptionsProps, + getContextModel, element, checkedProps, onContentRowSelect, @@ -488,7 +488,8 @@ const PeopleTableRow = (props) => { onClick={onRowClick} fileContextClick={onRowContextClick} hideColumns={hideColumns} - {...contextOptionsProps} + contextOptions={item.options} + getContextModel={getContextModel} > Date: Fri, 28 Jun 2024 15:15:59 +0700 Subject: [PATCH 017/167] Client:Store: add refresh method for rooms --- packages/client/src/store/FilesStore.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index 975d13d847..134deec483 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -1411,6 +1411,13 @@ class FilesStore { return res; }; + refreshRooms = async () => { + const roomFilters = this.roomsFilter.clone(); + // roomFilters.sortBy = "DateAndTime"; + const res = await this.fetchRooms(null, roomFilters); + return res; + }; + abortAllFetch = () => { this.filesController.abort(); this.roomsController.abort(); @@ -1612,6 +1619,8 @@ class FilesStore { // type, }); + console.log("DATA", data); + runInAction(() => { const isEmptyList = [...data.folders, ...data.files].length === 0; @@ -1751,6 +1760,7 @@ class FilesStore { if (this.clientLoadingStore.isLoading) { this.abortAllFetch(); } + console.log("LLLLLLLLLLLLLLLLLLLLLLLLLLL"); const filterData = !!filter ? filter.clone() @@ -1788,6 +1798,7 @@ class FilesStore { api.rooms .getRooms(filterData, this.roomsController.signal) .then(async (data) => { + console.log("LLLLLLLLLLLLLLLLLLLLLLLLLLL"); if (!folderId) setSelectedNode([data.current.id + ""]); filterData.total = data.total; From 912605824c271cd15ce1d7a8047d72c686d0bda8 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Fri, 28 Jun 2024 15:17:26 +0700 Subject: [PATCH 018/167] Client:PagesHome: add refresh method for rooms --- .../client/src/pages/Home/Hooks/useOperations.js | 13 +++++++++---- packages/client/src/pages/Home/index.js | 4 ++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/client/src/pages/Home/Hooks/useOperations.js b/packages/client/src/pages/Home/Hooks/useOperations.js index b87ac8076d..415bab65f9 100644 --- a/packages/client/src/pages/Home/Hooks/useOperations.js +++ b/packages/client/src/pages/Home/Hooks/useOperations.js @@ -38,6 +38,7 @@ const useOperations = ({ clearPrimaryProgressData, isProgressFinished, refreshFiles, + refreshRooms, itemsSelectionTitle, secondaryProgressDataStoreIcon, itemsSelectionLength, @@ -82,6 +83,7 @@ const useOperations = ({ const showOperationToast = React.useCallback( (type, qty, title) => { + console.log(type); switch (type) { case "move": if (qty > 1) { @@ -122,10 +124,13 @@ const useOperations = ({ refreshFiles() ); case "duplicate-room": - return toastr.success( - - {{ title }} copied - , + return ( + toastr.success( + + {{ title }} copied + , + ), + refreshRooms() ); default: diff --git a/packages/client/src/pages/Home/index.js b/packages/client/src/pages/Home/index.js index f09433be51..d11861fd46 100644 --- a/packages/client/src/pages/Home/index.js +++ b/packages/client/src/pages/Home/index.js @@ -95,6 +95,7 @@ const PureHome = (props) => { itemsSelectionTitle, setItemsSelectionTitle, refreshFiles, + refreshRooms, setFrameConfig, user, @@ -213,6 +214,7 @@ const PureHome = (props) => { clearPrimaryProgressData, isProgressFinished, refreshFiles, + refreshRooms, itemsSelectionTitle, secondaryProgressDataStoreIcon, itemsSelectionLength, @@ -484,6 +486,7 @@ export default inject( createFolder, createRoom, refreshFiles, + refreshRooms, setViewAs, isEmptyPage, @@ -643,6 +646,7 @@ export default inject( createFolder, createRoom, refreshFiles, + refreshRooms, setViewAs, withPaging, isEmptyPage, From 14a563a2225f7141c4a87f3f13fa29d94ba95f46 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Fri, 28 Jun 2024 15:18:51 +0700 Subject: [PATCH 019/167] Client:Store: delete label prop and change icon --- packages/client/src/store/ContextOptionsStore.js | 4 ++-- packages/client/src/store/FilesActionsStore.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index 33c9834076..944348fb2b 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -554,8 +554,8 @@ class ContextOptionsStore { window.dispatchEvent(event); }; - onDuplicate = (item, t) => { - this.filesActionsStore.duplicateAction(item, t("Common:Duplicate")); + onDuplicate = (item) => { + this.filesActionsStore.duplicateAction(item); }; onClickRename = (item) => { diff --git a/packages/client/src/store/FilesActionsStore.js b/packages/client/src/store/FilesActionsStore.js index 8ad8c4b6ef..b7dba33621 100644 --- a/packages/client/src/store/FilesActionsStore.js +++ b/packages/client/src/store/FilesActionsStore.js @@ -965,7 +965,7 @@ class FilesActionStore { } }; - duplicateAction = async (item, label) => { + duplicateAction = async (item) => { const { setSecondaryProgressBarData, clearSecondaryProgressData } = this.uploadDataStore.secondaryProgressDataStore; const { clearActiveOperations } = this.uploadDataStore; @@ -976,7 +976,7 @@ class FilesActionStore { const fileIds = []; item.fileExst ? fileIds.push(item.id) : folderIds.push(item.id); - const icon = item.fileExs ? "duplicate" : "duplicate-room"; + const icon = item.isRoom ? "duplicate-room" : "duplicate"; const operationId = uniqueid("operation_"); setSecondaryProgressBarData({ From be9bd34dd6ea323a274a72eb0919a12ae50a36d0 Mon Sep 17 00:00:00 2001 From: Tatiana Lopaeva Date: Fri, 28 Jun 2024 12:46:01 +0300 Subject: [PATCH 020/167] Client: MainBar: Added the appearance of a bar for the power user and the room admin if the disk portal limit has been reached. --- packages/client/src/components/MainBar/Bar.js | 4 +-- .../src/components/MainBar/QuotasBar.js | 30 +++++++++++-------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/client/src/components/MainBar/Bar.js b/packages/client/src/components/MainBar/Bar.js index f3fadd4b6b..018b5a8cd3 100644 --- a/packages/client/src/components/MainBar/Bar.js +++ b/packages/client/src/components/MainBar/Bar.js @@ -120,7 +120,6 @@ const Bar = (props) => { setBarVisible((value) => ({ ...value, roomQuota: !closed.includes(QuotaBarTypes.RoomQuota), - tenantCustomQuota: !closed.includes(QuotaBarTypes.TenantCustomQuota), userQuota: !closed.includes(QuotaBarTypes.UserQuota), storageAndRoomQuota: !closed.includes( QuotaBarTypes.UserAndStorageQuota, @@ -134,6 +133,7 @@ const Bar = (props) => { setBarVisible((value) => ({ ...value, storageQuota: !closed.includes(QuotaBarTypes.StorageQuota), + tenantCustomQuota: !closed.includes(QuotaBarTypes.TenantCustomQuota), })); } @@ -147,7 +147,7 @@ const Bar = (props) => { setBarVisible({ roomQuota: isAdmin, storageQuota: isAdmin || isPowerUser || isRoomAdmin, - tenantCustomQuota: isAdmin, + tenantCustomQuota: isAdmin || isPowerUser || isRoomAdmin, userQuota: isAdmin, storageAndUserQuota: isAdmin, storageAndRoomQuota: isAdmin, diff --git a/packages/client/src/components/MainBar/QuotasBar.js b/packages/client/src/components/MainBar/QuotasBar.js index 81bbb11328..220a2ff1a5 100644 --- a/packages/client/src/components/MainBar/QuotasBar.js +++ b/packages/client/src/components/MainBar/QuotasBar.js @@ -76,7 +76,23 @@ const QuotasBar = ({ ); }; + const getTenantCustomQuota = () => { + if (!isAdmin) return t("StorageQuotaUserDescription"); + return ( + + You can remove the unnecessary files or change quota in the + + Storage management settings. + + + ); + }; const getUserQuotaDescription = () => { return ( - You can remove the unnecessary files or change quota in the - - Storage management settings. - - - ), + description: getTenantCustomQuota(), }; case QuotaBarTypes.UserQuota: return { From 6fba51897ea9770e681470be3debd6d3154beff1 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Fri, 28 Jun 2024 16:54:48 +0700 Subject: [PATCH 021/167] Client:Pages:Home: delete refreshRooms --- packages/client/src/pages/Home/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/client/src/pages/Home/index.js b/packages/client/src/pages/Home/index.js index d11861fd46..f09433be51 100644 --- a/packages/client/src/pages/Home/index.js +++ b/packages/client/src/pages/Home/index.js @@ -95,7 +95,6 @@ const PureHome = (props) => { itemsSelectionTitle, setItemsSelectionTitle, refreshFiles, - refreshRooms, setFrameConfig, user, @@ -214,7 +213,6 @@ const PureHome = (props) => { clearPrimaryProgressData, isProgressFinished, refreshFiles, - refreshRooms, itemsSelectionTitle, secondaryProgressDataStoreIcon, itemsSelectionLength, @@ -486,7 +484,6 @@ export default inject( createFolder, createRoom, refreshFiles, - refreshRooms, setViewAs, isEmptyPage, @@ -646,7 +643,6 @@ export default inject( createFolder, createRoom, refreshFiles, - refreshRooms, setViewAs, withPaging, isEmptyPage, From 74403d17aa3f7084a5bed0e3d3891729f03b8f31 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Fri, 28 Jun 2024 16:55:44 +0700 Subject: [PATCH 022/167] Client:Home:Hooks: delete refreshRooms --- .../client/src/pages/Home/Hooks/useOperations.js | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/client/src/pages/Home/Hooks/useOperations.js b/packages/client/src/pages/Home/Hooks/useOperations.js index 415bab65f9..0448db8116 100644 --- a/packages/client/src/pages/Home/Hooks/useOperations.js +++ b/packages/client/src/pages/Home/Hooks/useOperations.js @@ -38,7 +38,6 @@ const useOperations = ({ clearPrimaryProgressData, isProgressFinished, refreshFiles, - refreshRooms, itemsSelectionTitle, secondaryProgressDataStoreIcon, itemsSelectionLength, @@ -83,7 +82,6 @@ const useOperations = ({ const showOperationToast = React.useCallback( (type, qty, title) => { - console.log(type); switch (type) { case "move": if (qty > 1) { @@ -124,15 +122,11 @@ const useOperations = ({ refreshFiles() ); case "duplicate-room": - return ( - toastr.success( - - {{ title }} copied - , - ), - refreshRooms() + return toastr.success( + + {{ title }} copied + , ); - default: break; } From 42cdb8c622dfc005dbbe096f6d76e54638995173 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Fri, 28 Jun 2024 16:56:16 +0700 Subject: [PATCH 023/167] Client:Store: delete refreshRooms --- packages/client/src/store/FilesStore.js | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index 2570ad9e38..a971ca639e 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -1411,13 +1411,6 @@ class FilesStore { return res; }; - refreshRooms = async () => { - const roomFilters = this.roomsFilter.clone(); - // roomFilters.sortBy = "DateAndTime"; - const res = await this.fetchRooms(null, roomFilters); - return res; - }; - abortAllFetch = () => { this.filesController.abort(); this.roomsController.abort(); @@ -1620,8 +1613,6 @@ class FilesStore { // type, }); - console.log("DATA", data); - runInAction(() => { const isEmptyList = [...data.folders, ...data.files].length === 0; @@ -1761,7 +1752,6 @@ class FilesStore { if (this.clientLoadingStore.isLoading) { this.abortAllFetch(); } - console.log("LLLLLLLLLLLLLLLLLLLLLLLLLLL"); const filterData = !!filter ? filter.clone() @@ -1799,7 +1789,6 @@ class FilesStore { api.rooms .getRooms(filterData, this.roomsController.signal) .then(async (data) => { - console.log("LLLLLLLLLLLLLLLLLLLLLLLLLLL"); if (!folderId) setSelectedNode([data.current.id + ""]); filterData.total = data.total; From 17aaeff0642207c1ed17db0d1c0f23457f3f2ebb Mon Sep 17 00:00:00 2001 From: Aleksandr Lushkin Date: Fri, 28 Jun 2024 12:22:38 +0200 Subject: [PATCH 024/167] Client: Public: Locales: Update group max role warning text --- packages/client/public/locales/ar-SA/InviteDialog.json | 1 - packages/client/public/locales/az/InviteDialog.json | 1 - packages/client/public/locales/bg/InviteDialog.json | 1 - packages/client/public/locales/cs/InviteDialog.json | 1 - packages/client/public/locales/de/InviteDialog.json | 1 - packages/client/public/locales/el-GR/InviteDialog.json | 1 - packages/client/public/locales/en/InviteDialog.json | 2 +- packages/client/public/locales/es/InviteDialog.json | 1 - packages/client/public/locales/fi/InviteDialog.json | 1 - packages/client/public/locales/fr/InviteDialog.json | 1 - packages/client/public/locales/hy-AM/InviteDialog.json | 1 - packages/client/public/locales/it/InviteDialog.json | 1 - packages/client/public/locales/ja-JP/InviteDialog.json | 1 - packages/client/public/locales/ko-KR/InviteDialog.json | 1 - packages/client/public/locales/lv/InviteDialog.json | 1 - packages/client/public/locales/nl/InviteDialog.json | 1 - packages/client/public/locales/pl/InviteDialog.json | 1 - packages/client/public/locales/pt-BR/InviteDialog.json | 1 - packages/client/public/locales/pt/InviteDialog.json | 1 - packages/client/public/locales/ro/InviteDialog.json | 1 - packages/client/public/locales/ru/InviteDialog.json | 1 - packages/client/public/locales/si/InviteDialog.json | 1 - packages/client/public/locales/sk/InviteDialog.json | 1 - packages/client/public/locales/sl/InviteDialog.json | 1 - packages/client/public/locales/sr-Cyrl-RS/InviteDialog.json | 1 - packages/client/public/locales/sr-Latn-RS/InviteDialog.json | 1 - packages/client/public/locales/tr/InviteDialog.json | 1 - packages/client/public/locales/uk-UA/InviteDialog.json | 1 - packages/client/public/locales/vi/InviteDialog.json | 1 - packages/client/public/locales/zh-CN/InviteDialog.json | 1 - .../panels/InvitePanel/sub-components/InviteInput.js | 4 ++-- 31 files changed, 3 insertions(+), 32 deletions(-) diff --git a/packages/client/public/locales/ar-SA/InviteDialog.json b/packages/client/public/locales/ar-SA/InviteDialog.json index e0c6d720ea..b72eef2b3b 100644 --- a/packages/client/public/locales/ar-SA/InviteDialog.json +++ b/packages/client/public/locales/ar-SA/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "قم بدعوة المستخدمين الجدد إلى {{productName}} شخصيًا عبر البريد الإلكتروني", "AddManuallyDescriptionRoom": "أضف مستخدمي {{productName}} الحاليين إلى الغرفة باستخدام الأسماء أو قم بدعوة مستخدمين جدد شخصيًا عبر البريد الإلكتروني", "EmailErrorMessage": "عنوان البريد الإلكتروني غير صالح. يمكنك تحرير البريد الإلكتروني بالضغط عليه.", - "GroupMaxAvailableRoleWarning": "تتمتع المجموعات بأقصى دور متاح - \"{{role}}\". يمكنك إصدار زيادة في الحقوق بعد إضافة مجموعة إلى الغرفة.", "InvitationLanguage": "لغة الدعوة", "InviteAccountSearchPlaceholder": "ادعُ الناس بالبريد الإلكتروني", "InviteRoomSearchPlaceholder": "ادعُ الناس بالاسم أو بالبريد الإلكتروني", diff --git a/packages/client/public/locales/az/InviteDialog.json b/packages/client/public/locales/az/InviteDialog.json index 260f8ed8a3..e2f511a430 100644 --- a/packages/client/public/locales/az/InviteDialog.json +++ b/packages/client/public/locales/az/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Yeni istifadəçiləri e-poçt vasitəsilə şəxsən {{productName}}-ə dəvət edin", "AddManuallyDescriptionRoom": "Mövcud {{productName}} istifadəçilərini adlardan istifadə edərək otağa əlavə edin və ya yeni istifadəçiləri e-poçt vasitəsilə şəxsən dəvət edin", "EmailErrorMessage": "E-poçt ünvanı etibarlı deyil. Siz e-poçtu klikləməklə redaktə edə bilərsiniz.", - "GroupMaxAvailableRoleWarning": "Qruplar maksimum mümkün rola malikdir: “{{role}}”. Otağa qrup əlavə etdikdən sonra hüquqları artıra bilərsiniz.", "InvitationLanguage": "Dəvət dili", "InviteAccountSearchPlaceholder": "İnsanları e-məktubla dəvət edin", "InviteRoomSearchPlaceholder": "İnsanları ad və ya e-məktubla dəvət edin", diff --git a/packages/client/public/locales/bg/InviteDialog.json b/packages/client/public/locales/bg/InviteDialog.json index 2b736d6121..ed51fb06e7 100644 --- a/packages/client/public/locales/bg/InviteDialog.json +++ b/packages/client/public/locales/bg/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Поканете нови потребители в {{productName}} лично чрез имейл", "AddManuallyDescriptionRoom": "Добавете съществуващи {{productName}} потребители към стаята, като използвате имената или поканете нови потребители лично чрез имейл", "EmailErrorMessage": "Невалиден имейл адрес. Можете да редактирате имейла, като щракнете върху него.", - "GroupMaxAvailableRoleWarning": "Групите имат максималната налична роля - “{{role}}”. Можете да издадете увеличение на правата след добавяне на група в стаята.", "InvitationLanguage": "Език на поканата", "InviteAccountSearchPlaceholder": "Поканете хора по имейл", "InviteRoomSearchPlaceholder": "Поканете хора по име или имейл", diff --git a/packages/client/public/locales/cs/InviteDialog.json b/packages/client/public/locales/cs/InviteDialog.json index c877b5a6b9..9e58a672a2 100644 --- a/packages/client/public/locales/cs/InviteDialog.json +++ b/packages/client/public/locales/cs/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Pozvěte osobně nové uživatele do {{productName}} prostřednictvím e-mailu", "AddManuallyDescriptionRoom": "Přidat stávající uživatele {{productName}} do místnosti pomocí jmen nebo osobní pozvání nových uživatelů prostřednictvím e-mailu", "EmailErrorMessage": "E-mailová adresa není platná. E-mailovou adresu můžete upravit kliknutím na tuto adresu.", - "GroupMaxAvailableRoleWarning": "Skupiny mají maximální dostupnou roli - “{{role}}”. Po přidání skupiny do místnosti můžete vydat zvýšení práv.", "InvitationLanguage": "Jazyk pozvánky", "InviteAccountSearchPlaceholder": "Pozvat lidi e-mailem", "InviteRoomSearchPlaceholder": "Pozvat lidi podle jména nebo e-mailu", diff --git a/packages/client/public/locales/de/InviteDialog.json b/packages/client/public/locales/de/InviteDialog.json index ff62519f94..b608d02e9a 100644 --- a/packages/client/public/locales/de/InviteDialog.json +++ b/packages/client/public/locales/de/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Laden Sie neue Benutzer persönlich per E-Mail zu {{productName}} ein", "AddManuallyDescriptionRoom": "Fügen Sie bestehende {{productName}}-Benutzer anhand der Namen zum Raum hinzu oder laden Sie neue Benutzer persönlich per E-Mail ein", "EmailErrorMessage": "Die E-Mail-Adresse ist nicht gültig. Sie können die E-Mail bearbeiten, indem Sie sie anklicken.", - "GroupMaxAvailableRoleWarning": "Gruppen haben die maximal verfügbare Rolle – „{{role}}“. Nach dem Hinzufügen einer Gruppe zum Raum können Sie eine Rechteerhöhung erteilen.", "InvitationLanguage": "Sprache der Einladung", "InviteAccountSearchPlaceholder": "Personen per E-Mail einladen", "InviteRoomSearchPlaceholder": "Personen per Name oder E-Mail einladen", diff --git a/packages/client/public/locales/el-GR/InviteDialog.json b/packages/client/public/locales/el-GR/InviteDialog.json index 8f06bbdd27..2aa04c4068 100644 --- a/packages/client/public/locales/el-GR/InviteDialog.json +++ b/packages/client/public/locales/el-GR/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Προσκαλέστε νέους χρήστες στο {{productName}} προσωπικά μέσω email", "AddManuallyDescriptionRoom": "Προσθέστε υπάρχοντες χρήστες του {{productName}} στο δωμάτιο χρησιμοποιώντας τα ονόματα ή προσκαλέστε νέους χρήστες προσωπικά μέσω email", "EmailErrorMessage": "Η διεύθυνση email δεν είναι έγκυρη. Μπορείτε να επεξεργαστείτε το email κάνοντας κλικ πάνω του.", - "GroupMaxAvailableRoleWarning": "Οι ομάδες έχουν τον μέγιστο διαθέσιμο ρόλο – «{{role}}». Μπορείτε να εκδώσετε αύξηση των δικαιωμάτων μετά την προσθήκη μιας ομάδας στο δωμάτιο.", "InvitationLanguage": "Γλώσσα πρόσκλησης", "InviteAccountSearchPlaceholder": "Πρόσκληση ατόμων μέσω email", "InviteRoomSearchPlaceholder": "Πρόσκληση ατόμων με όνομα ή email", diff --git a/packages/client/public/locales/en/InviteDialog.json b/packages/client/public/locales/en/InviteDialog.json index 173ee714c8..5874d94ca0 100644 --- a/packages/client/public/locales/en/InviteDialog.json +++ b/packages/client/public/locales/en/InviteDialog.json @@ -3,7 +3,7 @@ "AddManuallyDescriptionAccounts": "Invite new users to {{productName}} personally via email", "AddManuallyDescriptionRoom": "Add existing {{productName}} users to the room using the names or invite new users personally via email", "EmailErrorMessage": "Email address is not valid. You can edit the email by clicking on it.", - "GroupMaxAvailableRoleWarning": "Groups have the maximum available role - “{{role}}”. You can issue an increase in rights after adding a group to the room.", + "GroupMaxAvailableRoleWarning": "Groups can be added to a room with the {{roleName}} role as maximum. However, you can change the role of individual users in the group after it has been successfully added.", "InvitationLanguage": "Invitation language", "InviteAccountSearchPlaceholder": "Invite people by email", "InviteRoomSearchPlaceholder": "Invite people by name or email", diff --git a/packages/client/public/locales/es/InviteDialog.json b/packages/client/public/locales/es/InviteDialog.json index e4ec791926..97629912be 100644 --- a/packages/client/public/locales/es/InviteDialog.json +++ b/packages/client/public/locales/es/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Invite a nuevos usuarios a {{productName}} personalmente por correo electrónico", "AddManuallyDescriptionRoom": "Añada usuarios existentes de {{productName}} a la sala utilizando sus nombres o invite a nuevos usuarios personalmente por correo electrónico.", "EmailErrorMessage": "La dirección de correo electrónico no es válida. Puede editar el correo electrónico haciendo clic en él.", - "GroupMaxAvailableRoleWarning": "Los grupos tienen el rol máximo disponible: \"{{role}}\". Puede conceder permisos adicionales después de añadir un grupo a la sala.", "InvitationLanguage": "Idioma de la invitación ", "InviteAccountSearchPlaceholder": "Invitar por correo electrónico", "InviteRoomSearchPlaceholder": "Invitar por nombre o correo electrónico", diff --git a/packages/client/public/locales/fi/InviteDialog.json b/packages/client/public/locales/fi/InviteDialog.json index 5232fffde5..0aacb04c72 100644 --- a/packages/client/public/locales/fi/InviteDialog.json +++ b/packages/client/public/locales/fi/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Kutsu uusia käyttäjiä {{productName}}-en henkilökohtaisesti sähköpostilla", "AddManuallyDescriptionRoom": "Lisää olemassa olevat {{productName}}-käyttäjät huoneeseen käyttämällä nimiä tai kutsu uudet käyttäjät henkilökohtaisesti sähköpostin kautta", "EmailErrorMessage": "Sähköpostiosoite ei ole olemassa. Voit muokata sähköpostia klikkaamalla sitä.", - "GroupMaxAvailableRoleWarning": "Ryhmillä on maksimi saatavilla-rooli -“{{role}}”. Voit antaa korotuksen oikeuksiin, kun olet lisännyt ryhmän huoneeseen.", "InvitationLanguage": "Kutsukieli", "InviteAccountSearchPlaceholder": "Kutsu ihmisiä sähköpostilla", "InviteRoomSearchPlaceholder": "Kutsu ihmisiä nimellä tai sähköpostilla", diff --git a/packages/client/public/locales/fr/InviteDialog.json b/packages/client/public/locales/fr/InviteDialog.json index 418a5680ae..d02bb23817 100644 --- a/packages/client/public/locales/fr/InviteDialog.json +++ b/packages/client/public/locales/fr/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Invitez personnellement de nouveaux utilisateurs à {{productName}} par e-mail", "AddManuallyDescriptionRoom": "Ajoutez des utilisateurs existants de {{productName}} à la salle en utilisant les noms ou invitez de nouveaux utilisateurs personnellement par e-mail", "EmailErrorMessage": "L’adresse e-mail n’est pas valide. Vous pouvez modifier l’e-mail en cliquant dessus.", - "GroupMaxAvailableRoleWarning": "Les groupes ont le rôle maximum disponible - \"{{role}}\". Vous pouvez augmenter les droits après avoir ajouté un groupe à la salle.", "InvitationLanguage": "Langue de l'invitation", "InviteAccountSearchPlaceholder": "Inviter des personnes par e-mail", "InviteRoomSearchPlaceholder": "Inviter des personnes par leur nom ou leur e-mail", diff --git a/packages/client/public/locales/hy-AM/InviteDialog.json b/packages/client/public/locales/hy-AM/InviteDialog.json index b0a76dede5..c8e44ed6ae 100644 --- a/packages/client/public/locales/hy-AM/InviteDialog.json +++ b/packages/client/public/locales/hy-AM/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Հրավիրեք նոր օգտվողներին {{productName}} անձամբ էլփոստի միջոցով", "AddManuallyDescriptionRoom": "Ավելացրեք {{productName}}-ի առկա օգտատերերին սենյակին՝ օգտագործելով անունները կամ անձամբ հրավիրեք նոր օգտատերերի էլփոստի միջոցով", "EmailErrorMessage": "Էլփոստի հասցեն վավեր չէ: Դուք կարող եք խմբագրել էլփոստը՝ սեղմելով դրա վրա:", - "GroupMaxAvailableRoleWarning": "Խմբերն ունեն առավելագույն հասանելի դերը՝ “{{role}}”: Դուք կարող եք ավելացնել իրավունքների ավելացում սենյակում խումբ ավելացնելուց հետո:", "InvitationLanguage": "Հրավերների լեզու", "InviteAccountSearchPlaceholder": "Հրավիրեք մարդկանց էլ փոստով", "InviteRoomSearchPlaceholder": "Հրավիրեք մարդկանց անունով կամ էլ փոստով", diff --git a/packages/client/public/locales/it/InviteDialog.json b/packages/client/public/locales/it/InviteDialog.json index d2b0e252f0..afec7c9122 100644 --- a/packages/client/public/locales/it/InviteDialog.json +++ b/packages/client/public/locales/it/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Invita nuovi utenti a {{productName}} personalmente tramite e-mail", "AddManuallyDescriptionRoom": "Aggiungi utenti esistenti di {{productName}} alla stanza utilizzando i nomi o invita nuovi utenti personalmente tramite e-mail", "EmailErrorMessage": "Indirizzo email non valido. Puoi modificare l’email facendo clic su di essa.", - "GroupMaxAvailableRoleWarning": "I gruppi hanno il ruolo massimo disponibile: \"{{role}}\". Puoi cambiare i diritti dopo aver aggiunto un gruppo alla stanza.", "InvitationLanguage": "Lingua dell'invito", "InviteAccountSearchPlaceholder": "Invita persone via e-mail", "InviteRoomSearchPlaceholder": "Invita persone per nome o e-mail", diff --git a/packages/client/public/locales/ja-JP/InviteDialog.json b/packages/client/public/locales/ja-JP/InviteDialog.json index 98229d71b5..59887b39f7 100644 --- a/packages/client/public/locales/ja-JP/InviteDialog.json +++ b/packages/client/public/locales/ja-JP/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "新規ユーザーをメールで{{productName}}に招待する", "AddManuallyDescriptionRoom": "既存の{{productName}}ユーザーを名前を使ってルームに追加したり、新しいユーザーをメールアドレスで招待することができます", "EmailErrorMessage": "メールアドレスが有効ではありません。メールアドレスをクリックすると編集できます。", - "GroupMaxAvailableRoleWarning": "グループには利用可能な最高役割は「{{role}}」です。ルームにグループを追加した後、権限のアップグレードができます。", "InvitationLanguage": "招待の言語", "InviteAccountSearchPlaceholder": "メールで招待する", "InviteRoomSearchPlaceholder": "名前またはメールで招待する", diff --git a/packages/client/public/locales/ko-KR/InviteDialog.json b/packages/client/public/locales/ko-KR/InviteDialog.json index cae6bab001..1bb7e6c3cc 100644 --- a/packages/client/public/locales/ko-KR/InviteDialog.json +++ b/packages/client/public/locales/ko-KR/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "이메일을 통해 개인적으로 {{productName}}에 새 사용자 초대", "AddManuallyDescriptionRoom": "이름으로 기존 {{productName}} 사용자를 방에 추가하거나 이메일을 통해 개인적으로 새 사용자를 초대하세요", "EmailErrorMessage": "이메일 주소가 유효하지 않습니다. 이메일을 클릭하면 편집할 수 있습니다.", - "GroupMaxAvailableRoleWarning": "그룹에서 이용 가능한 역할(“{{role}}”)은 한정되어 있습니다. 방에 그룹을 추가한 뒤 권한을 늘릴 수 있습니다.", "InvitationLanguage": "초대 언어", "InviteAccountSearchPlaceholder": "이메일로 사람들 초대", "InviteRoomSearchPlaceholder": "이름 또는 이메일로 사람들 초대", diff --git a/packages/client/public/locales/lv/InviteDialog.json b/packages/client/public/locales/lv/InviteDialog.json index 769d8ede1a..af3d1e6bb2 100644 --- a/packages/client/public/locales/lv/InviteDialog.json +++ b/packages/client/public/locales/lv/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Uzaicināt jaunus lietotājus uz {{productName}} personīgi pa e-pastu", "AddManuallyDescriptionRoom": "Pievienot telpā esošos {{productName}} lietotājus, izmantojot vārdus, vai uzaicināt jaunus lietotājus personīgi pa e-pastu", "EmailErrorMessage": "E- pasta adrese ir nederīga. Jūs varat rediģēt e-pastu, noklikšķinot uz tā.", - "GroupMaxAvailableRoleWarning": "Grupām ir maksimālā pieejamā loma - “{{role}}”. Jūs varat palielināt tiesības pēc grupas pievienošanas telpai.", "InvitationLanguage": "Uzaicinājuma valoda", "InviteAccountSearchPlaceholder": "Uzaicināt personas pa e-pastu", "InviteRoomSearchPlaceholder": "Uzaicināt personas pēc vārda vai e-pasta adreses", diff --git a/packages/client/public/locales/nl/InviteDialog.json b/packages/client/public/locales/nl/InviteDialog.json index 299d4a04ff..744cc7d5e3 100644 --- a/packages/client/public/locales/nl/InviteDialog.json +++ b/packages/client/public/locales/nl/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Nodig nieuwe gebruikers persoonlijk per e-mail uit voor {{productName}}", "AddManuallyDescriptionRoom": "Bestaande {{productName}} gebruikers toevoegen aan de kamer met behulp van de namen of nieuwe gebruikers persoonlijk uitnodigen per e-mail", "EmailErrorMessage": "E-mailadres niet geldig. U kunt de e-mail bewerken door erop te klikken.", - "GroupMaxAvailableRoleWarning": "Groepen hebben de maximaal beschikbare rol - “{{role}}”. U kunt een toename in rechten geven nadat u een groep aan de kamer hebt toegevoegd.", "InvitationLanguage": "Taal van de uitnodiging", "InviteAccountSearchPlaceholder": "Mensen per e-mail uitnodigen", "InviteRoomSearchPlaceholder": "Mensen per e-mail uitnodigen", diff --git a/packages/client/public/locales/pl/InviteDialog.json b/packages/client/public/locales/pl/InviteDialog.json index 39173eab36..de798b122b 100644 --- a/packages/client/public/locales/pl/InviteDialog.json +++ b/packages/client/public/locales/pl/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Zaproś nowych użytkowników do {{productName}} osobiście poprzez wiadomość e-mail", "AddManuallyDescriptionRoom": "Dodaj istniejących użytkowników {{productName}} do pokoju za pomocą nazw lub zaproś nowych użytkowników osobiście za pośrednictwem poczty elektronicznej", "EmailErrorMessage": "Niepoprawny adres e-mail Możesz poprawić adres e-mail klikając go.", - "GroupMaxAvailableRoleWarning": "Grupy mają maksymalną dostępną rolę – “{{role}}”. Możesz przyznawać uprawnienia i zwiększać je po dodaniu grupy do pokoju.", "InvitationLanguage": "Język zaproszenia", "InviteAccountSearchPlaceholder": "Zaproś ludzi poprzez e-mail", "InviteRoomSearchPlaceholder": "Zaproś ludzi po imieniu lub poprzez adres e-mail", diff --git a/packages/client/public/locales/pt-BR/InviteDialog.json b/packages/client/public/locales/pt-BR/InviteDialog.json index dad3c5d19f..236771559b 100644 --- a/packages/client/public/locales/pt-BR/InviteDialog.json +++ b/packages/client/public/locales/pt-BR/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Convide novos usuários para o {{productName}} pessoalmente por e-mail", "AddManuallyDescriptionRoom": "Adicione usuários existentes do {{productName}} à sala usando os nomes ou convide novos usuários pessoalmente por e-mail", "EmailErrorMessage": "Endereço de email inválido. Você pode editar o e-mail clicando nele.", - "GroupMaxAvailableRoleWarning": "Os grupos têm a função máxima disponível - “{{role}}”. Você pode emitir um aumento de direitos após adicionar um grupo à sala.", "InvitationLanguage": "Idioma do convite", "InviteAccountSearchPlaceholder": "Convidar pessoas por e-mail", "InviteRoomSearchPlaceholder": "Convidar pessoas por nome ou e-mail", diff --git a/packages/client/public/locales/pt/InviteDialog.json b/packages/client/public/locales/pt/InviteDialog.json index a8ac4bf9a2..9267009ae3 100644 --- a/packages/client/public/locales/pt/InviteDialog.json +++ b/packages/client/public/locales/pt/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Convide novos utilizadores para o {{productName}} pessoalmente através do email", "AddManuallyDescriptionRoom": "Adicionar utilizadores do {{productName}} à sala utilizando os nomes ou convidando novos utilizadores via email", "EmailErrorMessage": "O Endereço de email não é válido. Pode editar o email ao clicar nele.", - "GroupMaxAvailableRoleWarning": "Os grupos têm a função máxima disponível - “{{role}}”. Você pode emitir um aumento de direitos após adicionar um grupo à sala.", "InvitationLanguage": "Idioma do convite", "InviteAccountSearchPlaceholder": "Convidar pessoas por email", "InviteRoomSearchPlaceholder": "Convidar pessoas pelo nome ou pelo email", diff --git a/packages/client/public/locales/ro/InviteDialog.json b/packages/client/public/locales/ro/InviteDialog.json index f255060848..d0850900b9 100644 --- a/packages/client/public/locales/ro/InviteDialog.json +++ b/packages/client/public/locales/ro/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Invitaţi utilizatori noi la {{productName}} personal prin email", "AddManuallyDescriptionRoom": "Adăugaţi utilizatorii existenți ai {{productName}} în sala folosind numele sau invitaţi utilizatorii personal prin e-mail", "EmailErrorMessage": "Adresa de email nu este valabilă Puteţi modifica adresa de email făcând clic dreapta pe aceasta.", - "GroupMaxAvailableRoleWarning": "Rol maxim disponibil pentru grupuri - “{{role}}”. Puteți adăuga permisiunile de acces după crearea unui grup în sala.", "InvitationLanguage": "Invitația în limba", "InviteAccountSearchPlaceholder": "Invitaţi persoane după email", "InviteRoomSearchPlaceholder": "Invitaţi persoane după nume sau email", diff --git a/packages/client/public/locales/ru/InviteDialog.json b/packages/client/public/locales/ru/InviteDialog.json index 7dc9a29632..56cbf7809e 100644 --- a/packages/client/public/locales/ru/InviteDialog.json +++ b/packages/client/public/locales/ru/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Приглашайте новых пользователей в {{productName}} лично по электронной почте", "AddManuallyDescriptionRoom": "Добавьте существующих пользователей {{productName}} в комнату, используя имена, или лично пригласите новых пользователей по электронной почте", "EmailErrorMessage": "Адрес электронной почты недействителен. Вы можете отредактировать адрес, нажав на него.", - "GroupMaxAvailableRoleWarning": "Группы имеют максимально доступную роль — \"{{role}}\". Вы можете увеличить количество права после добавления группы в комнату.", "InvitationLanguage": "Язык приглашения", "InviteAccountSearchPlaceholder": "Пригласить людей по электронной почте", "InviteRoomSearchPlaceholder": "Приглашайте людей по имени или электронной почте", diff --git a/packages/client/public/locales/si/InviteDialog.json b/packages/client/public/locales/si/InviteDialog.json index 8849e688bd..3bee693926 100644 --- a/packages/client/public/locales/si/InviteDialog.json +++ b/packages/client/public/locales/si/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "වි-තැපෑලෙන් පෞද්ගලිකව {{productName}} වෙත නව පරිශ්‍රීලකයින්ට ආරාධනා කරන්න", "AddManuallyDescriptionRoom": "දැනට සිටින {{productName}} පරිශ්‍රීලකයින්ගේ නම් භාවිතයෙන් කාමරයකට එක් කරන්න හෝ වෙනත් අයට වි-තැපෑලකින් පෞද්ගලිකව ආරාධනා කරන්න", "EmailErrorMessage": "වි-තැපැල් ලිපිනය වලංගු නොවේ. ඔබට එය මත එබීමෙන් සංශෝධනය කිරීමට හැකිය.", - "GroupMaxAvailableRoleWarning": "සමූහවල පවතින ඉහළම භූමිකාව - “{{role}}”. කාමරයට සමූහයක් එක් කිරීමෙන් පසු ඔබට අයිතීන් ඉහළ දැමීමට හැකිය.", "InvitationLanguage": "ආරාධන භාෂාව", "InviteAccountSearchPlaceholder": "වි-තැපෑලෙන් ආරාධනය", "InviteRoomSearchPlaceholder": "නමින් හෝ වි-තැපෑලෙන් ආරාධනා කරන්න", diff --git a/packages/client/public/locales/sk/InviteDialog.json b/packages/client/public/locales/sk/InviteDialog.json index 432204ffef..3a0afac82b 100644 --- a/packages/client/public/locales/sk/InviteDialog.json +++ b/packages/client/public/locales/sk/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Pozvite nových používateľov do {{productName}} osobne prostredníctvom e-mailu", "AddManuallyDescriptionRoom": "Pridajte existujúcich používateľov {{productName}} do miestnosti tak, že použijete ich mena alebo osobne pozvite nových používateľov prostredníctvom e-mailu", "EmailErrorMessage": "Emailová adresa nie je platná. E-mail môžete upraviť kliknutím naň.", - "GroupMaxAvailableRoleWarning": "Skupiny majú maximálne dostupnú rolu - \"{{role}}\". Po pridaní skupiny do miestnosti môžete povoliť rozšírenie práv.", "InvitationLanguage": "Jazyk pozvánky", "InviteAccountSearchPlaceholder": "Pozvať ľudí e-mailom", "InviteRoomSearchPlaceholder": "Pozvať ľudí podľa mena alebo e-mailu", diff --git a/packages/client/public/locales/sl/InviteDialog.json b/packages/client/public/locales/sl/InviteDialog.json index bf17fb5bea..5f30e2b80d 100644 --- a/packages/client/public/locales/sl/InviteDialog.json +++ b/packages/client/public/locales/sl/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Po e-mailu osebno povabite nove uporabnike v {{productName}}", "AddManuallyDescriptionRoom": "Dodaj obstoječe {{productName}} uporabnike v sobo z uporabo imena ali povabite nove uporabnike osebno po e-mailu", "EmailErrorMessage": "E-mail naslov ni veljaven. E-mail sporočilo lahko uredite tako, da nanj kliknete.", - "GroupMaxAvailableRoleWarning": "Skupine imajo maksimalno možno vlogo - “{{role}}”. Po dodajanju skupine v sobo lahko povečate pravice.", "InvitationLanguage": "Jezik povabila", "InviteAccountSearchPlaceholder": "Povabite ljudi po e-mailu", "InviteRoomSearchPlaceholder": "Povabite ljudi po imenu ali e-mailu", diff --git a/packages/client/public/locales/sr-Cyrl-RS/InviteDialog.json b/packages/client/public/locales/sr-Cyrl-RS/InviteDialog.json index 5cccbc5fda..ab4440dbde 100644 --- a/packages/client/public/locales/sr-Cyrl-RS/InviteDialog.json +++ b/packages/client/public/locales/sr-Cyrl-RS/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Позови нове кориснике на {{productName}} лично путем емаил-а.", "AddManuallyDescriptionRoom": "Додајте постојеће кориснике {{productName}}-а у собу користећи њихова имена или позовите нове кориснике лично путем емаил-а.", "EmailErrorMessage": "Емаил адреса није важећа. Можете уредити емаил кликом на њега.", - "GroupMaxAvailableRoleWarning": "Групе имају максималну доступну улогу - \"{{role}}\". Можете издати повећање права након додавања групе у собу.", "InvitationLanguage": "Језик позивнице", "InviteAccountSearchPlaceholder": "Позови људе преко емаил-а", "InviteRoomSearchPlaceholder": "Позови људе именом или емаил-ом", diff --git a/packages/client/public/locales/sr-Latn-RS/InviteDialog.json b/packages/client/public/locales/sr-Latn-RS/InviteDialog.json index f6b7d22298..833a90c47b 100644 --- a/packages/client/public/locales/sr-Latn-RS/InviteDialog.json +++ b/packages/client/public/locales/sr-Latn-RS/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Pozovi nove korisnike na {{productName}} lično putem email-a.", "AddManuallyDescriptionRoom": "Dodajte postojeće korisnike {{productName}}-a u sobu koristeći njihova imena ili pozovite nove korisnike lično putem email-a.", "EmailErrorMessage": "Email adresa nije važeća. Možete urediti email klikom na njega.", - "GroupMaxAvailableRoleWarning": "Grupe imaju maksimalnu dostupnu ulogu - \"{{role}}\". Možete izdati povećanje prava nakon dodavanja grupe u sobu.", "InvitationLanguage": "Jezik pozivnice", "InviteAccountSearchPlaceholder": "Pozovi ljude preko email-a", "InviteRoomSearchPlaceholder": "Pozovi ljude imenom ili email-om", diff --git a/packages/client/public/locales/tr/InviteDialog.json b/packages/client/public/locales/tr/InviteDialog.json index 187703601d..36c0661d90 100644 --- a/packages/client/public/locales/tr/InviteDialog.json +++ b/packages/client/public/locales/tr/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "{{productName}}'e yeni kullanıcıları kişisel olarak e-posta yoluyla davet et", "AddManuallyDescriptionRoom": "Adları kullanarak mevcut {{productName}} kullanıcılarını odaya ekleyin veya e-mail yoluyla kişisel olarak yeni kullanıcılar davet edin", "EmailErrorMessage": "E-posta adresi geçerli değil. E-postayı tıklayarak düzenleyebilirsiniz.", - "GroupMaxAvailableRoleWarning": "Gruplar maksimum kullanılabilir role sahiptir - \"{{role}}\". Odaya bir grup ekledikten sonra haklarda bir artış yapabilirsiniz.", "InvitationLanguage": "Davet dili", "InviteAccountSearchPlaceholder": "İnsanları e-posta ile davet et", "InviteRoomSearchPlaceholder": "Kişileri ada veya e-postaya göre davet et", diff --git a/packages/client/public/locales/uk-UA/InviteDialog.json b/packages/client/public/locales/uk-UA/InviteDialog.json index 4a2a8b151b..db50539e02 100644 --- a/packages/client/public/locales/uk-UA/InviteDialog.json +++ b/packages/client/public/locales/uk-UA/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Запрошуйте нових користувачів до {{productName}} особисто за допомогою електронної пошти", "AddManuallyDescriptionRoom": "Додайте наявних користувачів {{productName}} до кімнати, використовуючи імена, або запросіть нових користувачів особисто електронною поштою", "EmailErrorMessage": "Адреса електронної пошти недійсна. Щоб редагувати адресу електронної пошти, натисніть на неї.", - "GroupMaxAvailableRoleWarning": "Групи мають максимальну доступну роль «{{role}}». Ви можете розширити права після додавання групи до кімнати.", "InvitationLanguage": "Мова запрошення", "InviteAccountSearchPlaceholder": "Запрошуйте людей за адресою електронної пошти", "InviteRoomSearchPlaceholder": "Запрошуйте людей за іменем або адресою електронної пошти", diff --git a/packages/client/public/locales/vi/InviteDialog.json b/packages/client/public/locales/vi/InviteDialog.json index 85dd3699a2..965effa980 100644 --- a/packages/client/public/locales/vi/InviteDialog.json +++ b/packages/client/public/locales/vi/InviteDialog.json @@ -3,7 +3,6 @@ "AddManuallyDescriptionAccounts": "Mời người dùng mới vào {{productName}} cá nhân qua email", "AddManuallyDescriptionRoom": "Thêm người dùng {{productName}} hiện có vào phòng bằng cách sử dụng tên hoặc mời người dùng mới qua email", "EmailErrorMessage": "Địa chỉ Email không hợp lệ. Bạn có thể chỉnh sửa email bằng cách nhấp vào nó.", - "GroupMaxAvailableRoleWarning": "Các nhóm có vai trò sẵn có tối đa - “{{role}}”. Bạn có thể tăng quyền sau khi thêm một nhóm vào phòng.", "InvitationLanguage": "Ngôn ngữ mời", "InviteAccountSearchPlaceholder": "Mời người dùng qua email", "InviteRoomSearchPlaceholder": "Mời người dùng theo tên hoặc email", diff --git a/packages/client/public/locales/zh-CN/InviteDialog.json b/packages/client/public/locales/zh-CN/InviteDialog.json index 10b7113172..ca344a73c1 100644 --- a/packages/client/public/locales/zh-CN/InviteDialog.json +++ b/packages/client/public/locales/zh-CN/InviteDialog.json @@ -1,7 +1,6 @@ { "AddManually": "手动添加", "EmailErrorMessage": "邮件地址无效。您可点击邮件以进行编辑。", - "GroupMaxAvailableRoleWarning": "群组有最大的可用角色“{{role}}”。您向房间中添加群组后,可以添加权限。", "InvitationLanguage": "邀请语言", "InviteAccountSearchPlaceholder": "通过邮件进行邀请", "InviteRoomSearchPlaceholder": "根据姓名或邮件邀请用户", diff --git a/packages/client/src/components/panels/InvitePanel/sub-components/InviteInput.js b/packages/client/src/components/panels/InvitePanel/sub-components/InviteInput.js index f0b8d99e3b..3e5981a605 100644 --- a/packages/client/src/components/panels/InvitePanel/sub-components/InviteInput.js +++ b/packages/client/src/components/panels/InvitePanel/sub-components/InviteInput.js @@ -257,7 +257,7 @@ const InviteInput = ({ const topFreeRole = getTopFreeRole(t, roomType); item.access = topFreeRole.access; item.warning = t("GroupMaxAvailableRoleWarning", { - role: topFreeRole.label, + roleName: topFreeRole.label, }); } @@ -318,7 +318,7 @@ const InviteInput = ({ if (u.isGroup && checkIfAccessPaid(u.access)) { u.access = topFreeRole.access; u.warning = t("GroupMaxAvailableRoleWarning", { - role: topFreeRole.label, + roleName: topFreeRole.label, }); } }); From d6793d4bed0d2addf44cd0e26be790e0ad629a7e Mon Sep 17 00:00:00 2001 From: Akmal Isomadinov Date: Fri, 28 Jun 2024 15:32:22 +0500 Subject: [PATCH 025/167] Client:Store:ContextOptionsStore Fixed bug 68902 --- packages/client/src/store/ContextOptionsStore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index a231e3dfca..0f603b87f3 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -2439,7 +2439,7 @@ class ContextOptionsStore { key: "new-form", label: t("Translations:SubNewForm"), icon: FormBlankReactSvgUrl, - onClick: () => this.onCreate("docxf"), + onClick: () => this.onCreate("pdf"), }; const createTemplateNewFormFile = { From b1542b40c6bfb5af2c3543661429a7ef4af3e1ec Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Fri, 28 Jun 2024 15:01:20 +0300 Subject: [PATCH 026/167] Web: Accounts: fixed inside-group table --- .../History/HistoryBlockContent/GroupList.tsx | 25 +++++++++++++------ .../History/HistoryBlockContent/ItemList.tsx | 2 +- .../History/HistoryBlockContent/MainText.tsx | 2 +- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/GroupList.tsx b/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/GroupList.tsx index 1b1c6f54eb..c4e51b8ea2 100644 --- a/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/GroupList.tsx +++ b/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/GroupList.tsx @@ -36,6 +36,7 @@ import { StyledHistoryBlockExpandLink, StyledHistoryLink, } from "../../../styles/history"; +import { TSetSelectedFolder } from "../../../../../../../store/SelectedFolderStore.ts"; const EXPANSION_THRESHOLD = 8; @@ -48,6 +49,7 @@ interface HistoryGroupListProps { setPeopleBufferSelection?: (newBufferSelection: any) => void; setFilesSelection?: (newSelection: any[]) => void; setFilesBufferSelection?: (newBufferSelection: any) => void; + setSelectedFolder?: (selectedFolder: TSetSelectedFolder | null) => void; } const HistoryGroupList = ({ @@ -59,6 +61,7 @@ const HistoryGroupList = ({ setPeopleBufferSelection, setFilesSelection, setFilesBufferSelection, + setSelectedFolder, }: HistoryGroupListProps) => { const navigate = useNavigate(); @@ -73,6 +76,7 @@ const HistoryGroupList = ({ ]; const onGroupClick = (groupId: string) => { + setSelectedFolder?.(null); setPeopleSelection?.([]); setPeopleBufferSelection?.(null); setFilesSelection?.([]); @@ -126,11 +130,16 @@ const HistoryGroupList = ({ ); }; -export default inject(({ userStore, peopleStore, filesStore }) => ({ - isVisitor: userStore.user.isVisitor, - isCollaborator: userStore.user.isCollaborator, - setPeopleSelection: peopleStore.selectionStore.setSelection, - setPeopleBufferSelection: peopleStore.selectionStore.setBufferSelection, - setFilesSelection: filesStore.setSelection, - setFilesBufferSelection: filesStore.setBufferSelection, -}))(withTranslation(["InfoPanel"])(observer(HistoryGroupList))); +export default inject( + ({ userStore, peopleStore, filesStore, selectedFolderStore }) => { + return { + isVisitor: userStore.user.isVisitor, + isCollaborator: userStore.user.isCollaborator, + setPeopleSelection: peopleStore.selectionStore.setSelection, + setPeopleBufferSelection: peopleStore.selectionStore.setBufferSelection, + setFilesSelection: filesStore.setSelection, + setFilesBufferSelection: filesStore.setBufferSelection, + setSelectedFolder: selectedFolderStore.setSelectedFolder, + }; + }, +)(withTranslation(["InfoPanel"])(observer(HistoryGroupList))); diff --git a/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/ItemList.tsx b/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/ItemList.tsx index c4675de5b2..5358d834b2 100644 --- a/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/ItemList.tsx +++ b/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/ItemList.tsx @@ -169,7 +169,7 @@ export const HistoryItemList = ({ ); }; -export default inject(({ infoPanelStore, filesActionsStore }) => { +export default inject(({ infoPanelStore, filesActionsStore }) => { const { getInfoPanelItemIcon } = infoPanelStore; const { nameWithoutExtension, checkAndOpenLocationAction } = filesActionsStore; diff --git a/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/MainText.tsx b/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/MainText.tsx index f196fb8da0..69eb067ddb 100644 --- a/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/MainText.tsx +++ b/packages/client/src/pages/Home/InfoPanel/Body/views/History/HistoryBlockContent/MainText.tsx @@ -43,7 +43,7 @@ const HistoryMainText = ({ t, feed }: HistoryMainTextProps) => { ); }; -export default inject(({ infoPanelStore }) => { +export default inject(({ infoPanelStore }) => { const { infoPanelSelection } = infoPanelStore; return { infoPanelSelection, From 0fe9525d87b5d8ec0717f0d11623057c392b7323 Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Fri, 28 Jun 2024 17:03:06 +0300 Subject: [PATCH 027/167] Web: Files: InfoPanel: fixed title --- .../client/src/pages/Home/InfoPanel/Body/styles/common.js | 3 --- .../InfoPanel/Body/sub-components/ItemTitle/Rooms/index.js | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/client/src/pages/Home/InfoPanel/Body/styles/common.js b/packages/client/src/pages/Home/InfoPanel/Body/styles/common.js index 8d756382c6..2332db4d55 100644 --- a/packages/client/src/pages/Home/InfoPanel/Body/styles/common.js +++ b/packages/client/src/pages/Home/InfoPanel/Body/styles/common.js @@ -139,9 +139,6 @@ const StyledTitle = styled.div` margin: 0 8px; overflow: hidden; text-overflow: ellipsis; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; } .free-label { diff --git a/packages/client/src/pages/Home/InfoPanel/Body/sub-components/ItemTitle/Rooms/index.js b/packages/client/src/pages/Home/InfoPanel/Body/sub-components/ItemTitle/Rooms/index.js index 601f4923e8..6302ffb2b0 100644 --- a/packages/client/src/pages/Home/InfoPanel/Body/sub-components/ItemTitle/Rooms/index.js +++ b/packages/client/src/pages/Home/InfoPanel/Body/sub-components/ItemTitle/Rooms/index.js @@ -116,7 +116,9 @@ const RoomsItemHeader = ({ /> - {selection.title} + + {selection.title} +
{isRoomMembersPanel && ( From ffdc7c94a7402d75087209dc83b4d6a46674f130 Mon Sep 17 00:00:00 2001 From: Aleksandr Lushkin Date: Fri, 28 Jun 2024 16:07:39 +0200 Subject: [PATCH 028/167] Client: Groups: Fix wrong multiple context menu --- .../AccountsBody/Groups/RowView/GroupsRow.js | 5 ++ .../Groups/TableView/GroupsTableItem.js | 5 ++ packages/client/src/store/GroupsStore.ts | 48 +++++++++++++++++++ packages/shared/api/groups/types.ts | 1 + 4 files changed, 59 insertions(+) diff --git a/packages/client/src/pages/Home/Section/AccountsBody/Groups/RowView/GroupsRow.js b/packages/client/src/pages/Home/Section/AccountsBody/Groups/RowView/GroupsRow.js index 273014914d..9af7f11ed9 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/Groups/RowView/GroupsRow.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/Groups/RowView/GroupsRow.js @@ -41,6 +41,7 @@ const GroupsRow = ({ selection, bufferSelection, getGroupContextOptions, + getModel, sectionWidth, theme, openGroupAction, @@ -77,6 +78,8 @@ const GroupsRow = ({ const groupName = (item.name[0] + secondCharacter).toUpperCase(); + const getContextModel = () => getModel(t, item); + return ( ({ selection: peopleStore.groupsStore.selection, bufferSelection: peopleStore.groupsStore.bufferSelection, getGroupContextOptions: peopleStore.groupsStore.getGroupContextOptions, + getModel: peopleStore.groupsStore.getModel, openGroupAction: peopleStore.groupsStore.openGroupAction, changeGroupSelection: peopleStore.groupsStore.changeGroupSelection, changeGroupContextSelection: diff --git a/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableItem.js b/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableItem.js index be763572ba..aeb98574a8 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableItem.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/Groups/TableView/GroupsTableItem.js @@ -43,6 +43,7 @@ const GroupsTableItem = ({ hideColumns, bufferSelection, getGroupContextOptions, + getModel, openGroupAction, managerAccountsGroupsColumnIsEnabled, @@ -78,6 +79,8 @@ const GroupsTableItem = ({ selectRow(item); }; + const getContextModel = () => getModel(t, item); + let value = `folder_${item.id}_false_index_${itemIndex}`; return ( @@ -98,6 +101,7 @@ const GroupsTableItem = ({ onDoubleClick={onOpenGroup} hideColumns={hideColumns} contextOptions={getGroupContextOptions(t, item)} + getContextModel={getContextModel} > ({ bufferSelection: peopleStore.groupsStore.bufferSelection, getGroupContextOptions: peopleStore.groupsStore.getGroupContextOptions, + getModel: peopleStore.groupsStore.getModel, openGroupAction: peopleStore.groupsStore.openGroupAction, changeGroupSelection: peopleStore.groupsStore.changeGroupSelection, changeGroupContextSelection: diff --git a/packages/client/src/store/GroupsStore.ts b/packages/client/src/store/GroupsStore.ts index 68477ba6d6..6abc937e1c 100644 --- a/packages/client/src/store/GroupsStore.ts +++ b/packages/client/src/store/GroupsStore.ts @@ -25,6 +25,7 @@ // International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode import { makeAutoObservable, runInAction } from "mobx"; +import { TFunction } from "i18next"; import * as groupsApi from "@docspace/shared/api/groups"; import { Events } from "@docspace/shared/enums"; import { toastr } from "@docspace/shared/components/toast"; @@ -474,6 +475,47 @@ class GroupsStore { } }; + get hasGroupsToRemove() { + if (this.peopleStore.userStore.user.isRoomAdmin) { + return false; + } + + const noLdapItems = this.selection.filter((item) => !item?.isLDAP); + + return noLdapItems.length > 0; + } + + getMultipleGroupsContextOptions = (t: TFunction) => { + const { setDeleteGroupDialogVisible } = this.peopleStore.dialogStore; + + return [ + { + id: "info", + key: "group-info", + className: "group-menu_drop-down", + label: t("Common:Info"), + title: t("Common:Info"), + icon: InfoReactSvgUrl, + onClick: () => this.infoPanelStore.setIsVisible(true), + }, + { + key: "separator", + isSeparator: true, + disabled: !this.hasGroupsToRemove, + }, + { + id: "delete-group", + key: "delete-group", + className: "group-menu_drop-down", + label: t("Common:Delete"), + title: t("Common:Delete"), + icon: TrashReactSvgUrl, + onClick: () => setDeleteGroupDialogVisible(true), + disabled: !this.hasGroupsToRemove, + }, + ]; + }; + getGroupContextOptions = ( t, item, @@ -534,6 +576,12 @@ class GroupsStore { ]; }; + getModel = (t: TFunction, item: TGroup) => { + return this.selection.length > 1 + ? this.getMultipleGroupsContextOptions(t) + : this.getGroupContextOptions(t, item); + }; + clearInsideGroup = () => { this.currentGroup = null; this.insideGroupBackUrl = null; diff --git a/packages/shared/api/groups/types.ts b/packages/shared/api/groups/types.ts index 03e0252652..7b8a0b5e50 100644 --- a/packages/shared/api/groups/types.ts +++ b/packages/shared/api/groups/types.ts @@ -35,4 +35,5 @@ export type TGroup = { isGroup?: boolean; membersCount: number; shared?: boolean; + isLDAP: boolean; }; From ebffe0cc66a5f50e0c15238a089c97b77f15931e Mon Sep 17 00:00:00 2001 From: Ilya Oleshko Date: Fri, 28 Jun 2024 17:11:51 +0300 Subject: [PATCH 029/167] Shared: Themes: Added red color for white label background --- packages/shared/themes/base.ts | 3 ++- packages/shared/themes/dark.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/shared/themes/base.ts b/packages/shared/themes/base.ts index 482d5e5128..1c81662cfd 100644 --- a/packages/shared/themes/base.ts +++ b/packages/shared/themes/base.ts @@ -3046,7 +3046,8 @@ export const getBaseTheme = () => { backgroundColorDark: "#282828", greenBackgroundColor: "#40865C", blueBackgroundColor: "#446995", - orangeBackgroundColor: "#AA5252", + orangeBackgroundColor: "#BE6650", + redBackgroundColor: "#AA5251", dataFontColor: white, dataFontColorBlack: black, diff --git a/packages/shared/themes/dark.ts b/packages/shared/themes/dark.ts index 57ba769a9b..edc4502fba 100644 --- a/packages/shared/themes/dark.ts +++ b/packages/shared/themes/dark.ts @@ -3024,7 +3024,8 @@ const Dark: TTheme = { backgroundColorDark: "#282828", greenBackgroundColor: "#40865C", blueBackgroundColor: "#446995", - orangeBackgroundColor: "#AA5252", + orangeBackgroundColor: "#BE6650", + redBackgroundColor: "#AA5251", dataFontColor: white, dataFontColorBlack: white, From 7042e3fd4d9342bc9d387a2612272348109f18c7 Mon Sep 17 00:00:00 2001 From: Ilya Oleshko Date: Fri, 28 Jun 2024 17:12:59 +0300 Subject: [PATCH 030/167] Client: PortalSettings: Branding: Added new editor white label logo preview --- .../categories/common/Branding/StyledWhitelabel.js | 5 +++++ .../common/Branding/sub-components/logo.js | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/client/src/pages/PortalSettings/categories/common/Branding/StyledWhitelabel.js b/packages/client/src/pages/PortalSettings/categories/common/Branding/StyledWhitelabel.js index f5af88b57b..722eb1c4b4 100644 --- a/packages/client/src/pages/PortalSettings/categories/common/Branding/StyledWhitelabel.js +++ b/packages/client/src/pages/PortalSettings/categories/common/Branding/StyledWhitelabel.js @@ -187,6 +187,11 @@ const WhiteLabelWrapper = styled.div` props.theme.client.settings.common.whiteLabel.orangeBackgroundColor}; } + .background-red { + background-color: ${(props) => + props.theme.client.settings.common.whiteLabel.redBackgroundColor}; + } + .background-light { background-color: ${(props) => props.theme.client.settings.common.whiteLabel.backgroundColorLight}; diff --git a/packages/client/src/pages/PortalSettings/categories/common/Branding/sub-components/logo.js b/packages/client/src/pages/PortalSettings/categories/common/Branding/sub-components/logo.js index c6b629a525..8c73aaf357 100644 --- a/packages/client/src/pages/PortalSettings/categories/common/Branding/sub-components/logo.js +++ b/packages/client/src/pages/PortalSettings/categories/common/Branding/sub-components/logo.js @@ -65,18 +65,22 @@ const Logo = (props) => { )} {isEditor ? (
- + +
) : ( From d73476dba266382de89ee1fc25d46c4bb9055c67 Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Fri, 28 Jun 2024 17:20:49 +0300 Subject: [PATCH 031/167] Web: Files: fixed getFolderModel --- packages/client/src/store/ContextOptionsStore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/store/ContextOptionsStore.js b/packages/client/src/store/ContextOptionsStore.js index 0f603b87f3..2e03b33a4d 100644 --- a/packages/client/src/store/ContextOptionsStore.js +++ b/packages/client/src/store/ContextOptionsStore.js @@ -2542,7 +2542,7 @@ class ContextOptionsStore { showUploadFolder ? uploadFolder : null, ]; - if (mainButtonItemsList && enablePlugins) { + if (mainButtonItemsList && enablePlugins && !isSectionMenu) { const pluginItems = []; mainButtonItemsList.forEach((option) => { From 7227b1d35eeaa74ee6b0e1f33a784c1adecaece8 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Sun, 30 Jun 2024 14:47:56 +0300 Subject: [PATCH 032/167] Fix Bug 68933 Can't see the last rows in the Sync LDAP data drop down lists --- packages/shared/components/cron/sub-components/Select.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/shared/components/cron/sub-components/Select.tsx b/packages/shared/components/cron/sub-components/Select.tsx index d179c23454..6218dad975 100644 --- a/packages/shared/components/cron/sub-components/Select.tsx +++ b/packages/shared/components/cron/sub-components/Select.tsx @@ -118,6 +118,7 @@ export const Select = ({ selectedOption={selectedOption} dropDownMaxHeight={dropDownMaxHeight} isDisabled={isDisabled} + directionY="both" /> ); From 26dfc2f9bf6d6152a0c0dbba4e1237fadb44c2ed Mon Sep 17 00:00:00 2001 From: Akmal Isomadinov Date: Mon, 1 Jul 2024 12:41:47 +0500 Subject: [PATCH 033/167] Doceditor:Utils:Actions Fixed Bug 68906 --- packages/doceditor/src/utils/actions.ts | 3 ++- packages/shared/utils/tryParseToNumber.ts | 30 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 packages/shared/utils/tryParseToNumber.ts diff --git a/packages/doceditor/src/utils/actions.ts b/packages/doceditor/src/utils/actions.ts index c162958520..ad78e8639d 100644 --- a/packages/doceditor/src/utils/actions.ts +++ b/packages/doceditor/src/utils/actions.ts @@ -30,6 +30,7 @@ import { headers } from "next/headers"; import { createRequest } from "@docspace/shared/utils/next-ssr-helper"; import { TenantStatus, EditorConfigErrorType } from "@docspace/shared/enums"; +import { tryParseToNumber } from "@docspace/shared/utils/tryParseToNumber"; import type { TDocServiceLocation, TFile, @@ -73,7 +74,7 @@ export async function fileCopyAs( "POST", JSON.stringify({ destTitle, - destFolderId: +destFolderId, + destFolderId: tryParseToNumber(destFolderId), enableExternalExt, password, }), diff --git a/packages/shared/utils/tryParseToNumber.ts b/packages/shared/utils/tryParseToNumber.ts new file mode 100644 index 0000000000..97f1f8c181 --- /dev/null +++ b/packages/shared/utils/tryParseToNumber.ts @@ -0,0 +1,30 @@ +// (c) Copyright Ascensio System SIA 2009-2024 +// +// This program is a free software product. +// You can redistribute it and/or modify it under the terms +// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software +// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended +// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of +// any third-party rights. +// +// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty +// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see +// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html +// +// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021. +// +// The interactive user interfaces in modified source and object code versions of the Program must +// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3. +// +// Pursuant to Section 7(b) of the License you must retain the original Product logo when +// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under +// trademark law for use of our trademarks. +// +// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing +// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0 +// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode +export const tryParseToNumber = (num: string) => { + const parse = +num; + + return Number.isNaN(parse) ? num : parse; +}; From a42292cbc4ff037c1a0fac8454cb2b633068daeb Mon Sep 17 00:00:00 2001 From: Tatiana Lopaeva Date: Mon, 1 Jul 2024 13:54:14 +0300 Subject: [PATCH 034/167] Fix bug 68260 - Accounts. Add a display of the user's role and a description of the role to his profile card. --- .../People/RowView/userContent.js | 21 +- .../Body/sub-components/main-profile/index.js | 370 ++++++++++-------- .../main-profile/styled-main-profile.js | 102 +++-- packages/shared/utils/common.ts | 36 ++ 4 files changed, 307 insertions(+), 222 deletions(-) diff --git a/packages/client/src/pages/Home/Section/AccountsBody/People/RowView/userContent.js b/packages/client/src/pages/Home/Section/AccountsBody/People/RowView/userContent.js index ea2d860234..1196c5e30d 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/People/RowView/userContent.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/People/RowView/userContent.js @@ -35,6 +35,7 @@ import { Link } from "@docspace/shared/components/link"; import Badges from "../../Badges"; import { tablet, mobile } from "@docspace/shared/utils/device"; import { PRODUCT_NAME } from "@docspace/shared/constants"; +import { getUserTypeName } from "@docspace/shared/utils/common"; const StyledRowContent = styled(RowContent)` @media ${tablet} { @@ -89,6 +90,9 @@ const UserContent = ({ isCollaborator, isSSO, isLDAP, + isOwner, + isAdmin, + isRoomAdmin, } = item; const nameColor = @@ -100,16 +104,13 @@ const UserContent = ({ ? theme.peopleTableRow.pendingSideInfoColor : theme.peopleTableRow.sideInfoColor; - const roleLabel = - role === "owner" - ? t("Common:Owner") - : role === "admin" - ? t("Common:PortalAdmin", { productName: PRODUCT_NAME }) - : isCollaborator - ? t("Common:PowerUser") - : isVisitor - ? t("Common:User") - : t("Common:RoomAdmin"); + const roleLabel = getUserTypeName( + isOwner, + isAdmin, + isRoomAdmin, + isCollaborator, + t, + ); const isPaidUser = !standalone && !isVisitor; diff --git a/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/index.js b/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/index.js index 538d07a4ab..c727b97f0d 100644 --- a/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/index.js +++ b/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/index.js @@ -43,7 +43,12 @@ import { Badge } from "@docspace/shared/components/badge"; import { isMobileOnly } from "react-device-detect"; import { toastr } from "@docspace/shared/components/toast"; import { showEmailActivationToast } from "SRC_DIR/helpers/people-helpers"; -import { getUserRole, convertLanguage } from "@docspace/shared/utils/common"; +import { + getUserRole, + convertLanguage, + getUserTypeName, + getUserTypeDescription, +} from "@docspace/shared/utils/common"; import BetaBadge from "../../../../../../components/BetaBadgeWrapper"; import { Trans } from "react-i18next"; @@ -91,6 +96,8 @@ const MainProfile = (props) => { const { interfaceDirection } = useTheme(); const dirTooltip = interfaceDirection === "rtl" ? "left" : "right"; + const { isOwner, isAdmin, isRoomAdmin, isCollaborator } = profile; + useEffect(() => { checkWidth(); window.addEventListener("resize", checkWidth); @@ -226,171 +233,192 @@ const MainProfile = (props) => { currentColorScheme={currentColorScheme} >
-
- {t("Common:Name")} + {t("Common:Name")} +
+ + {profile.displayName} + + {profile.isSSO && ( + <> + + + {t("PeopleTranslations:SSOAccountTooltip")} + + + )} - - {t("Common:Email")} - + {profile.isLDAP && ( + <> + + + {t("PeopleTranslations:LDAPAccountTooltip")} + + + )} - - {t("Common:Password")} - + {!profile.isSSO && !profile.isLDAP && ( + setChangeNameVisible(true)} + /> + )} +
- - {t("Common:Language")} + {t("Common:Email")} +
+
+ + {profile.email} + + {withActivationBar && ( + ( + {content} + )} + place="bottom" + /> + )} + {!profile.isSSO && !profile.isLDAP && ( + + )} +
+ {withActivationBar && ( +
+ + + {t("SendAgain")} + +
+ )} +
+ + + {t("Common:Password")} + +
+ ******** + {!profile.isSSO && !profile.isLDAP && ( + + )} +
+ + + {t("Common:Language")} + + +
+ + {isBetaLanguage && } +
+ + {t("Common:Type")} +
+ + {getUserTypeName( + isOwner, + isAdmin, + isRoomAdmin, + isCollaborator, + t, + )} + + + {!isOwner && ( - -
- -
-
- - {profile.displayName} - - {profile.isSSO && ( - <> - - - {t("PeopleTranslations:SSOAccountTooltip")} - - - )} - - {profile.isLDAP && ( - <> - - - {t("PeopleTranslations:LDAPAccountTooltip")} - - - )} - - {!profile.isSSO && !profile.isLDAP && ( - setChangeNameVisible(true)} - /> - )} -
-
-
- - {profile.email} - - {withActivationBar && ( - ( - {content} - )} - place="bottom" - /> + tooltipContent={getUserTypeDescription( + isAdmin, + isRoomAdmin, + isCollaborator, + t, )} - {!profile.isSSO && !profile.isLDAP && ( - - )} -
- {withActivationBar && ( -
- - - {t("SendAgain")} - -
- )} -
-
- ******** - {!profile.isSSO && !profile.isLDAP && ( - - )} -
-
- - {isBetaLanguage && } -
+ )}
+
@@ -479,6 +507,37 @@ const MainProfile = (props) => { onClick={onChangePasswordClick} />
+
+
+ + {t("Common:Type")} + + + {getUserTypeName( + isOwner, + isAdmin, + isRoomAdmin, + isCollaborator, + t, + )} + +
+ {!isOwner && ( +
+ +
+ )} +
@@ -517,7 +576,6 @@ const MainProfile = (props) => {
- {/* */} {changeAvatarVisible && ( diff --git a/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/styled-main-profile.js b/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/styled-main-profile.js index 063251fc0c..e8b7edd437 100644 --- a/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/styled-main-profile.js +++ b/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/styled-main-profile.js @@ -104,76 +104,66 @@ export const StyledInfo = styled.div` display: grid; grid-template-columns: minmax(75px, auto) minmax(0, 1fr); gap: 24px; + row-gap: 16px; max-width: 100%; - .profile-block { + .profile-block-field { display: flex; - flex-direction: column; + gap: 8px; + height: 20px; + align-items: center; + line-height: 20px; + } - .profile-block-field { + .sso-badge, + .ldap-badge { + ${(props) => + props.theme.interfaceDirection === "rtl" + ? css` + margin-right: 4px; + ` + : css` + margin-left: 4px; + `} + } + + .email-container { + .send-again-desktop { display: flex; - gap: 8px; - height: 20px; - align-items: center; - line-height: 20px; } + } + .user-type-container { + display: flex; + align-items: baseline; + gap: 8px; + } - .sso-badge, - .ldap-badge { + .language-combo-box-wrapper { + display: flex; + height: 28px; + align-items: center; + gap: 8px; + + ${(props) => + props.theme.interfaceDirection === "rtl" + ? css` + margin-right: -8px; + ` + : css` + margin-left: -8px; + `} + + .language-combo-box .combo-button { + padding-inline-end: 0px; ${(props) => props.theme.interfaceDirection === "rtl" ? css` - margin-right: 4px; + padding-right: 8px; ` : css` - margin-left: 4px; + padding-left: 8px; `} } - - .profile-block-password { - margin-top: 16px; - } - - .email-container { - margin-top: 16px; - - .send-again-desktop { - display: flex; - } - } - .language-combo-box-wrapper { - display: flex; - height: 28px; - align-items: center; - margin-top: 11px; - gap: 8px; - - ${(props) => - props.theme.interfaceDirection === "rtl" - ? css` - margin-right: -8px; - ` - : css` - margin-left: -8px; - `} - - .language-combo-box .combo-button { - padding-inline-end: 0px; - ${(props) => - props.theme.interfaceDirection === "rtl" - ? css` - padding-right: 8px; - ` - : css` - padding-left: 8px; - `} - } - - @media ${tablet} { - height: 36px; - margin-top: 7px; - } - } } } diff --git a/packages/shared/utils/common.ts b/packages/shared/utils/common.ts index 658059a19e..42ee08e75e 100644 --- a/packages/shared/utils/common.ts +++ b/packages/shared/utils/common.ts @@ -1100,6 +1100,42 @@ export function getLogoUrl( return `/logo.ashx?logotype=${logoType}&dark=${dark}&default=${def}`; } +export const getUserTypeName = ( + isOwner: boolean, + isPortalAdmin: boolean, + isRoomAdmin: boolean, + isCollaborator: boolean, + t: TTranslation, +) => { + if (isOwner) return t("Common:Owner"); + + if (isPortalAdmin) + return t("Common:PortalAdmin", { productName: PRODUCT_NAME }); + + if (isRoomAdmin) return t("Common:RoomAdmin"); + + if (isCollaborator) return t("Common:PowerUser"); + + return t("Common:User"); +}; + +export const getUserTypeDescription = ( + isPortalAdmin: boolean, + isRoomAdmin: boolean, + isCollaborator: boolean, + t: TTranslation, +) => { + if (isPortalAdmin) + return t("Translations:RolePortalAdminDescription", { + productName: PRODUCT_NAME, + }); + + if (isRoomAdmin) return t("Translations:RoleRoomAdminDescription"); + + if (isCollaborator) return t("Translations:RolePowerUserDescription"); + + return t("Translations:RoleViewerDescription"); +}; export function setLanguageForUnauthorized(culture: string) { setCookie(LANGUAGE, culture, { "max-age": COOKIE_EXPIRATION_YEAR, From e949aa430fb1a118f64ea45f5c495ceaf4ae60fc Mon Sep 17 00:00:00 2001 From: Tatiana Lopaeva Date: Mon, 1 Jul 2024 13:56:30 +0300 Subject: [PATCH 035/167] Deleted useless code. --- .../Body/sub-components/main-profile/index.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/index.js b/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/index.js index c727b97f0d..b2ba119fa1 100644 --- a/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/index.js +++ b/packages/client/src/pages/Profile/Section/Body/sub-components/main-profile/index.js @@ -334,12 +334,7 @@ const MainProfile = (props) => { )}
- - {t("Common:Password")} - + {t("Common:Password")}
******** {!profile.isSSO && !profile.isLDAP && ( @@ -352,11 +347,7 @@ const MainProfile = (props) => { )}
- + {t("Common:Language")} Date: Mon, 1 Jul 2024 14:09:48 +0200 Subject: [PATCH 036/167] Client: DeleteProfileEverDialog: Fix bug when deleted account remains in info panel --- .../src/components/dialogs/DeleteProfileEverDialog/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/components/dialogs/DeleteProfileEverDialog/index.js b/packages/client/src/components/dialogs/DeleteProfileEverDialog/index.js index 4d2e474a88..0c597931c3 100644 --- a/packages/client/src/components/dialogs/DeleteProfileEverDialog/index.js +++ b/packages/client/src/components/dialogs/DeleteProfileEverDialog/index.js @@ -136,7 +136,7 @@ const DeleteProfileEverDialogComponent = (props) => { .catch((error) => toastr.error(error)) .finally(() => { setIsRequestRunning(false); - needResetUserSelection && setSelected("close"); + setSelected("close"); onClose(); }); }; From 7bfd9c64ed332ba0ad7b3ccc35eb59896f097c36 Mon Sep 17 00:00:00 2001 From: Vlada Gazizova <94864088+gazizova-vlada@users.noreply.github.com> Date: Mon, 1 Jul 2024 15:21:16 +0300 Subject: [PATCH 037/167] Client:Accounts:Table:Added margin padding to prevent fields from overlapping each other in Accounts. --- .../InsideGroup/TableView/TableContainer.js | 6 ++++++ .../InsideGroup/TableView/TableRow.js | 16 +++++++++++++++- .../People/TableView/TableContainer.js | 6 ++++++ .../AccountsBody/People/TableView/TableRow.js | 9 ++++++++- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableContainer.js b/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableContainer.js index 53519efb12..bf403b0dce 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableContainer.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableContainer.js @@ -125,6 +125,12 @@ const StyledTableContainer = styled(TableContainer)` } } } + + .table-container_user-name-cell { + .additional-badges { + margin-inline-end: 12px; + } + } `; StyledTableContainer.defaultProps = { theme: Base }; diff --git a/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableRow.js b/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableRow.js index ba0e3e96bf..3e99fc86f9 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableRow.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/InsideGroup/TableView/TableRow.js @@ -117,6 +117,18 @@ const StyledPeopleRow = styled(TableRow)` margin-inline-start: -8px; } + .table-cell_type { + p { + margin-inline-end: 12px; + } + } + + .table-cell_email { + a { + margin-inline-end: 12px; + } + } + .groups-combobox, .type-combobox { visibility: ${(props) => (props.hideColumns ? "hidden" : "visible")}; @@ -132,6 +144,8 @@ const StyledPeopleRow = styled(TableRow)` .groups-combobox, .room-combobox { padding-inline-start: 8px; + padding-inline-end: 12px; + overflow: hidden; } @@ -584,7 +598,7 @@ const InsideGroupTableRow = (props) => {
*/} {emailAccountsInsideGroupColumnIsEnabled ? ( - + { */} {emailAccountsColumnIsEnabled ? ( - + Date: Mon, 1 Jul 2024 16:42:35 +0300 Subject: [PATCH 038/167] Doceditor: fix double base path in URL for firefox --- .../doceditor/src/app/(root)/create/page.tsx | 3 +++ packages/doceditor/src/middleware.ts | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/doceditor/src/app/(root)/create/page.tsx b/packages/doceditor/src/app/(root)/create/page.tsx index 10f3502c61..6c98308520 100644 --- a/packages/doceditor/src/app/(root)/create/page.tsx +++ b/packages/doceditor/src/app/(root)/create/page.tsx @@ -121,6 +121,9 @@ async function Page({ searchParams }: { searchParams: TSearchParams }) { } const redirectURL = `/doceditor?${searchParams.toString()}`; + + console.log("====", redirectURL); + return permanentRedirect(redirectURL); } diff --git a/packages/doceditor/src/middleware.ts b/packages/doceditor/src/middleware.ts index eca5065bb4..3372790c80 100644 --- a/packages/doceditor/src/middleware.ts +++ b/packages/doceditor/src/middleware.ts @@ -29,10 +29,24 @@ import type { NextRequest } from "next/server"; // This function can be marked `async` if using `await` inside export function middleware(request: NextRequest) { - return NextResponse.json({ status: "healthy" }, { status: 200 }); + const host = request.headers.get("x-forwarded-host"); + const proto = request.headers.get("x-forwarded-proto"); + + const redirectUrl = `${proto}://${host}`; + + if (request.nextUrl.pathname === "/health") { + console.log("Get doceditor health check for portal: ", redirectUrl); + return NextResponse.json({ status: "healthy" }, { status: 200 }); + } + + if (request.nextUrl.pathname.includes("doceditor")) { + return NextResponse.redirect( + `${redirectUrl}/doceditor${request.nextUrl.search}`, + ); + } } // See "Matching Paths" below to learn more export const config = { - matcher: "/health", + matcher: ["/health", "/doceditor"], }; From 687928d5d441fff56519934928abae9e65db9c9d Mon Sep 17 00:00:00 2001 From: Timofey Boyko Date: Mon, 1 Jul 2024 16:44:54 +0300 Subject: [PATCH 039/167] Doceditor: delete console log --- packages/doceditor/src/app/(root)/create/page.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/doceditor/src/app/(root)/create/page.tsx b/packages/doceditor/src/app/(root)/create/page.tsx index 6c98308520..4d4761a76c 100644 --- a/packages/doceditor/src/app/(root)/create/page.tsx +++ b/packages/doceditor/src/app/(root)/create/page.tsx @@ -122,8 +122,6 @@ async function Page({ searchParams }: { searchParams: TSearchParams }) { const redirectURL = `/doceditor?${searchParams.toString()}`; - console.log("====", redirectURL); - return permanentRedirect(redirectURL); } From 8417eed87d605a9181890bc43981c81093a519a2 Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Mon, 1 Jul 2024 17:02:44 +0300 Subject: [PATCH 040/167] Web: Components: Table: fixed resizing for multiple windows --- packages/shared/components/table/TableHeader.tsx | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/shared/components/table/TableHeader.tsx b/packages/shared/components/table/TableHeader.tsx index 26d896fcf8..bd466daeb2 100644 --- a/packages/shared/components/table/TableHeader.tsx +++ b/packages/shared/components/table/TableHeader.tsx @@ -424,9 +424,7 @@ class TableHeader extends React.Component< : Math.round(defaultWidth) !== Math.round(containerWidth); if (isDifferentWindowSize && !isResized) { - if (infoPanelVisible) localStorage.removeItem(columnInfoPanelStorageName); - else localStorage.removeItem(columnStorageName); - this.onResize(true); + this.resetColumns(true); return; } @@ -858,7 +856,7 @@ class TableHeader extends React.Component< } }; - resetColumns = () => { + resetColumns = (isResized: boolean = false) => { const { containerRef, columnStorageName, @@ -898,12 +896,13 @@ class TableHeader extends React.Component< for (const col of columns) { if (col.default) { str += `${wideColumnSize} `; - } else + } else { str += col.enable ? col.defaultSize ? `${col.defaultSize}px ` : `${otherColumns} ` : "0px "; + } } str += `${settingsSize}px`; @@ -911,7 +910,7 @@ class TableHeader extends React.Component< if (container) container.style.gridTemplateColumns = str; if (this.headerRef && this.headerRef.current) { this.headerRef.current.style.gridTemplateColumns = str; - this.headerRef.current.style.width = `${containerWidth}px`; + this.headerRef.current.style.width = `${container.clientWidth}px`; } if (str) { @@ -922,7 +921,7 @@ class TableHeader extends React.Component< } } - this.onResize(); + this.onResize(isResized); }; render() { From 09151b37a4d849a39e449bb58210dd868331ba44 Mon Sep 17 00:00:00 2001 From: Akmal Isomadinov Date: Mon, 1 Jul 2024 19:54:48 +0500 Subject: [PATCH 041/167] Client:Store:FilesStore Fixed Bug 68425 --- packages/client/src/store/FilesStore.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index a971ca639e..5c70d40db2 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -26,6 +26,9 @@ import axios from "axios"; import { makeAutoObservable, runInAction } from "mobx"; +import merge from "lodash/merge"; +import cloneDeep from "lodash/cloneDeep"; + import api from "@docspace/shared/api"; import { FileType, @@ -388,6 +391,9 @@ class FilesStore { const { socketSubscribers } = socketHelper; const pathParts = `FILE-${id}`; + const { isVisible, infoPanelSelection, setInfoPanelSelection } = + this.infoPanelStore; + if (!socketSubscribers.has(pathParts)) return; const foundIndex = this.files.findIndex((x) => x.id === id); @@ -406,7 +412,15 @@ class FilesStore { this.files[foundIndex].fileStatus & ~FileStatus.IsEditing, ); - this.getFileInfo(id); + this.getFileInfo(id).then((file) => { + if ( + isVisible && + file.id === infoPanelSelection?.id && + infoPanelSelection?.fileExst === file.fileExst + ) { + setInfoPanelSelection(merge(cloneDeep(infoPanelSelection), file)); + } + }); this.createThumbnail(this.files[foundIndex]); }); From 5b618749c388e01681c4700692a7a76c0d343768 Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Mon, 1 Jul 2024 18:10:17 +0300 Subject: [PATCH 042/167] Web: Components: Table: fixed resetColumns --- packages/shared/components/table/TableHeader.tsx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/shared/components/table/TableHeader.tsx b/packages/shared/components/table/TableHeader.tsx index bd466daeb2..125614317c 100644 --- a/packages/shared/components/table/TableHeader.tsx +++ b/packages/shared/components/table/TableHeader.tsx @@ -217,7 +217,6 @@ class TableHeader extends React.Component< }; const ResetColumnsSize = () => { - localStorage.removeItem(columnStorageName); this.resetColumns(); return true; }; @@ -691,9 +690,7 @@ class TableHeader extends React.Component< ).length; if (enableColumnsLength !== 1) { - localStorage.removeItem(columnStorageName); this.resetColumns(); - return; } } @@ -865,8 +862,8 @@ class TableHeader extends React.Component< infoPanelVisible, } = this.props; - localStorage.removeItem(columnStorageName); - localStorage.removeItem(columnInfoPanelStorageName); + if (!infoPanelVisible) localStorage.removeItem(columnStorageName); + else localStorage.removeItem(columnInfoPanelStorageName); let str = ""; From b8e66bf844d07453c646b65cbfda921907d2a2e5 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Mon, 1 Jul 2024 23:05:39 +0700 Subject: [PATCH 043/167] Shared:Components:Tabs: change colors in active tabs --- packages/shared/components/tabs/Tabs.styled.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/packages/shared/components/tabs/Tabs.styled.ts b/packages/shared/components/tabs/Tabs.styled.ts index d799254585..d9526bd0f2 100644 --- a/packages/shared/components/tabs/Tabs.styled.ts +++ b/packages/shared/components/tabs/Tabs.styled.ts @@ -161,7 +161,7 @@ export const Tab = styled.div<{ line-height: 20px; cursor: pointer; opacity: ${(props) => (props.isDisabled && props.$type === TabsTypes.Secondary ? 0.6 : 1)}; - pointer-events: ${(props) => props.isDisabled && props.$type === TabsTypes.Secondary && "none"}; + pointer-events: ${(props) => ((props.isDisabled && props.$type === TabsTypes.Secondary) || props.isActive) && "none"}; user-select: none; padding: ${(props) => @@ -202,9 +202,6 @@ export const Tab = styled.div<{ !props.isActive && props.theme.tabs.hoverTextColorPrimary}; - opacity: ${(props) => - props.$type === TabsTypes.Primary && props.isActive && 0.85}; - background-color: ${(props) => props.$type === TabsTypes.Secondary && !props.isActive && @@ -222,9 +219,6 @@ export const Tab = styled.div<{ !props.isActive && props.theme.tabs.pressedTextColorPrimary}; - opacity: ${(props) => - props.$type === TabsTypes.Primary && props.isActive && 1}; - background-color: ${(props) => props.$type === TabsTypes.Secondary && !props.isActive && From dd82910a8e0e2e5db9adea4aa51189363031f4df Mon Sep 17 00:00:00 2001 From: Aleksandr Lushkin Date: Mon, 1 Jul 2024 18:21:01 +0200 Subject: [PATCH 044/167] Client: SelectionPeopleStore: Fix showing old user right in table group menu after changing user role --- packages/client/src/store/SelectionPeopleStore.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/client/src/store/SelectionPeopleStore.js b/packages/client/src/store/SelectionPeopleStore.js index 88e15ce2a7..7860f93ea4 100644 --- a/packages/client/src/store/SelectionPeopleStore.js +++ b/packages/client/src/store/SelectionPeopleStore.js @@ -56,6 +56,10 @@ class SelectionStore { if (hasBufferSelection && this.bufferSelection.id === el.id) this.setBufferSelection(el); }); + + if (hasSelection) { + this.recalculateUsersRights(); + } }; resetUsersRight = () => { @@ -80,6 +84,11 @@ class SelectionStore { } }; + recalculateUsersRights = () => { + this.resetUsersRight(); + this.selection.forEach((u) => this.incrementUsersRights(u)); + }; + setSelection = (selection) => { // console.log("setSelection", { selection }); this.selection = selection; From cd0acf912b23771145cf6aa40ef9ba3272d4d99d Mon Sep 17 00:00:00 2001 From: Timofey Boyko Date: Tue, 2 Jul 2024 12:00:02 +0300 Subject: [PATCH 045/167] Client: fix socket create action after delete archived room --- packages/client/src/store/FilesActionsStore.js | 1 + packages/client/src/store/FilesStore.js | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/client/src/store/FilesActionsStore.js b/packages/client/src/store/FilesActionsStore.js index 35698a2c4e..0fa4f15751 100644 --- a/packages/client/src/store/FilesActionsStore.js +++ b/packages/client/src/store/FilesActionsStore.js @@ -894,6 +894,7 @@ class FilesActionStore { ) .finally(() => { this.setGroupMenuBlocked(false); + this.filesStore.setOperationAction(false); }); } else { addActiveItems(null, [itemId], destFolderId); diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index 5c70d40db2..a530afe7e6 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -792,8 +792,6 @@ class FilesStore { }; removeActiveItem = (file) => { - console.log(this.activeFiles); - this.activeFiles = this.activeFiles?.filter((item) => item.id !== file.id) ?? []; }; From 77b1a9675a95a5ebf2420967d253bde3fb489b72 Mon Sep 17 00:00:00 2001 From: Timofey Boyko Date: Tue, 2 Jul 2024 12:09:40 +0300 Subject: [PATCH 046/167] Shared:Components:RoomIcon: add check for empty title --- packages/shared/components/room-icon/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared/components/room-icon/index.tsx b/packages/shared/components/room-icon/index.tsx index f25e0a7809..ce04604768 100644 --- a/packages/shared/components/room-icon/index.tsx +++ b/packages/shared/components/room-icon/index.tsx @@ -160,7 +160,7 @@ const RoomIcon = ({ }: RoomIconProps) => { const [correctImage, setCorrectImage] = React.useState(true); - const titleWithoutNumberDuplicate = title.replace(/\(\d+\)/, ""); + const titleWithoutNumberDuplicate = title?.replace(/\(\d+\)/, ""); const titleWithoutSpaces = titleWithoutNumberDuplicate .replace(/\s+/g, " ") .trim(); From 8c75ce7e2bfda401759c94b22c5a03662c5e2bc2 Mon Sep 17 00:00:00 2001 From: Aleksandr Lushkin Date: Tue, 2 Jul 2024 11:24:29 +0200 Subject: [PATCH 047/167] Client: UsersStore: Fix bug when changing user status doesn't update table group menu --- packages/client/src/store/UsersStore.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/client/src/store/UsersStore.js b/packages/client/src/store/UsersStore.js index 812968421f..c5322adaa0 100644 --- a/packages/client/src/store/UsersStore.js +++ b/packages/client/src/store/UsersStore.js @@ -168,6 +168,10 @@ class UsersStore { const userIndex = this.users.findIndex((x) => x.id === user.id); if (userIndex !== -1) this.users[userIndex] = user; }); + + if (!this.needResetUserSelection) { + this.peopleStore.selectionStore.updateSelection(this.peopleList); + } } return users; From 0a1316570c86ac7dce18f21f67aaf2d0c36ba5f0 Mon Sep 17 00:00:00 2001 From: Aleksandr Lushkin Date: Tue, 2 Jul 2024 11:36:40 +0200 Subject: [PATCH 048/167] Client: DataReassignmentDialog: Fix bug when deleted account remains in info panel after deleting with data reassignment --- .../src/components/dialogs/DataReassignmentDialog/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/client/src/components/dialogs/DataReassignmentDialog/index.js b/packages/client/src/components/dialogs/DataReassignmentDialog/index.js index 12d9304150..610bf529d1 100644 --- a/packages/client/src/components/dialogs/DataReassignmentDialog/index.js +++ b/packages/client/src/components/dialogs/DataReassignmentDialog/index.js @@ -178,7 +178,9 @@ const DataReassignmentDialog = ({ toastr.error(error?.response?.data?.error?.message); }) .finally(() => { - needResetUserSelection && setSelected("close"); + if (isDeleteProfile || needResetUserSelection) { + setSelected("close"); + } }); }; From 8e1c73cdf75446b68fcc9f3c7bfaf2479146c42b Mon Sep 17 00:00:00 2001 From: Timofey Boyko Date: Tue, 2 Jul 2024 12:57:39 +0300 Subject: [PATCH 049/167] Shared:Components:Selector: fix long name for room --- packages/shared/components/selector/Selector.styled.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/shared/components/selector/Selector.styled.ts b/packages/shared/components/selector/Selector.styled.ts index 8a24e2ca1f..0220e30463 100644 --- a/packages/shared/components/selector/Selector.styled.ts +++ b/packages/shared/components/selector/Selector.styled.ts @@ -243,6 +243,10 @@ const StyledItem = styled.div<{ } } + .item-logo { + min-width: 32px; + } + ${(props) => props.isDisabled ? css` From b4394f19c92b759c525fa217d481d768c0ea2eef Mon Sep 17 00:00:00 2001 From: Akmal Isomadinov Date: Tue, 2 Jul 2024 15:09:38 +0500 Subject: [PATCH 050/167] Client:Store:Components:UploadPanel:FileRow Fixed Bug 68936 --- packages/client/src/components/panels/StyledPanels.js | 1 - packages/client/src/components/panels/UploadPanel/FileRow.js | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/client/src/components/panels/StyledPanels.js b/packages/client/src/components/panels/StyledPanels.js index a3d2497d32..ad65ed113a 100644 --- a/packages/client/src/components/panels/StyledPanels.js +++ b/packages/client/src/components/panels/StyledPanels.js @@ -271,7 +271,6 @@ const StyledHeaderContent = styled.div` `} border-bottom: ${(props) => props.theme.filesPanels.sharing.borderBottom}; - } .files-operations-header, .sharing_panel-header { diff --git a/packages/client/src/components/panels/UploadPanel/FileRow.js b/packages/client/src/components/panels/UploadPanel/FileRow.js index 5d2be6fde5..378a47d527 100644 --- a/packages/client/src/components/panels/UploadPanel/FileRow.js +++ b/packages/client/src/components/panels/UploadPanel/FileRow.js @@ -53,6 +53,8 @@ const StyledFileRow = styled(Row)` height: 100%; + padding-inline-end: 16px; + .styled-element, .row_content { ${(props) => From 38fdec284b680d888f6d98c0b758f73588270f06 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Tue, 2 Jul 2024 13:16:49 +0300 Subject: [PATCH 051/167] Fix Bug 68950 Prevent duplicate confirm email toast --- packages/login/src/components/LoginForm/index.tsx | 8 +++++++- .../shared/components/toast/sub-components/Toastr.tsx | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/login/src/components/LoginForm/index.tsx b/packages/login/src/components/LoginForm/index.tsx index f40a4dff7c..a82d363662 100644 --- a/packages/login/src/components/LoginForm/index.tsx +++ b/packages/login/src/components/LoginForm/index.tsx @@ -70,6 +70,7 @@ const LoginForm = ({ }: LoginFormProps) => { const { isLoading, isModalOpen, ldapDomain } = useContext(LoginValueContext); const { setIsLoading } = useContext(LoginDispatchContext); + const toastId = useRef(null); const searchParams = useSearchParams(); @@ -184,7 +185,12 @@ const LoginForm = ({ const text = `${messageEmailConfirmed} ${messageAuthorize}`; - if (confirmedEmail && ready) toastr.success(text); + if ( + confirmedEmail && + ready && + !toastr.isActive(toastId.current || "confirm-email-toast") + ) + toastId.current = toastr.success(text); if (authError && ready) toastr.error(t("Common:ProviderLoginError")); }, [message, confirmedEmail, t, ready, authError, authCallback]); diff --git a/packages/shared/components/toast/sub-components/Toastr.tsx b/packages/shared/components/toast/sub-components/Toastr.tsx index 1accdf5c43..1b81431d10 100644 --- a/packages/shared/components/toast/sub-components/Toastr.tsx +++ b/packages/shared/components/toast/sub-components/Toastr.tsx @@ -27,7 +27,7 @@ "use client"; import React from "react"; -import { toast } from "react-toastify"; +import { Id, toast } from "react-toastify"; import styled from "styled-components"; import CheckToastReactSvg from "PUBLIC_DIR/images/check.toast.react.svg"; @@ -254,12 +254,17 @@ function clear() { return toast.dismiss(); } +function isActive(id: Id) { + return toast.isActive(id); +} + const toastr = { clear, error, info, success, warning, + isActive, }; export { toastr }; From 72d9b4a0df916a49648088adddda5b9dd924bf4d Mon Sep 17 00:00:00 2001 From: Timofey Boyko Date: Tue, 2 Jul 2024 13:43:06 +0300 Subject: [PATCH 052/167] Fixed Bug 68940 - Rooms.FormRoom. When you click the Back button inside a Form room on the Start filling panel, a list of all rooms is displayed, including rooms from the Archive. --- .../shared/selectors/Files/FilesSelector.types.ts | 1 + .../shared/selectors/Files/hooks/useFilesHelper.ts | 12 ++++++++++-- packages/shared/selectors/Files/index.tsx | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/shared/selectors/Files/FilesSelector.types.ts b/packages/shared/selectors/Files/FilesSelector.types.ts index 8ea8cd7552..8bd2e659a1 100644 --- a/packages/shared/selectors/Files/FilesSelector.types.ts +++ b/packages/shared/selectors/Files/FilesSelector.types.ts @@ -135,6 +135,7 @@ export type UseFilesHelpersProps = { setIsFirstLoad: (value: boolean) => void; withCreate: boolean; setSelectedItemId: (value: number | string) => void; + setSelectedItemType: (value?: "rooms" | "files") => void; }; export type TUseInputItemHelper = { diff --git a/packages/shared/selectors/Files/hooks/useFilesHelper.ts b/packages/shared/selectors/Files/hooks/useFilesHelper.ts index 87773b87de..0214849fac 100644 --- a/packages/shared/selectors/Files/hooks/useFilesHelper.ts +++ b/packages/shared/selectors/Files/hooks/useFilesHelper.ts @@ -82,6 +82,7 @@ const useFilesHelper = ({ setIsFirstLoad, withCreate, setSelectedItemId, + setSelectedItemType, }: UseFilesHelpersProps) => { const { t } = useTranslation(["Common"]); @@ -341,14 +342,20 @@ const useFilesHelper = ({ hotkey: "f", onCreateClick: () => addInputItem(t("NewFolder"), FolderSvgUrl), onBackClick: () => { - setSelectedItemId(current.parentId); + let isRooms; setBreadCrumbs((val) => { const newVal = [...val]; - newVal.pop(); + const item = newVal.pop(); + + isRooms = !!item?.roomType; return newVal; }); + + if (isRooms) setSelectedItemType("rooms"); + + setSelectedItemId(current.parentId); }, }); } else { @@ -430,6 +437,7 @@ const useFilesHelper = ({ t, setSelectedItemId, rootThirdPartyId, + setSelectedItemType, ], ); diff --git a/packages/shared/selectors/Files/index.tsx b/packages/shared/selectors/Files/index.tsx index 8487ca92d0..6df73c71aa 100644 --- a/packages/shared/selectors/Files/index.tsx +++ b/packages/shared/selectors/Files/index.tsx @@ -240,6 +240,7 @@ const FilesSelector = ({ setIsInit, withCreate, setSelectedItemId, + setSelectedItemType, }); const onClickBreadCrumb = React.useCallback( From d2b4e4bc679d9daf7ef99c95b1ddc6da9a5515c6 Mon Sep 17 00:00:00 2001 From: Tatiana Lopaeva Date: Tue, 2 Jul 2024 13:59:47 +0300 Subject: [PATCH 053/167] Client: Confirm: Fixed validation and display error. --- .../Confirm/sub-components/createUser.js | 25 +++---------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/packages/client/src/pages/Confirm/sub-components/createUser.js b/packages/client/src/pages/Confirm/sub-components/createUser.js index 5d4804c510..00e31268e7 100644 --- a/packages/client/src/pages/Confirm/sub-components/createUser.js +++ b/packages/client/src/pages/Confirm/sub-components/createUser.js @@ -173,23 +173,14 @@ const CreateUserForm = (props) => { const onContinue = async () => { const { linkData } = props; - setIsLoading(true); - let hasError = false; - - const emailRegex = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$"; - const validationEmail = new RegExp(emailRegex); - - if (!validationEmail.test(email.trim())) { - hasError = true; - setEmailValid(!hasError); - } - - if (hasError) { - setIsLoading(false); + if (!emailValid) { + setIsEmailErrorShow(true); return; } + setIsLoading(true); + const headerKey = linkData.confirmHeader; try { @@ -255,14 +246,6 @@ const CreateUserForm = (props) => { setSnameValid(!hasError); } - const emailRegex = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$"; - const validationEmail = new RegExp(emailRegex); - - if (!validationEmail.test(email.trim())) { - hasError = true; - setEmailValid(!hasError); - } - if (!passwordValid || !password.trim()) { hasError = true; setPasswordValid(!hasError); From 22533a37f6eabd0e252a8274a746d5c51f6c2c12 Mon Sep 17 00:00:00 2001 From: Timofey Boyko Date: Tue, 2 Jul 2024 13:59:51 +0300 Subject: [PATCH 054/167] Fixed Bug 68469 - Settings: Integration. The full description of the plugin is not displayed. --- .../categories/developer-tools/PluginSDK/index.js | 4 +++- .../integration/Plugins/sub-components/PluginItem.tsx | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/client/src/pages/PortalSettings/categories/developer-tools/PluginSDK/index.js b/packages/client/src/pages/PortalSettings/categories/developer-tools/PluginSDK/index.js index 6489517604..276091707d 100644 --- a/packages/client/src/pages/PortalSettings/categories/developer-tools/PluginSDK/index.js +++ b/packages/client/src/pages/PortalSettings/categories/developer-tools/PluginSDK/index.js @@ -88,7 +88,9 @@ const PluginSDK = ({
- {p.description} + + {p.description} +