Merge branch 'hotfix/v1.1.2' into develop

# Conflicts:
#	packages/client/src/components/Article/Body/index.js
#	packages/client/src/components/panels/OperationsPanel/index.js
#	packages/client/src/pages/About/AboutContent.js
#	packages/client/src/store/FilesActionsStore.js
#	products/ASC.Files/Core/Core/Thirdparty/GoogleDrive/GoogleDriveFileDao.cs
#	yarn.lock
This commit is contained in:
Ilya Oleshko 2023-08-01 17:56:22 +03:00
commit 12558b8520
25 changed files with 235 additions and 65 deletions

View File

@ -1568,9 +1568,9 @@
<ROW Key="xml" Component="tools" FileName="*.xml" Directory="tools_Dir" Options="17"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.XmlAttributeComponent">
<ROW XmlAttribute="minlevel" XmlElement="logger" Name="minlevel" Flags="14" Order="0" Value="Trace"/>
<ROW XmlAttribute="minlevel_1" XmlElement="logger_1" Name="minlevel" Flags="14" Order="0" Value="Trace"/>
<ROW XmlAttribute="minlevel_2" XmlElement="logger_2" Name="minlevel" Flags="14" Order="0" Value="Trace"/>
<ROW XmlAttribute="minlevel" XmlElement="logger" Name="minlevel" Flags="14" Order="0" Value="Warn"/>
<ROW XmlAttribute="minlevel_1" XmlElement="logger_1" Name="minlevel" Flags="14" Order="0" Value="Warn"/>
<ROW XmlAttribute="minlevel_2" XmlElement="logger_2" Name="minlevel" Flags="14" Order="0" Value="Warn"/>
</COMPONENT>
<COMPONENT cid="caphyon.advinst.msicomp.XmlElementComponent">
<ROW XmlElement="logger" ParentElement="rules" Name="logger" Condition="ENVIRONMENT = &quot;PRODUCT.ENVIRONMENT.SUB&quot;" Order="0" Flags="22" UpdateIndexInParent="0"/>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 451 KiB

After

Width:  |  Height:  |  Size: 451 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -42,7 +42,6 @@ del /f /q build\install\win\Files\config\*.test.json
del /f /q build\install\win\Files\config\*.dev.json
::default logging to warning
%sed% -i "s/minlevel=\"Debug\""/minlevel=\"Warn\""/g" build\install\win\Files\config\nlog.config
%sed% "s_\(\"Default\":\).*,_\1 \"Warning\",_g" -i build\install\win\Files\config\appsettings.json
%sed% "s_\(\"logLevel\":\).*_\1 \"warning\"_g" -i build\install\win\Files\config\appsettings.services.json
%sed% "/\"debug-info\": {/,/}/ s/\(\"enabled\": \)\".*\"/\1\"false\"/" -i build\install\win\Files\config\appsettings.json

View File

@ -12202,6 +12202,122 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>ErrorEmptyList</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>ErrorInternalServer</name>
<description/>

View File

@ -1,6 +1,6 @@
{
"name": "docspace",
"version": "1.1.1",
"version": "1.1.2",
"private": true,
"workspaces": {
"packages": [

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/client",
"version": "1.1.1",
"version": "1.1.2",
"private": true,
"homepage": "",
"scripts": {

View File

@ -143,7 +143,12 @@ const AboutContent = (props) => {
&nbsp;ONLYOFFICE DocSpace&nbsp;
</ColorTheme>
<Text className="row-el select-el" fontSize="13px" fontWeight="600">
<Text
className="row-el select-el"
fontSize="13px"
fontWeight="600"
title={`${BUILD_AT}`}
>
v.
<span className="version-document-management">
{buildVersionInfo.docspace}

View File

@ -54,7 +54,7 @@ const Dialogs = ({
<ChangePasswordDialog
visible={changePasswordVisible}
onClose={() => setChangePasswordVisible(false)}
email={profile.email}
email={data.email}
/>
)}
{changeOwner && (

View File

@ -28,6 +28,7 @@ const WhiteLabel = (props) => {
isSettingPaid,
logoText,
logoUrls,
setLogoText,
restoreWhiteLabelSettings,
getWhiteLabelLogoUrls,
setWhiteLabelSettings,
@ -43,10 +44,12 @@ const WhiteLabel = (props) => {
const [logoUrlsWhiteLabel, setLogoUrlsWhiteLabel] = useState(null);
const [isSaving, setIsSaving] = useState(false);
const companyNameFromSessionStorage = getFromSessionStorage("companyName");
useEffect(() => {
const companyNameFromSessionStorage = getFromSessionStorage("companyName");
if (!companyNameFromSessionStorage) {
if (!logoText) return;
setLogoTextWhiteLabel(logoText);
saveToSessionStorage("companyName", logoText);
} else {
@ -181,7 +184,9 @@ const WhiteLabel = (props) => {
setIsSaving(true);
await setWhiteLabelSettings(data);
await getWhiteLabelLogoUrls();
await getWhiteLabelLogoUrlsAction(); //TODO: delete duplicate request
await getWhiteLabelLogoUrlsAction();
setLogoText(data.logoText);
//TODO: delete duplicate request
toastr.success(t("Settings:SuccessfullySaveSettingsMessage"));
} catch (error) {
toastr.error(error);
@ -471,6 +476,7 @@ export default inject(({ setup, auth, common }) => {
const { setWhiteLabelSettings } = setup;
const {
setLogoText,
whiteLabelLogoText,
getWhiteLabelLogoText,
whiteLabelLogoUrls,
@ -484,6 +490,7 @@ export default inject(({ setup, auth, common }) => {
} = auth.settingsStore;
return {
setLogoText,
theme: auth.settingsStore.theme,
logoText: whiteLabelLogoText,
logoUrls: whiteLabelLogoUrls,

View File

@ -115,9 +115,9 @@ export const resetSessionStorage = () => {
if (storagePeriodSettings !== defaultStoragePeriodSettings) {
saveToSessionStorage("storagePeriod", defaultStoragePeriodSettings);
}
if (companyNameFromeSessionStorage !== "ONLYOFFICE") {
saveToSessionStorage("companyName", "ONLYOFFICE");
}
sessionStorage.removeItem("companyName");
if (
companySettingsFromSessionStorage !==
defaultCompanySettingsFromSessionStorage

View File

@ -81,7 +81,7 @@ class AccountsContextOptionsStore {
key: option,
icon: ChangeSecurityReactSvgUrl,
label: t("PeopleTranslations:PasswordChangeButton"),
onClick: this.toggleChangePasswordDialog,
onClick: () => this.toggleChangePasswordDialog(item),
};
case "change-owner":
return {
@ -313,8 +313,14 @@ class AccountsContextOptionsStore {
setChangeEmailVisible(true);
};
toggleChangePasswordDialog = () => {
toggleChangePasswordDialog = (item) => {
const { setDialogData } = this.peopleStore.dialogStore;
const { setChangePasswordVisible } = this.peopleStore.targetUserStore;
const { email } = item;
setDialogData({
email,
});
setChangePasswordVisible(true);
};

View File

@ -92,12 +92,12 @@ class DialogsStore {
this.restoreAllArchive = restoreAllArchive;
};
setArchiveDialogVisible = (archiveDialogVisible) => {
this.archiveDialogVisible = archiveDialogVisible;
setArchiveDialogVisible = (visible) => {
this.archiveDialogVisible = visible;
};
setRestoreRoomDialogVisible = (restoreRoomDialogVisible) => {
this.restoreRoomDialogVisible = restoreRoomDialogVisible;
setRestoreRoomDialogVisible = (visible) => {
this.restoreRoomDialogVisible = visible;
};
setSharingPanelVisible = (sharingPanelVisible) => {
@ -116,18 +116,36 @@ class DialogsStore {
this.ownerPanelVisible = ownerPanelVisible;
};
setMoveToPanelVisible = (moveToPanelVisible) => {
!moveToPanelVisible && this.deselectActiveFiles();
this.moveToPanelVisible = moveToPanelVisible;
setMoveToPanelVisible = (visible) => {
!visible && this.deselectActiveFiles();
if (
visible &&
!this.filesStore.hasSelection &&
!this.filesStore.hasBufferSelection
)
return;
this.moveToPanelVisible = visible;
};
setRestoreAllPanelVisible = (restoreAllPanelVisible) => {
this.restoreAllPanelVisible = restoreAllPanelVisible;
setRestoreAllPanelVisible = (visible) => {
this.restoreAllPanelVisible = visible;
};
setCopyPanelVisible = (copyPanelVisible) => {
!copyPanelVisible && this.deselectActiveFiles();
this.copyPanelVisible = copyPanelVisible;
setCopyPanelVisible = (visible) => {
!visible && this.deselectActiveFiles();
if (
visible &&
!this.filesStore.hasSelection &&
!this.filesStore.hasBufferSelection
) {
console.log("No files selected");
return;
}
this.copyPanelVisible = visible;
};
setRoomCreation = (roomCreation) => {

View File

@ -1009,6 +1009,7 @@ class FilesStore {
};
setSelection = (selection) => {
// console.log("setSelection", selection);
this.selection = selection;
};
@ -1090,6 +1091,7 @@ class FilesStore {
};
setBufferSelection = (bufferSelection) => {
// console.log("setBufferSelection", bufferSelection);
this.bufferSelection = bufferSelection;
};
@ -1345,7 +1347,26 @@ class FilesStore {
if (clearFilter) {
if (clearSelection) {
// Find not processed
const tempSelection = this.selection.filter(
(f) => !this.activeFiles.find((elem) => elem.id === f.id)
);
const tempBuffer =
this.bufferSelection &&
this.activeFiles.find(
(elem) => elem.id === this.bufferSelection.id
) == null
? this.bufferSelection
: null;
// console.log({ tempSelection, tempBuffer });
// Clear all selections
this.setSelected("close");
// Restore not processed
tempSelection.length && this.setSelection(tempSelection);
tempBuffer && this.setBufferSelection(tempBuffer);
}
}
@ -1482,7 +1503,8 @@ class FilesStore {
filter,
clearFilter = true,
withSubfolders = false,
clearSelection = true
clearSelection = true,
withFilterLocalStorage = false
) => {
const { setSelectedNode, roomsFolderId } = this.treeFoldersStore;
@ -1497,7 +1519,7 @@ class FilesStore {
`UserRoomsFilter=${this.authStore.userStore.user?.id}`
);
if (filterStorageItem && !filter) {
if ((filterStorageItem && !filter) || withFilterLocalStorage) {
const splitFilter = filterStorageItem.split(",");
filterData.sortBy = splitFilter[0];
@ -3138,19 +3160,21 @@ class FilesStore {
}
get selectionTitle() {
if (this.selection.length === 0) {
if (this.bufferSelection) {
return this.bufferSelection.title;
}
return null;
if (this.selection.length === 0 && this.bufferSelection) {
return this.bufferSelection.title;
}
return this.selection.find((el) => el.title).title;
return this.selection.find((el) => el.title)?.title || null;
}
get hasSelection() {
return !!this.selection.length;
}
get hasBufferSelection() {
return !!this.bufferSelection;
}
get isEmptyFilesList() {
const filesList = [...this.files, ...this.folders];
return filesList.length <= 0;

View File

@ -75,19 +75,23 @@ class VersionHistoryStore {
setVerHistoryFileVersions = (versions) => {
const file = this.filesStore.files.find((item) => item.id == this.fileId);
const currentVersionGroup = Math.max.apply(
null,
versions.map((ver) => ver.versionGroup)
);
const currentVersion = versions.reduce((prev, current) => {
return prev.versionGroup > current.versionGroup ? prev : current;
});
const currentComment =
versions[versions.length - currentVersionGroup].comment;
// const currentVersionGroup = Math.max.apply(
// null,
// versions.map((ver) => ver.versionGroup)
// );
// const currentComment =
// versions[versions.length - currentVersionGroup].comment;
const newFile = {
...file,
comment: currentComment,
comment: currentVersion.comment,
version: versions.length,
versionGroup: currentVersionGroup,
versionGroup: currentVersion.versionGroup,
};
this.filesStore.setFile(newFile);

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/common",
"version": "1.1.1",
"version": "1.1.2",
"private": true,
"scripts": {
"build": "echo 'skip it'",

View File

@ -12,7 +12,7 @@ const LoginContainer = styled.div`
z-index: 0;
.remember-wrapper {
max-width: 142px;
max-width: 170px;
display: flex;
flex-direction: row;
align-items: center;

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/components",
"version": "1.1.1",
"version": "1.1.2",
"private": true,
"scripts": {
"build": "echo 'skip it'",

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/editor",
"version": "1.1.1",
"version": "1.1.2",
"private": true,
"homepage": "/doceditor",
"scripts": {

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/login",
"version": "1.1.1",
"version": "1.1.2",
"private": true,
"homepage": "/login",
"scripts": {

View File

@ -442,21 +442,10 @@ internal class GoogleDriveStorage : IThirdPartyStorage<DriveFile, DriveFile, Dri
{
response = await httpClient.SendAsync(request);
}
catch (HttpRequestException exception) // todo create catch
catch (Exception exception) // todo create catch
{
/*if (exception. != null && exception.Response.Headers.AllKeys.Contains("Range")) if (exception.Status == WebExceptionStatus.ProtocolError || exception.Status == WebExceptionStatus.UnknownError) //Status is UnknownError (unix)
{
response = exception.Response;
}
else if (exception.Message.Equals("Invalid status code: 308", StringComparison.InvariantCulture)) //response is null (unix)
{
response = null;
}
else
{
throw;
}*/
throw exception;
_logger.ErrorWithException(exception);
throw;
}
if (response == null || response.StatusCode != HttpStatusCode.Created && response.StatusCode != HttpStatusCode.OK)

View File

@ -1807,8 +1807,8 @@ public class EntryManager
lastVersionFile = await UpdateToVersionFileAsync(fileVersion.Id, fileVersion.Version, null, checkRight, true);
}
await fileDao.CompleteVersionAsync(fileVersion.Id, fileVersion.Version);
lastVersionFile.VersionGroup++;
//await fileDao.CompleteVersionAsync(fileVersion.Id, fileVersion.Version);
//lastVersionFile.VersionGroup++;
}
}

View File

@ -106,6 +106,7 @@
"EncryptionKeysReload": "Encryption keys must be re-entered",
"EnterName": "Enter name",
"Error": "Error",
"ErrorEmptyList": "The list of entities has been changed. Please check the contents and try again.",
"ErrorInternalServer": "Internal server error. Try again later.",
"ErrorReport": "Error report",
"ErrorReportDescription": "Open the report below to see what data is included. Error reports do not contain any personal data of the users. To help our team better understand the problem, describe it in the free form using the comment field.",

View File

@ -104,6 +104,7 @@
"EncryptionKeysReload": "Ключи шифрования необходимо ввести повторно",
"EnterName": "Введите имя",
"Error": "Ошибка",
"ErrorEmptyList": "Список сущностей изменен. Пожалуйста, проверьте содержимое и повторите попытку.",
"ErrorInternalServer": "Внутренняя ошибка сервера. Повторите попытку позже.",
"ErrorReport": "Сообщение об ошибке",
"ErrorReportDescription": "Откройте отчет ниже, чтобы увидеть, какие данные в него включены. Отчеты об ошибках не содержат персональных данных пользователей. Чтобы помочь нашей команде понять проблему наилучшим образом, опишите ее в свободной форме в поле для комментариев.",