Web: Fixed Files opening + added devtool: "inline-source-map"

This commit is contained in:
Alexey Safronov 2021-02-26 12:02:54 +03:00
parent f10d8ae11d
commit 96c4d63abe
10 changed files with 105 additions and 162 deletions

View File

@ -2,6 +2,7 @@
"name": "@appserver/files", "name": "@appserver/files",
"version": "0.1.0", "version": "0.1.0",
"private": "true", "private": "true",
"homepage": "/products/files",
"scripts": { "scripts": {
"start": "webpack-cli serve", "start": "webpack-cli serve",
"build": "webpack --mode production", "build": "webpack --mode production",

View File

@ -254,6 +254,7 @@
To create a production bundle, use `npm run build` or `yarn build`. To create a production bundle, use `npm run build` or `yarn build`.
--> -->
<script> <script>
console.log("FILES APP STARTED");
var pathname = window.location.pathname.toLowerCase(); var pathname = window.location.pathname.toLowerCase();
if ( if (
pathname.indexOf("doceditor") === -1 && pathname.indexOf("doceditor") === -1 &&

View File

@ -1,48 +1,8 @@
import React from "react"; import React from "react";
import store from "studio/store"; //import Shell from "studio/shell";
import ErrorBoundary from "@appserver/common/components/ErrorBoundary";
import { Provider as MobxProvider } from "mobx-react";
import ThemeProvider from "@appserver/components/theme-provider";
import "./custom.scss";
import { Base, Dark } from "@appserver/components/themes";
import initFilesStore from "./store/InitFilesStore";
import filesStore from "./store/FilesStore";
import settingsStore from "./store/SettingsStore";
import mediaViewerDataStore from "./store/MediaViewerDataStore";
import formatsStore from "./store/FormatsStore";
import versionHistoryStore from "./store/VersionHistoryStore";
import uploadDataStore from "./store/UploadDataStore";
import dialogsStore from "./store/DialogsStore";
import treeFoldersStore from "./store/TreeFoldersStore";
import selectedFolderStore from "./store/SelectedFolderStore";
import "./i18n";
const Shell = React.lazy(() => import("./Files"));
const App = () => { const App = () => {
return ( return <Shell />;
<ThemeProvider theme={Base}>
<MobxProvider
auth={store.auth}
initFilesStore={initFilesStore}
filesStore={filesStore}
settingsStore={settingsStore}
mediaViewerDataStore={mediaViewerDataStore}
formatsStore={formatsStore}
versionHistoryStore={versionHistoryStore}
uploadDataStore={uploadDataStore}
dialogsStore={dialogsStore}
treeFoldersStore={treeFoldersStore}
selectedFolderStore={selectedFolderStore}
>
<ErrorBoundary>
<React.Suspense fallback={null}>
<Shell />
</React.Suspense>
</ErrorBoundary>
</MobxProvider>
</ThemeProvider>
);
}; };
export default App; export default App;

View File

@ -1,41 +1,30 @@
import React, { useEffect, Suspense } from "react"; import React from "react";
//import { Box, Text } from "@appserver/components/src"; import { Provider as FilesProvider } from "mobx-react";
// import { useStore } from "react-redux";
// import dynamic from "@redux-dynostore/react-redux";
// import { attachReducer } from "@redux-dynostore/core";
//import rootReducer from "./store/rootReducer";
//import portalReducer from "./store/portal/reducers";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import { Switch, Route } from "react-router-dom";
import { Router, Switch, Redirect, Route } from "react-router-dom";
import Home from "./components/pages/Home"; import Home from "./components/pages/Home";
import DocEditor from "./components/pages/DocEditor"; import DocEditor from "./components/pages/DocEditor";
import Settings from "./components/pages/Settings"; import Settings from "./components/pages/Settings";
import VersionHistory from "./components/pages/VersionHistory"; import VersionHistory from "./components/pages/VersionHistory";
import config from "../package.json"; import config from "../package.json";
import "./i18n";
import Layout from "@appserver/common/components/Layout";
import history from "@appserver/common/history";
import PrivateRoute from "@appserver/common/components/PrivateRoute"; import PrivateRoute from "@appserver/common/components/PrivateRoute";
import PublicRoute from "@appserver/common/components/PublicRoute";
import NavMenu from "@appserver/common/components/NavMenu";
import Main from "@appserver/common/components/Main";
import ScrollToTop from "@appserver/common/components/Layout/ScrollToTop";
import toastr from "@appserver/common/components/Toast/toastr"; import toastr from "@appserver/common/components/Toast/toastr";
import { updateTempContent } from "@appserver/common/utils"; import { updateTempContent } from "@appserver/common/utils";
import initFilesStore from "./store/InitFilesStore";
import filesStore from "./store/FilesStore";
import settingsStore from "./store/SettingsStore";
import mediaViewerDataStore from "./store/MediaViewerDataStore";
import formatsStore from "./store/FormatsStore";
import versionHistoryStore from "./store/VersionHistoryStore";
import uploadDataStore from "./store/UploadDataStore";
import dialogsStore from "./store/DialogsStore";
import treeFoldersStore from "./store/TreeFoldersStore";
import selectedFolderStore from "./store/SelectedFolderStore";
import "./custom.scss";
import "./i18n";
//import { regDesktop } from "@appserver/common/src/desktop"; //import { regDesktop } from "@appserver/common/src/desktop";
const Error520 = React.lazy(() => const Error404 = React.lazy(() => import("@appserver/common/pages/errors/404"));
import("@appserver/common/pages/errors/520")
);
const Error404 = React.lazy(() =>
import("@appserver/common/pages/errors/404")
);
const Offline = React.lazy(() =>
import("@appserver/common/pages/errors/offline")
);
//const Login = React.lazy(() => import("login/page"));
class FilesContent extends React.Component { class FilesContent extends React.Component {
constructor(props) { constructor(props) {
@ -85,17 +74,10 @@ class FilesContent extends React.Component {
// } // }
render() { render() {
const { homepage, isDesktop } = this.props; const { homepage /*, isDesktop*/ } = this.props;
return navigator.onLine ? ( return (
<Layout>
<Router history={history}>
<ScrollToTop />
{!this.isEditor && <NavMenu />}
<Main isDesktop={isDesktop}>
<Suspense fallback={null}>
<Switch> <Switch>
<Redirect exact from="/" to={`${homepage}`} />
<PrivateRoute <PrivateRoute
exact exact
path={`${homepage}/settings/:setting`} path={`${homepage}/settings/:setting`}
@ -103,10 +85,7 @@ class FilesContent extends React.Component {
/> />
<Route <Route
exact exact
path={[ path={[`${homepage}/doceditor`, `/Products/Files/DocEditor.aspx`]}
`${homepage}/doceditor`,
`/Products/Files/DocEditor.aspx`,
]}
component={DocEditor} component={DocEditor}
/> />
<PrivateRoute <PrivateRoute
@ -116,48 +95,45 @@ class FilesContent extends React.Component {
/> />
<PrivateRoute exact path={homepage} component={Home} /> <PrivateRoute exact path={homepage} component={Home} />
<PrivateRoute path={`${homepage}/filter`} component={Home} /> <PrivateRoute path={`${homepage}/filter`} component={Home} />
{/* <PublicRoute
exact
path={[
"/login",
"/login/error=:error",
"/login/confirmed-email=:confirmedEmail",
]}
component={Login}
/> */}
<PrivateRoute
exact
path={`/error=:error`}
component={Error520}
/>
<PrivateRoute component={Error404} /> <PrivateRoute component={Error404} />
</Switch> </Switch>
</Suspense>
</Main>
</Router>
</Layout>
) : (
<Offline />
); );
} }
} }
export default inject(({ auth, initFilesStore }) => { const Files = inject(({ auth, initFilesStore }) => {
const homepage = "/products/files"; //TODO: add homepage to config? const homepage = config.homepage; // "/products/files"; //TODO: add homepage to config?
return { return {
isDesktop: auth.settingsStore.isDesktopClient, //isDesktop: auth.settingsStore.isDesktopClient,
user: auth.userStore.user, user: auth.userStore.user,
isAuthenticated: auth.isAuthenticated, isAuthenticated: auth.isAuthenticated,
homepage: auth.settingsStore.homepage || homepage, homepage: auth.settingsStore.homepage || homepage,
encryptionKeys: auth.settingsStore.encryptionKeys, encryptionKeys: auth.settingsStore.encryptionKeys,
isEncryption: auth.settingsStore.isEncryptionSupport, isEncryption: auth.settingsStore.isEncryptionSupport,
isLoaded: initFilesStore.isLoaded, isLoaded: auth.isLoaded && initFilesStore.isLoaded,
setIsLoaded: initFilesStore.setIsLoaded, setIsLoaded: initFilesStore.setIsLoaded,
setEncryptionKeys: auth.settingsStore.setEncryptionKeys, setEncryptionKeys: auth.settingsStore.setEncryptionKeys,
loadFilesInfo: async () => { loadFilesInfo: async () => {
await auth.init(); //await auth.init();
await initFilesStore.initFiles(); await initFilesStore.initFiles();
auth.setProductVersion(config.version); auth.setProductVersion(config.version);
}, },
}; };
})(observer(FilesContent)); })(observer(FilesContent));
export default () => (
<FilesProvider
initFilesStore={initFilesStore}
filesStore={filesStore}
settingsStore={settingsStore}
mediaViewerDataStore={mediaViewerDataStore}
formatsStore={formatsStore}
versionHistoryStore={versionHistoryStore}
uploadDataStore={uploadDataStore}
dialogsStore={dialogsStore}
treeFoldersStore={treeFoldersStore}
selectedFolderStore={selectedFolderStore}
>
<Files />
</FilesProvider>
);

View File

@ -7,6 +7,7 @@ const deps = require("./package.json").dependencies;
module.exports = { module.exports = {
entry: "./src/index", entry: "./src/index",
mode: "development", mode: "development",
devtool: "inline-source-map",
devServer: { devServer: {
contentBase: [path.join(__dirname, "public"), path.join(__dirname, "dist")], contentBase: [path.join(__dirname, "public"), path.join(__dirname, "dist")],
contentBasePublicPath: "/products/files/", contentBasePublicPath: "/products/files/",
@ -14,13 +15,14 @@ module.exports = {
historyApiFallback: true, historyApiFallback: true,
hot: false, hot: false,
hotOnly: false, hotOnly: false,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
"Access-Control-Allow-Headers":
"X-Requested-With, content-type, Authorization",
}, },
//openPage: "http://localhost:8092/products/files",
output: {
publicPath: "auto",
chunkFilename: "[id].[contenthash].js",
}, },
resolve: { resolve: {
extensions: [".jsx", ".js", ".json"], extensions: [".jsx", ".js", ".json"],
fallback: { fallback: {
@ -28,6 +30,11 @@ module.exports = {
}, },
}, },
output: {
publicPath: "auto",
chunkFilename: "[id].[contenthash].js",
},
module: { module: {
rules: [ rules: [
{ {
@ -86,7 +93,7 @@ module.exports = {
studio: "studio@http://localhost:5001/remoteEntry.js", studio: "studio@http://localhost:5001/remoteEntry.js",
}, },
exposes: { exposes: {
"./page": "./src/bootstrap.js", //TODO: "./page": "./src/App.js", "./app": "./src/Files.jsx",
}, },
shared: { shared: {
...deps, ...deps,

View File

@ -7,6 +7,7 @@ const deps = require("./package.json").dependencies;
module.exports = { module.exports = {
entry: "./src/index", entry: "./src/index",
mode: "development", mode: "development",
devtool: "inline-source-map",
devServer: { devServer: {
contentBase: [path.join(__dirname, "public"), path.join(__dirname, "dist")], contentBase: [path.join(__dirname, "public"), path.join(__dirname, "dist")],
contentBasePublicPath: "/products/people/", contentBasePublicPath: "/products/people/",
@ -85,7 +86,7 @@ module.exports = {
studio: "studio@http://localhost:5001/remoteEntry.js", studio: "studio@http://localhost:5001/remoteEntry.js",
}, },
exposes: { exposes: {
"./page": "./src/People.jsx", "./app": "./src/People.jsx",
}, },
shared: { shared: {
...deps, ...deps,

View File

@ -1,30 +1,12 @@
import React from "react"; import React from "react";
import store from "studio/store";
import ErrorBoundary from "@appserver/common/components/ErrorBoundary"; import ErrorBoundary from "@appserver/common/components/ErrorBoundary";
import { Provider as MobxProvider } from "mobx-react"; import Shell from "studio/shell";
import ThemeProvider from "@appserver/components/theme-provider";
import "./custom.scss";
import { Base, Dark } from "@appserver/components/themes";
import "./i18n";
const Shell = React.lazy(() => import("./Shell")); //import("studio/shell"));
const App = () => { const App = () => {
return ( return (
<ThemeProvider theme={Base}>
<MobxProvider
{...store}
// auth={authStore}
// payments={paymentStore}
// wizard={wizardStore}
// setup={setupStore}
>
<ErrorBoundary> <ErrorBoundary>
<React.Suspense fallback={null}>
<Shell /> <Shell />
</React.Suspense>
</ErrorBoundary> </ErrorBoundary>
</MobxProvider>
</ThemeProvider>
); );
}; };

View File

@ -12,14 +12,20 @@ import ScrollToTop from "@appserver/common/components/Layout/ScrollToTop";
import history from "@appserver/common/history"; import history from "@appserver/common/history";
import toastr from "@appserver/common/components/Toast"; import toastr from "@appserver/common/components/Toast";
import { updateTempContent } from "@appserver/common/utils"; import { updateTempContent } from "@appserver/common/utils";
import { Provider as MobxProvider } from "mobx-react";
import ThemeProvider from "@appserver/components/theme-provider";
import { Base, Dark } from "@appserver/components/themes";
import store from "studio/store";
import config from "../package.json"; import config from "../package.json";
import "./custom.scss";
import "./i18n";
const Payments = React.lazy(() => import("./components/pages/Payments")); const Payments = React.lazy(() => import("./components/pages/Payments"));
const Error404 = React.lazy(() => import("@appserver/common/pages/errors/404")); const Error404 = React.lazy(() => import("@appserver/common/pages/errors/404"));
const Home = React.lazy(() => import("./components/pages/Home")); const Home = React.lazy(() => import("./components/pages/Home"));
const Login = React.lazy(() => import("login/page")); const Login = React.lazy(() => import("login/app"));
const People = React.lazy(() => import("people/page")); const People = React.lazy(() => import("people/app"));
const Files = React.lazy(() => import("files/page")); const Files = React.lazy(() => import("files/app"));
const About = React.lazy(() => import("./components/pages/About")); const About = React.lazy(() => import("./components/pages/About"));
const Settings = React.lazy(() => import("./components/pages/Settings")); const Settings = React.lazy(() => import("./components/pages/Settings"));
const ComingSoon = React.lazy(() => import("./components/pages/ComingSoon")); const ComingSoon = React.lazy(() => import("./components/pages/ComingSoon"));
@ -224,7 +230,7 @@ const Shell = ({ items = [], page = "home", ...rest }) => {
// export default connect(mapStateToProps, mapDispatchToProps)(Shell); // export default connect(mapStateToProps, mapDispatchToProps)(Shell);
export default inject(({ auth }) => { const ShellWrapper = inject(({ auth }) => {
const { init, isLoaded } = auth; const { init, isLoaded } = auth;
const pathname = window.location.pathname.toLowerCase(); const pathname = window.location.pathname.toLowerCase();
@ -239,3 +245,11 @@ export default inject(({ auth }) => {
isLoaded, isLoaded,
}; };
})(observer(Shell)); })(observer(Shell));
export default () => (
<ThemeProvider theme={Base}>
<MobxProvider {...store}>
<ShellWrapper />
</MobxProvider>
</ThemeProvider>
);

View File

@ -7,6 +7,7 @@ const deps = require("./package.json").dependencies;
module.exports = { module.exports = {
entry: "./src/index", entry: "./src/index",
mode: "development", mode: "development",
devtool: "inline-source-map",
devServer: { devServer: {
contentBase: [path.join(__dirname, "public"), path.join(__dirname, "dist")], contentBase: [path.join(__dirname, "public"), path.join(__dirname, "dist")],
port: 5001, port: 5001,

View File

@ -7,7 +7,7 @@ const deps = require("./package.json").dependencies;
module.exports = { module.exports = {
entry: "./src/index", entry: "./src/index",
mode: "development", mode: "development",
devtool: "inline-source-map",
devServer: { devServer: {
contentBase: [path.join(__dirname, "public"), path.join(__dirname, "dist")], contentBase: [path.join(__dirname, "public"), path.join(__dirname, "dist")],
contentBasePublicPath: "/login", contentBasePublicPath: "/login",
@ -76,7 +76,7 @@ module.exports = {
studio: "studio@http://localhost:5001/remoteEntry.js", studio: "studio@http://localhost:5001/remoteEntry.js",
}, },
exposes: { exposes: {
"./page": "./src/Login.jsx", "./app": "./src/Login.jsx",
}, },
shared: { shared: {
...deps, ...deps,