Merge branch 'hotfix/v2.6.1' into bugfix/Bug69117
This commit is contained in:
commit
308ebd2d8d
@ -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 {
|
||||||
|
@ -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",
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
@ -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(
|
||||||
|
@ -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),
|
||||||
|
@ -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,
|
||||||
|
@ -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")};
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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 };
|
||||||
|
Loading…
Reference in New Issue
Block a user