2020-08-20 09:17:36 +00:00
|
|
|
import "./wdyr";
|
2020-07-10 08:42:06 +00:00
|
|
|
|
2020-02-25 06:58:09 +00:00
|
|
|
import React from "react";
|
|
|
|
import ReactDOM from "react-dom";
|
|
|
|
import { Provider } from "react-redux";
|
2020-08-20 09:17:36 +00:00
|
|
|
import axios from "axios";
|
2020-02-25 06:58:09 +00:00
|
|
|
import store from "./store/store";
|
2020-08-20 09:17:36 +00:00
|
|
|
import {
|
|
|
|
fetchMyFolder,
|
|
|
|
fetchTreeFolders,
|
|
|
|
fetchFiles
|
|
|
|
} from "./store/files/actions";
|
2020-02-25 06:58:09 +00:00
|
|
|
import config from "../package.json";
|
|
|
|
import "./custom.scss";
|
|
|
|
import App from "./App";
|
|
|
|
|
|
|
|
import * as serviceWorker from "./serviceWorker";
|
2020-08-20 09:17:36 +00:00
|
|
|
import {
|
|
|
|
store as commonStore,
|
|
|
|
constants,
|
|
|
|
ErrorBoundary,
|
|
|
|
api
|
|
|
|
} from "asc-web-common";
|
2020-03-13 15:11:15 +00:00
|
|
|
import { getFilterByLocation } from "./helpers/converters";
|
2020-08-20 09:17:36 +00:00
|
|
|
const {
|
|
|
|
setIsLoaded,
|
|
|
|
getUser,
|
|
|
|
getPortalSettings,
|
|
|
|
getModules,
|
|
|
|
setCurrentProductId,
|
|
|
|
setCurrentProductHomePage,
|
|
|
|
getPortalPasswordSettings,
|
|
|
|
getPortalCultures
|
|
|
|
} = commonStore.auth.actions;
|
2020-02-25 06:58:09 +00:00
|
|
|
const { AUTH_KEY } = constants;
|
2020-03-19 06:15:58 +00:00
|
|
|
const { FilesFilter } = api;
|
2020-02-25 06:58:09 +00:00
|
|
|
|
|
|
|
const token = localStorage.getItem(AUTH_KEY);
|
|
|
|
|
|
|
|
if (token) {
|
2020-08-20 09:17:36 +00:00
|
|
|
const requests = [
|
|
|
|
getUser(store.dispatch),
|
|
|
|
getPortalSettings(store.dispatch),
|
|
|
|
getModules(store.dispatch),
|
|
|
|
getPortalPasswordSettings(store.dispatch),
|
|
|
|
getPortalCultures(store.dispatch),
|
|
|
|
fetchMyFolder(store.dispatch),
|
|
|
|
fetchTreeFolders(store.dispatch)
|
|
|
|
];
|
|
|
|
|
|
|
|
axios
|
|
|
|
.all(requests)
|
2020-02-28 10:33:13 +00:00
|
|
|
.then(() => {
|
2020-06-03 10:30:28 +00:00
|
|
|
const reg = new RegExp(`${config.homepage}((/?)$|/filter)`, "gm"); //TODO: Always find?
|
|
|
|
const match = window.location.pathname.match(reg);
|
|
|
|
let filterObj = null;
|
2020-02-25 06:58:09 +00:00
|
|
|
|
2020-03-13 15:11:15 +00:00
|
|
|
if (match && match.length > 0) {
|
2020-06-03 10:30:28 +00:00
|
|
|
filterObj = getFilterByLocation(window.location);
|
2020-06-04 13:15:04 +00:00
|
|
|
|
|
|
|
if (!filterObj) {
|
|
|
|
filterObj = FilesFilter.getDefault();
|
|
|
|
}
|
2020-03-19 06:15:58 +00:00
|
|
|
}
|
2020-06-03 10:30:28 +00:00
|
|
|
|
|
|
|
return Promise.resolve(filterObj);
|
2020-03-19 06:15:58 +00:00
|
|
|
})
|
|
|
|
.then(filter => {
|
2020-06-03 11:05:50 +00:00
|
|
|
let dataObj = filter;
|
2020-06-03 10:30:28 +00:00
|
|
|
|
2020-03-19 06:15:58 +00:00
|
|
|
if (filter && filter.authorType) {
|
2020-06-03 10:30:28 +00:00
|
|
|
const filterObj = filter;
|
|
|
|
const authorType = filterObj.authorType;
|
2020-08-20 09:17:36 +00:00
|
|
|
const indexOfUnderscore = authorType.indexOf("_");
|
2020-03-19 06:15:58 +00:00
|
|
|
const type = authorType.slice(0, indexOfUnderscore);
|
|
|
|
const itemId = authorType.slice(indexOfUnderscore + 1);
|
2020-06-03 10:30:28 +00:00
|
|
|
|
|
|
|
if (itemId) {
|
|
|
|
dataObj = {
|
2020-03-19 06:15:58 +00:00
|
|
|
type,
|
|
|
|
itemId,
|
2020-06-03 10:30:28 +00:00
|
|
|
filter: filterObj
|
|
|
|
};
|
2020-08-20 09:17:36 +00:00
|
|
|
} else {
|
2020-06-03 10:30:28 +00:00
|
|
|
filterObj.authorType = null;
|
|
|
|
dataObj = filterObj;
|
2020-03-19 06:15:58 +00:00
|
|
|
}
|
|
|
|
}
|
2020-06-03 10:30:28 +00:00
|
|
|
return Promise.resolve(dataObj);
|
2020-03-19 06:15:58 +00:00
|
|
|
})
|
|
|
|
.then(data => {
|
2020-04-24 07:14:13 +00:00
|
|
|
if (!data) return Promise.resolve();
|
2020-03-19 06:15:58 +00:00
|
|
|
if (data instanceof FilesFilter) return Promise.resolve(data);
|
2020-06-03 10:30:28 +00:00
|
|
|
|
2020-03-19 06:15:58 +00:00
|
|
|
const { filter, itemId, type } = data;
|
|
|
|
const newFilter = filter ? filter.clone() : FilesFilter.getDefault();
|
2020-08-20 09:17:36 +00:00
|
|
|
|
2020-03-19 06:15:58 +00:00
|
|
|
switch (type) {
|
2020-08-20 09:17:36 +00:00
|
|
|
case "group":
|
2020-03-19 06:15:58 +00:00
|
|
|
return Promise.all([api.groups.getGroup(itemId), newFilter]);
|
2020-08-20 09:17:36 +00:00
|
|
|
case "user":
|
2020-03-19 06:15:58 +00:00
|
|
|
return Promise.all([api.people.getUserById(itemId), newFilter]);
|
|
|
|
default:
|
|
|
|
return Promise.resolve(newFilter);
|
|
|
|
}
|
|
|
|
})
|
2020-06-03 10:30:28 +00:00
|
|
|
.catch(err => {
|
|
|
|
Promise.resolve(FilesFilter.getDefault());
|
2020-08-20 09:17:36 +00:00
|
|
|
console.warn("Filter restored by default", err);
|
2020-06-03 10:30:28 +00:00
|
|
|
})
|
2020-03-19 06:15:58 +00:00
|
|
|
.then(data => {
|
2020-04-24 07:14:13 +00:00
|
|
|
if (!data) return Promise.resolve();
|
2020-03-19 06:15:58 +00:00
|
|
|
if (data instanceof FilesFilter) return Promise.resolve(data);
|
2020-06-03 10:30:28 +00:00
|
|
|
|
2020-03-19 06:15:58 +00:00
|
|
|
const result = data[0];
|
|
|
|
const filter = data[1];
|
2020-08-20 09:17:36 +00:00
|
|
|
const type = result.displayName ? "user" : "group";
|
2020-03-19 06:15:58 +00:00
|
|
|
const selectedItem = {
|
|
|
|
key: result.id,
|
2020-08-20 09:17:36 +00:00
|
|
|
label: type === "user" ? result.displayName : result.name,
|
2020-03-19 06:15:58 +00:00
|
|
|
type
|
|
|
|
};
|
|
|
|
filter.selectedItem = selectedItem;
|
2020-06-03 10:30:28 +00:00
|
|
|
|
2020-03-19 06:15:58 +00:00
|
|
|
return Promise.resolve(filter);
|
|
|
|
})
|
|
|
|
.then(filter => {
|
2020-04-24 07:14:13 +00:00
|
|
|
if (!filter) return Promise.resolve();
|
2020-06-03 10:30:28 +00:00
|
|
|
|
2020-03-20 13:29:18 +00:00
|
|
|
const folderId = filter.folder;
|
2020-03-19 06:15:58 +00:00
|
|
|
return fetchFiles(folderId, filter, store.dispatch);
|
2020-02-28 10:33:13 +00:00
|
|
|
})
|
|
|
|
.then(() => {
|
|
|
|
store.dispatch(setCurrentProductHomePage(config.homepage));
|
2020-08-20 09:17:36 +00:00
|
|
|
store.dispatch(
|
|
|
|
setCurrentProductId("e67be73d-f9ae-4ce1-8fec-1880cb518cb4")
|
|
|
|
);
|
2020-02-28 10:33:13 +00:00
|
|
|
store.dispatch(setIsLoaded(true));
|
|
|
|
});
|
2020-08-20 09:17:36 +00:00
|
|
|
} else {
|
2020-02-25 06:58:09 +00:00
|
|
|
store.dispatch(setIsLoaded(true));
|
2020-08-20 09:17:36 +00:00
|
|
|
}
|
2020-02-25 06:58:09 +00:00
|
|
|
|
|
|
|
ReactDOM.render(
|
|
|
|
<Provider store={store}>
|
|
|
|
<ErrorBoundary>
|
|
|
|
<App />
|
|
|
|
</ErrorBoundary>
|
|
|
|
</Provider>,
|
|
|
|
document.getElementById("root")
|
|
|
|
);
|
|
|
|
|
|
|
|
// If you want your app to work offline and load faster, you can change
|
|
|
|
// unregister() to register() below. Note this comes with some pitfalls.
|
|
|
|
// Learn more about service workers: https://bit.ly/CRA-PWA
|
2020-08-20 09:17:36 +00:00
|
|
|
serviceWorker.register();
|