Web: Files: Added IntegrationStore. Added method handleMessage. Added openCrateFileModal, openCrateFolderModal, openCrateRoomModal, createFile, createFolder, createRoom message events
This commit is contained in:
parent
c53028ac3f
commit
0afd521b43
@ -132,14 +132,14 @@ class FilesContent extends React.Component {
|
||||
updateTempContent();
|
||||
});
|
||||
|
||||
window.addEventListener("message", this.integrationMessage, false);
|
||||
window.addEventListener("message", this.props.handleMessage, false);
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
const script = document.getElementById("img-tiff-script");
|
||||
document.body.removeChild(script);
|
||||
|
||||
window.removeEventListener("message", this.integrationMessage);
|
||||
window.removeEventListener("message", this.props.handleMessage, false);
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
@ -173,96 +173,6 @@ class FilesContent extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
integrationMessage = async (e) => {
|
||||
const {
|
||||
setFrameConfig,
|
||||
folderInfo,
|
||||
folders,
|
||||
files,
|
||||
selection,
|
||||
user,
|
||||
filesList,
|
||||
} = this.props;
|
||||
|
||||
const eventData = typeof e.data === "string" ? JSON.parse(e.data) : e.data;
|
||||
|
||||
if (eventData.data) {
|
||||
const { data, methodName } = eventData.data;
|
||||
|
||||
if (methodName === "setConfig") {
|
||||
const config = await setFrameConfig(data);
|
||||
|
||||
window.parent.postMessage(
|
||||
JSON.stringify({
|
||||
type: "onMethodReturn",
|
||||
methodReturnData: config,
|
||||
}),
|
||||
"*"
|
||||
);
|
||||
}
|
||||
|
||||
if (methodName === "getFolderInfo") {
|
||||
window.parent.postMessage(
|
||||
JSON.stringify({
|
||||
type: "onMethodReturn",
|
||||
methodReturnData: folderInfo,
|
||||
}),
|
||||
"*"
|
||||
);
|
||||
}
|
||||
|
||||
if (methodName === "getFolders") {
|
||||
window.parent.postMessage(
|
||||
JSON.stringify({
|
||||
type: "onMethodReturn",
|
||||
methodReturnData: folders,
|
||||
}),
|
||||
"*"
|
||||
);
|
||||
}
|
||||
|
||||
if (methodName === "getFiles") {
|
||||
window.parent.postMessage(
|
||||
JSON.stringify({
|
||||
type: "onMethodReturn",
|
||||
methodReturnData: files,
|
||||
}),
|
||||
"*"
|
||||
);
|
||||
}
|
||||
|
||||
if (methodName === "getItems") {
|
||||
window.parent.postMessage(
|
||||
JSON.stringify({
|
||||
type: "onMethodReturn",
|
||||
methodReturnData: filesList,
|
||||
}),
|
||||
"*"
|
||||
);
|
||||
}
|
||||
|
||||
if (methodName === "getSelection") {
|
||||
window.parent.postMessage(
|
||||
JSON.stringify({
|
||||
type: "onMethodReturn",
|
||||
methodReturnData: selection,
|
||||
}),
|
||||
"*"
|
||||
);
|
||||
}
|
||||
|
||||
if (methodName === "getUserInfo") {
|
||||
window.parent.postMessage(
|
||||
JSON.stringify({
|
||||
type: "onMethodReturn",
|
||||
methodReturnData: user,
|
||||
}),
|
||||
"*"
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
render() {
|
||||
const { frameConfig } = this.props;
|
||||
|
||||
@ -284,7 +194,7 @@ class FilesContent extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
const Files = inject(({ auth, filesStore }) => {
|
||||
const Files = inject(({ auth, filesStore, integrationStore }) => {
|
||||
return {
|
||||
isDesktop: auth.settingsStore.isDesktopClient,
|
||||
user: auth.userStore.user,
|
||||
@ -295,11 +205,7 @@ const Files = inject(({ auth, filesStore }) => {
|
||||
setFrameConfig: auth.settingsStore.setFrameConfig,
|
||||
isLoaded: auth.isLoaded && filesStore.isLoaded,
|
||||
setIsLoaded: filesStore.setIsLoaded,
|
||||
folderInfo: filesStore.selectedFolderStore,
|
||||
files: filesStore.files,
|
||||
folders: filesStore.folders,
|
||||
selection: filesStore.selection,
|
||||
filesList: filesStore.filesList,
|
||||
handleMessage: integrationStore.handleMessage,
|
||||
|
||||
setEncryptionKeys: auth.settingsStore.setEncryptionKeys,
|
||||
loadFilesInfo: async () => {
|
||||
|
118
products/ASC.Files/Client/src/store/IntegrationStore.js
Normal file
118
products/ASC.Files/Client/src/store/IntegrationStore.js
Normal file
@ -0,0 +1,118 @@
|
||||
import { makeAutoObservable } from "mobx";
|
||||
import { Events } from "../helpers/constants";
|
||||
import { frameCallback } from "@appserver/common/utils";
|
||||
|
||||
class IntegrationStore {
|
||||
authStore;
|
||||
filesStore;
|
||||
settingsStore;
|
||||
filesActionsStore;
|
||||
|
||||
constructor(authStore, filesStore, settingsStore, filesActionsStore) {
|
||||
makeAutoObservable(this);
|
||||
this.authStore = authStore;
|
||||
this.filesStore = filesStore;
|
||||
this.settingsStore = settingsStore;
|
||||
this.filesActionsStore = filesActionsStore;
|
||||
}
|
||||
|
||||
handleMessage = async (e) => {
|
||||
const { settingsStore, userStore } = this.authStore;
|
||||
const { setFrameConfig } = settingsStore;
|
||||
const { user } = userStore;
|
||||
const {
|
||||
folders,
|
||||
files,
|
||||
selection,
|
||||
filesList,
|
||||
selectedFolderStore,
|
||||
createFile,
|
||||
createFolder,
|
||||
createRoom,
|
||||
refreshFiles,
|
||||
} = this.filesStore;
|
||||
|
||||
const eventData = typeof e.data === "string" ? JSON.parse(e.data) : e.data;
|
||||
|
||||
if (eventData.data) {
|
||||
const { data, methodName } = eventData.data;
|
||||
|
||||
let res;
|
||||
|
||||
switch (methodName) {
|
||||
case "setConfig":
|
||||
res = await setFrameConfig(data);
|
||||
break;
|
||||
case "getFolderInfo":
|
||||
res = selectedFolderStore;
|
||||
break;
|
||||
case "getFolders":
|
||||
res = folders;
|
||||
break;
|
||||
case "getFiles":
|
||||
res = files;
|
||||
break;
|
||||
case "getItems":
|
||||
res = filesList;
|
||||
break;
|
||||
case "getSelection":
|
||||
res = selection;
|
||||
break;
|
||||
case "getUserInfo":
|
||||
res = user;
|
||||
break;
|
||||
case "openCrateItemModal":
|
||||
{
|
||||
const item = new Event(Events.CREATE);
|
||||
|
||||
const payload = {
|
||||
extension: data,
|
||||
id: -1,
|
||||
};
|
||||
|
||||
item.payload = payload;
|
||||
|
||||
window.dispatchEvent(item);
|
||||
}
|
||||
break;
|
||||
case "openCrateRoomModal":
|
||||
{
|
||||
const room = new Event(Events.ROOM_CREATE);
|
||||
|
||||
window.dispatchEvent(room);
|
||||
}
|
||||
break;
|
||||
case "createFile":
|
||||
{
|
||||
const { folderId, title, templateId, formId } = data;
|
||||
res = await createFile(folderId, title, templateId, formId);
|
||||
|
||||
refreshFiles();
|
||||
}
|
||||
break;
|
||||
case "createFolder":
|
||||
{
|
||||
const { parentFolderId, title } = data;
|
||||
res = await createFolder(parentFolderId, title);
|
||||
|
||||
refreshFiles();
|
||||
}
|
||||
break;
|
||||
case "createRoom":
|
||||
{
|
||||
const { title, type } = data;
|
||||
res = await createRoom(title, type);
|
||||
|
||||
refreshFiles();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
res = "Wrong method";
|
||||
}
|
||||
|
||||
frameCallback(res);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export default IntegrationStore;
|
@ -17,6 +17,7 @@ import HotkeyStore from "./HotkeyStore";
|
||||
import store from "studio/store";
|
||||
import selectFileDialogStore from "./SelectFileDialogStore";
|
||||
import TagsStore from "./TagsStore";
|
||||
import IntegrationStore from "./IntegrationStore";
|
||||
|
||||
const tagsStore = new TagsStore();
|
||||
|
||||
@ -91,6 +92,13 @@ const hotkeyStore = new HotkeyStore(
|
||||
uploadDataStore
|
||||
);
|
||||
|
||||
const integrationStore = new IntegrationStore(
|
||||
store.auth,
|
||||
filesStore,
|
||||
settingsStore,
|
||||
filesActionsStore
|
||||
);
|
||||
|
||||
const stores = {
|
||||
filesStore,
|
||||
|
||||
@ -108,6 +116,7 @@ const stores = {
|
||||
selectFileDialogStore,
|
||||
|
||||
tagsStore,
|
||||
integrationStore,
|
||||
};
|
||||
|
||||
export default stores;
|
||||
|
@ -242,15 +242,39 @@
|
||||
);
|
||||
};
|
||||
|
||||
const createItem = (format) => {
|
||||
const openCrateFileModal = (format) => {
|
||||
executeMethod("openCreateItemModal", format);
|
||||
};
|
||||
|
||||
const openCrateFolderModal = () => {
|
||||
executeMethod("openCreateItemModal");
|
||||
};
|
||||
|
||||
const openCrateRoomModal = () => {
|
||||
executeMethod("openCrateRoomModal");
|
||||
};
|
||||
|
||||
const createFile = (folderId, title, templateId, formId) => {
|
||||
return new Promise((resolve) =>
|
||||
executeMethod("createItem", null, (data) => resolve(data))
|
||||
executeMethod(
|
||||
"createFile",
|
||||
{ folderId, title, templateId, formId },
|
||||
(data) => resolve(data)
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
const createRoom = () => {
|
||||
const createFolder = (parentFolderId, title) => {
|
||||
return new Promise((resolve) =>
|
||||
executeMethod("createRoom", null, (data) => resolve(data))
|
||||
executeMethod("createFolder", { parentFolderId, title }, (data) =>
|
||||
resolve(data)
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
const createRoom = (title, type) => {
|
||||
return new Promise((resolve) =>
|
||||
executeMethod("createRoom", { title, type }, (data) => resolve(data))
|
||||
);
|
||||
};
|
||||
|
||||
@ -270,7 +294,12 @@
|
||||
|
||||
setConfig,
|
||||
|
||||
createItem,
|
||||
openCrateFileModal,
|
||||
openCrateFolderModal,
|
||||
openCrateRoomModal,
|
||||
|
||||
createFile,
|
||||
createFolder,
|
||||
createRoom,
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user