Doceditor:Components: Added download as
This commit is contained in:
parent
c547782df6
commit
d66dd93b85
@ -72,6 +72,7 @@ const Editor = ({
|
||||
errorMessage,
|
||||
isSkipError,
|
||||
|
||||
onDownloadAs,
|
||||
onSDKRequestSharingSettings,
|
||||
onSDKRequestSaveAs,
|
||||
onSDKRequestInsertImage,
|
||||
@ -235,6 +236,7 @@ const Editor = ({
|
||||
onMetaChange,
|
||||
onMakeActionLink,
|
||||
onOutdatedVersion,
|
||||
onDownloadAs,
|
||||
};
|
||||
|
||||
if (successAuth) {
|
||||
|
@ -135,6 +135,7 @@ const Root = ({
|
||||
onSDKRequestStartFilling,
|
||||
conflictDataDialog,
|
||||
headerLabelSFSDialog,
|
||||
onDownloadAs,
|
||||
} = useStartFillingSelectDialog(fileInfo);
|
||||
|
||||
const {
|
||||
@ -211,6 +212,7 @@ const Root = ({
|
||||
fileInfo={fileInfo}
|
||||
errorMessage={error?.message}
|
||||
isSkipError={!!isSkipError}
|
||||
onDownloadAs={onDownloadAs}
|
||||
onSDKRequestSharingSettings={onSDKRequestSharingSettings}
|
||||
onSDKRequestSaveAs={onSDKRequestSaveAs}
|
||||
onSDKRequestInsertImage={onSDKRequestInsertImage}
|
||||
|
@ -34,6 +34,7 @@ import {
|
||||
} from "@docspace/shared/api/files";
|
||||
// import { getOperationProgress } from "@docspace/shared/utils/getOperationProgress";
|
||||
import { toastr } from "@docspace/shared/components/toast";
|
||||
import { EDITOR_ID } from "@docspace/shared/constants";
|
||||
|
||||
import type {
|
||||
TFile,
|
||||
@ -48,7 +49,7 @@ import type { TSelectedFileInfo } from "@docspace/shared/selectors/Files/FilesSe
|
||||
import type { TData } from "@docspace/shared/components/toast/Toast.type";
|
||||
|
||||
// import { useTranslation } from "react-i18next";
|
||||
|
||||
import { saveAs } from "@/utils";
|
||||
import type { ConflictStateType } from "@/types";
|
||||
|
||||
const DefaultConflictDataDialogState: ConflictStateType = {
|
||||
@ -59,8 +60,20 @@ const DefaultConflictDataDialogState: ConflictStateType = {
|
||||
folderName: "",
|
||||
};
|
||||
|
||||
const hasFileUrl = (arg: object): arg is { data: { url: string } } => {
|
||||
return (
|
||||
"data" in arg &&
|
||||
typeof arg.data === "object" &&
|
||||
arg.data !== null &&
|
||||
"url" in arg.data &&
|
||||
typeof arg.data.url === "string"
|
||||
);
|
||||
};
|
||||
|
||||
const useStartFillingSelectDialog = (fileInfo: TFile | undefined) => {
|
||||
// const { t } = useTranslation(["Common"]);
|
||||
const resolveRef = useRef<(value: string | PromiseLike<string>) => void>();
|
||||
|
||||
const [headerLabelSFSDialog, setHeaderLabelSFSDialog] = useState("");
|
||||
|
||||
const [isVisible, setIsVisible] = useState(false);
|
||||
@ -105,6 +118,26 @@ const useStartFillingSelectDialog = (fileInfo: TFile | undefined) => {
|
||||
}
|
||||
};
|
||||
|
||||
const onDownloadAs = (obj: object) => {
|
||||
if (hasFileUrl(obj)) {
|
||||
resolveRef.current?.(obj.data.url);
|
||||
resolveRef.current = undefined;
|
||||
}
|
||||
};
|
||||
|
||||
const getFileUrl = async () => {
|
||||
const docEditor =
|
||||
typeof window !== "undefined" && window.DocEditor?.instances[EDITOR_ID];
|
||||
|
||||
docEditor?.downloadAs("pdf");
|
||||
|
||||
const url = await new Promise<string>((resolve) => {
|
||||
resolveRef.current = resolve;
|
||||
});
|
||||
|
||||
return url;
|
||||
};
|
||||
|
||||
const onSubmit = async (
|
||||
selectedItemId: string | number | undefined,
|
||||
folderTitle: string,
|
||||
@ -144,27 +177,40 @@ const useStartFillingSelectDialog = (fileInfo: TFile | undefined) => {
|
||||
}
|
||||
}
|
||||
|
||||
await copyToFolder(
|
||||
Number(selectedItemId),
|
||||
[],
|
||||
[fileInfo.id],
|
||||
conflictResolve,
|
||||
const fileUrl = await getFileUrl();
|
||||
|
||||
const response = await saveAs(
|
||||
fileInfo.title,
|
||||
fileUrl,
|
||||
selectedItemId,
|
||||
false,
|
||||
);
|
||||
|
||||
const error = await new Promise((resolve) => {
|
||||
const interval = setInterval(async () => {
|
||||
const [progress] = await getProgress();
|
||||
const [key, value] = response?.split(":") ?? [];
|
||||
|
||||
if (progress?.finished) {
|
||||
clearInterval(interval);
|
||||
resolve(progress.error);
|
||||
}
|
||||
}, 1000);
|
||||
});
|
||||
console.log({ key, value });
|
||||
|
||||
if (error) {
|
||||
toastr.error(error);
|
||||
// await copyToFolder(
|
||||
// Number(selectedItemId),
|
||||
// [],
|
||||
// [fileInfo.id],
|
||||
// conflictResolve,
|
||||
// false,
|
||||
// );
|
||||
|
||||
// const error = await new Promise((resolve) => {
|
||||
// const interval = setInterval(async () => {
|
||||
// const [progress] = await getProgress();
|
||||
|
||||
// if (progress?.finished) {
|
||||
// clearInterval(interval);
|
||||
// resolve(progress.error);
|
||||
// }
|
||||
// }, 1000);
|
||||
// });
|
||||
|
||||
if (key === "error") {
|
||||
toastr.error(value);
|
||||
} else {
|
||||
window.location.replace(url.toString());
|
||||
onClose();
|
||||
@ -208,6 +254,7 @@ const useStartFillingSelectDialog = (fileInfo: TFile | undefined) => {
|
||||
onSubmitStartFillingSelectDialog: onSubmit,
|
||||
onCloseStartFillingSelectDialog: onClose,
|
||||
getIsDisabledStartFillingSelectDialog: getIsDisabled,
|
||||
onDownloadAs,
|
||||
isVisibleStartFillingSelectDialog: isVisible,
|
||||
conflictDataDialog,
|
||||
headerLabelSFSDialog,
|
||||
|
@ -228,6 +228,7 @@ export type EditorProps = {
|
||||
errorMessage?: string;
|
||||
isSkipError?: boolean;
|
||||
|
||||
onDownloadAs: (obj: object) => void;
|
||||
onSDKRequestSharingSettings?: () => void;
|
||||
onSDKRequestSaveAs?: (event: object) => void;
|
||||
onSDKRequestInsertImage?: (event: object) => void;
|
||||
|
Loading…
Reference in New Issue
Block a user