Merge branch 'hotfix/v2.6.1' into bugfix/Bug69117

This commit is contained in:
Viktor Fomin 2024-07-29 11:57:51 +03:00
commit 308ebd2d8d
10 changed files with 59 additions and 31 deletions

View File

@ -24,7 +24,7 @@
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0 // 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 // International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
import { useState, useEffect } from "react"; import { useState } from "react";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import styled, { css } from "styled-components"; import styled, { css } from "styled-components";
import { Aside } from "@docspace/shared/components/aside"; import { Aside } from "@docspace/shared/components/aside";
@ -83,20 +83,12 @@ const ChangeRoomOwner = (props) => {
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
useEffect(() => { const onChangeRoomOwner = async (
document.addEventListener("keyup", onKeyUp, false); user,
selectedAccess,
return () => { newFooterInputValue,
document.removeEventListener("keyup", onKeyUp, false); isChecked,
}; ) => {
}, []);
const onKeyUp = (e) => {
if (e.keyCode === 27) onClose();
if (e.keyCode === 13 || e.which === 13) onChangeRoomOwner();
};
const onChangeRoomOwner = async (user, isChecked) => {
if (showBackButton) { if (showBackButton) {
setRoomParams && setRoomParams(user[0]); setRoomParams && setRoomParams(user[0]);
} else { } else {

View File

@ -32,7 +32,7 @@ import FilesFilter from "@docspace/shared/api/files/filter";
import RoomsFilter from "@docspace/shared/api/rooms/filter"; import RoomsFilter from "@docspace/shared/api/rooms/filter";
import { getGroup } from "@docspace/shared/api/groups"; import { getGroup } from "@docspace/shared/api/groups";
import { getUserById } from "@docspace/shared/api/people"; import { getUserById } from "@docspace/shared/api/people";
import { MEDIA_VIEW_URL } from "@docspace/shared/constants"; import { CREATED_FORM_KEY, MEDIA_VIEW_URL } from "@docspace/shared/constants";
import { import {
Events, Events,
@ -78,6 +78,7 @@ const useFiles = ({
scrollToTop, scrollToTop,
selectedFolderStore, selectedFolderStore,
wsCreatedPDFForm,
}) => { }) => {
const navigate = useNavigate(); const navigate = useNavigate();
const { id } = useParams(); const { id } = useParams();
@ -292,7 +293,15 @@ const useFiles = ({
); );
} else { } else {
const folderId = filter.folder; const folderId = filter.folder;
return fetchFiles(folderId, filter); return fetchFiles(folderId, filter)?.finally(() => {
const data = sessionStorage.getItem(CREATED_FORM_KEY);
if (data) {
wsCreatedPDFForm({
data,
});
sessionStorage.removeItem(CREATED_FORM_KEY);
}
});
} }
} }
@ -306,7 +315,7 @@ const useFiles = ({
const isFormRoom = const isFormRoom =
selectedFolderStore.roomType === RoomsType.FormRoom || selectedFolderStore.roomType === RoomsType.FormRoom ||
selectedFolderStore.type === FolderType.FormRoom; selectedFolderStore.parentRoomType === FolderType.FormRoom;
const payload = { const payload = {
extension: "pdf", extension: "pdf",

View File

@ -114,7 +114,7 @@ export default inject<TStore>(({ dialogsStore, infoPanelStore }) => {
const { infoPanelSelection } = infoPanelStore; const { infoPanelSelection } = infoPanelStore;
const { setLinkParams, setEditLinkPanelIsVisible } = dialogsStore; const { setLinkParams, setEditLinkPanelIsVisible } = dialogsStore;
const { id, roomType, security } = infoPanelSelection!; const { id, roomType, security } = infoPanelSelection!;
const { EditRoom } = security!; const { EditRoom } = security || {};
const isFormRoom = roomType === RoomsType.FormRoom; const isFormRoom = roomType === RoomsType.FormRoom;

View File

@ -160,6 +160,7 @@ const PureHome = (props) => {
getFolderModel, getFolderModel,
scrollToTop, scrollToTop,
isEmptyGroups, isEmptyGroups,
wsCreatedPDFForm,
} = props; } = props;
//console.log(t("ComingSoon")) //console.log(t("ComingSoon"))
@ -206,6 +207,7 @@ const PureHome = (props) => {
scrollToTop, scrollToTop,
selectedFolderStore, selectedFolderStore,
wsCreatedPDFForm,
}); });
const { showUploadPanel } = useOperations({ const { showUploadPanel } = useOperations({
@ -500,6 +502,7 @@ export default inject(
removeTagsFromRoom, removeTagsFromRoom,
getRooms, getRooms,
scrollToTop, scrollToTop,
wsCreatedPDFForm,
} = filesStore; } = filesStore;
const { updateProfileCulture } = peopleStore.targetUserStore; const { updateProfileCulture } = peopleStore.targetUserStore;
@ -686,6 +689,7 @@ export default inject(
getFolderModel, getFolderModel,
scrollToTop, scrollToTop,
isEmptyGroups, isEmptyGroups,
wsCreatedPDFForm,
}; };
}, },
)(observer(Home)); )(observer(Home));

View File

@ -974,7 +974,7 @@ class ContextOptionsStore {
const filterUrlParams = filesFilter.toUrlParams(); const filterUrlParams = filesFilter.toUrlParams();
const url = getCategoryUrl( const url = getCategoryUrl(
this.filesStore.categoryType, this.filesStore.categoryType,
filterUrlParams.folder, filesFilter.folder,
); );
navigate( navigate(

View File

@ -34,7 +34,7 @@ import {
} from "@docspace/shared/api/files"; } from "@docspace/shared/api/files";
// import { getOperationProgress } from "@docspace/shared/utils/getOperationProgress"; // import { getOperationProgress } from "@docspace/shared/utils/getOperationProgress";
import { toastr } from "@docspace/shared/components/toast"; import { toastr } from "@docspace/shared/components/toast";
import { EDITOR_ID } from "@docspace/shared/constants"; import { CREATED_FORM_KEY, EDITOR_ID } from "@docspace/shared/constants";
import type { import type {
TFile, TFile,
@ -52,6 +52,13 @@ import type { TData } from "@docspace/shared/components/toast/Toast.type";
import { saveAs } from "@/utils"; import { saveAs } from "@/utils";
import type { ConflictStateType } from "@/types"; import type { ConflictStateType } from "@/types";
type SuccessResponseType = {
form: TFile;
message: string;
};
type FaildResponseType = string;
type ResponseType = SuccessResponseType | FaildResponseType;
const DefaultConflictDataDialogState: ConflictStateType = { const DefaultConflictDataDialogState: ConflictStateType = {
visible: false, visible: false,
resolve: () => {}, resolve: () => {},
@ -70,6 +77,12 @@ const hasFileUrl = (arg: object): arg is { data: { url: string } } => {
); );
}; };
const isSuccessResponse = (
res: ResponseType | undefined,
): res is SuccessResponseType => {
return Boolean(res) && typeof res === "object" && "form" in res;
};
const useStartFillingSelectDialog = (fileInfo: TFile | undefined) => { const useStartFillingSelectDialog = (fileInfo: TFile | undefined) => {
// const { t } = useTranslation(["Common"]); // const { t } = useTranslation(["Common"]);
const resolveRef = useRef<(value: string | PromiseLike<string>) => void>(); const resolveRef = useRef<(value: string | PromiseLike<string>) => void>();
@ -179,14 +192,22 @@ const useStartFillingSelectDialog = (fileInfo: TFile | undefined) => {
const fileUrl = await getFileUrl(); const fileUrl = await getFileUrl();
const response = await saveAs( const response = await saveAs<ResponseType>(
fileInfo.title, fileInfo.title,
fileUrl, fileUrl,
selectedItemId, selectedItemId,
false, false,
"createForm",
); );
const [key, value] = response?.split(":") ?? []; if (isSuccessResponse(response)) {
const { form } = response;
sessionStorage.setItem(CREATED_FORM_KEY, JSON.stringify(form));
}
const [key, value] =
typeof response === "string" ? response.split(":") : [];
// await copyToFolder( // await copyToFolder(
// Number(selectedItemId), // Number(selectedItemId),

View File

@ -101,14 +101,15 @@ export const getDataSaveAs = async (params: string) => {
} }
}; };
export const saveAs = ( export const saveAs = <T = string>(
title: string, title: string,
url: string, url: string,
folderId: string | number, folderId: string | number,
openNewTab: boolean, openNewTab: boolean,
action = "create",
) => { ) => {
const options = { const options = {
action: "create", action,
fileuri: url, fileuri: url,
title: title, title: title,
folderid: folderId, folderid: folderId,
@ -117,7 +118,7 @@ export const saveAs = (
const params = toUrlParams(options, true); const params = toUrlParams(options, true);
if (!openNewTab) { if (!openNewTab) {
return getDataSaveAs(params); return getDataSaveAs(params) as Promise<T>;
} else { } else {
const handlerUrl = combineUrl( const handlerUrl = combineUrl(
window.ClientConfig?.proxy?.url, window.ClientConfig?.proxy?.url,

View File

@ -112,11 +112,11 @@ const StyledBody = styled.div<{
height: ${(props) => height: ${(props) =>
props.footerVisible props.footerVisible
? props.withHeader ? props.withHeader
? `calc(100% - 16px - ${props.footerHeight}px - ${props.headerHeight}px)` ? `calc(100% - ${props.footerHeight}px - ${props.headerHeight}px)`
: `calc(100% - 16px - ${props.footerHeight}px)` : `calc(100% - ${props.footerHeight}px)`
: props.withHeader : props.withHeader
? `calc(100% - 16px - ${props.headerHeight}px)` ? `calc(100% - ${props.headerHeight}px)`
: `calc(100% - 16px)`}; : "100%"};
padding: ${({ withTabs }) => (withTabs ? "0" : "16px 0 0 0")}; padding: ${({ withTabs }) => (withTabs ? "0" : "16px 0 0 0")};

View File

@ -53,6 +53,7 @@ export const ROOM = "room";
export const USERS = "users"; export const USERS = "users";
export const USERS_IN_ROOM = "usersInRoom"; export const USERS_IN_ROOM = "usersInRoom";
export const PDF_FORM_DIALOG_KEY = "pdf_form_dialog"; export const PDF_FORM_DIALOG_KEY = "pdf_form_dialog";
export const CREATED_FORM_KEY = "created_form_key";
export const COUNT_FOR_SHOWING_BAR = 2; export const COUNT_FOR_SHOWING_BAR = 2;
export const PERCENTAGE_FOR_SHOWING_BAR = 90; export const PERCENTAGE_FOR_SHOWING_BAR = 90;

View File

@ -369,7 +369,7 @@ class AuthStore {
login = async (user: TUser, hash: string, session = true) => { login = async (user: TUser, hash: string, session = true) => {
try { try {
const response = (await api.user.login(user, hash, session)) as { const response = (await api.user.login(user, hash, "", session)) as {
token: string; token: string;
tfa: string; tfa: string;
error: { message: unknown }; error: { message: unknown };