aboutsummaryrefslogtreecommitdiffstats
path: root/workflow-designer-ui/src/main/frontend/src/App.js
blob: 4b42f6f3ad8abf19952c0eee450c816537f3ac9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* Copyright © 2018 European Support Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
 *      http://www.apache.org/licenses/LICENSE-2.0
*
 * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import { hot } from 'react-hot-loader';
import React, { Component } from 'react';
import { Route } from 'react-router-dom';

import { PluginPubSub } from 'shared/pubsub/plugin-pubsub';
import 'resources/scss/style.scss';
import 'bpmn-js-properties-panel/styles/properties.less';
import { routes } from 'wfapp/routes';
import { USER_ID } from 'wfapp/appConstants';

const RouteWithSubRoutes = route => (
    <Route
        path={route.path}
        exact={route.exact}
        render={props => <route.component {...props} routes={route.routes} />}
    />
);

class App extends Component {
    constructor(props) {
        super(props);

        this.searchParams = new URLSearchParams(location.search);

        if (this.searchParams.get('userId')) {
            localStorage.setItem(USER_ID, this.searchParams.get('userId'));
        }
    }

    componentDidMount() {
        const eventsClientId = this.searchParams.get('eventsClientId');
        const parentUrl = this.searchParams.get('parentUrl');

        if (eventsClientId && parentUrl) {
            const client = new PluginPubSub(eventsClientId, parentUrl);

            client.notify('READY');
        }
    }

    render() {
        return routes.map((route, i) => (
            <RouteWithSubRoutes key={`App.route.${i}`} {...route} />
        ));
    }
}

export default hot(module)(App);