Fix federated login, only create iframes for local user refs #15064
[arvados-workbench2.git] / src / views / main-panel / main-panel.tsx
index 22455c3c379988e9db84fff65da7873bf69f60bd..5009f12987ab59d215a0f697124319ef7bfa5efa 100644 (file)
@@ -2,77 +2,22 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import * as React from 'react';
-import { connect, DispatchProp } from 'react-redux';
-import { push } from 'react-router-redux';
-import { LinearProgress, Grid } from '@material-ui/core';
-import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles';
-import { ArvadosTheme } from '~/common/custom-theme';
-import { isSystemWorking } from '~/store/progress-indicator/progress-indicator-reducer';
 import { RootState } from '~/store/store';
-import { User } from '~/models/user';
-import { WorkbenchPanel } from '~/views/workbench/workbench';
-import { LoginPanel } from '~/views/login-panel/login-panel';
-import { MainAppBar } from '~/views-components/main-app-bar/main-app-bar';
-
-type CssRules = 'root';
-
-const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
-    root: {
-        overflow: 'hidden',
-        width: '100vw',
-        height: '100vh'
-    }
-});
-
-interface MainPanelDataProps {
-    user?: User;
-    working: boolean;
-}
-
-interface MainPanelGeneralProps {
-    buildInfo: string;
-}
-
-interface MainPanelState {
-    searchText: string;
-}
-
-type MainPanelProps = MainPanelDataProps & MainPanelGeneralProps & DispatchProp<any> & WithStyles<CssRules>;
+import { connect } from 'react-redux';
+import { MainPanelRoot, MainPanelRootDataProps } from '~/views/main-panel/main-panel-root';
+import { isSystemWorking } from '~/store/progress-indicator/progress-indicator-reducer';
+import { isWorkbenchLoading } from '~/store/workbench/workbench-actions';
 
-export const MainPanel = withStyles(styles)(
-    connect<MainPanelDataProps>(
-        (state: RootState) => ({
-            user: state.auth.user,
-            working: isSystemWorking(state.progressIndicator)
-        })
-    )(
-        class extends React.Component<MainPanelProps, MainPanelState> {
-            state = {
-                searchText: "",
-            };
+const mapStateToProps = (state: RootState): MainPanelRootDataProps => {
+    return {
+        user: state.auth.user,
+        working: isSystemWorking(state.progressIndicator),
+        loading: isWorkbenchLoading(state),
+        buildInfo: state.appInfo.buildInfo,
+        uuidPrefix: state.auth.localCluster
+    };
+};
 
-            render() {
-                const { classes, user, buildInfo, working } = this.props;
-                const { searchText } = this.state;
-                return <>
-                    <MainAppBar
-                        searchText={searchText}
-                        user={user}
-                        onSearch={this.onSearch}
-                        buildInfo={buildInfo}>
-                        {working ? <LinearProgress color="secondary" /> : null}
-                    </MainAppBar>
-                    <Grid container direction="column" className={classes.root}>
-                        {user ? <WorkbenchPanel /> : <LoginPanel />}
-                    </Grid>
-                </>;
-            }
+const mapDispatchToProps = null;
 
-            onSearch = (searchText: string) => {
-                this.setState({ searchText });
-                this.props.dispatch(push(`/search?q=${searchText}`));
-            }
-        }
-    )
-);
\ No newline at end of file
+export const MainPanel = connect(mapStateToProps, mapDispatchToProps)(MainPanelRoot);