
* Introduce Modal, add some styles from the webapp * Remove bootstrap from LoadingScreen/WelcomeScreen * Migrate add/edit server modal to Modal, remove bootstrap * Migrate remove server modal to Modal, remove bootstrap * Migrate certificate modal to Modal, remove bootstrap * Migrate login and permission modals to Modal, remove Bootstrap * Misc fixes * E2E tests for current modals * Update src/renderer/components/Modal.tsx Co-authored-by: Daniel Espino García <larkox@gmail.com> * Update src/renderer/components/Modal.tsx Co-authored-by: Daniel Espino García <larkox@gmail.com> * PR feedback --------- Co-authored-by: Daniel Espino García <larkox@gmail.com> Co-authored-by: Mattermost Build <build@mattermost.com>
71 lines
1.8 KiB
TypeScript
71 lines
1.8 KiB
TypeScript
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import React from 'react';
|
|
import ReactDOM from 'react-dom';
|
|
|
|
import LoadingScreen from '../../components/LoadingScreen';
|
|
|
|
import 'renderer/css/components/LoadingAnimation.css';
|
|
import 'renderer/css/components/LoadingScreen.css';
|
|
|
|
type Props = Record<string, never>;
|
|
|
|
type State = {
|
|
showLoadingScreen: boolean;
|
|
darkMode: boolean;
|
|
}
|
|
|
|
class LoadingScreenRoot extends React.PureComponent<Props, State> {
|
|
constructor(props: Props) {
|
|
super(props);
|
|
this.state = {
|
|
showLoadingScreen: true,
|
|
darkMode: false,
|
|
};
|
|
}
|
|
|
|
async componentDidMount() {
|
|
window.desktop.onDarkModeChange(this.setDarkMode);
|
|
const darkMode = await window.desktop.getDarkMode();
|
|
this.setDarkMode(darkMode);
|
|
|
|
window.desktop.loadingScreen.onToggleLoadingScreenVisibility(this.onToggleLoadingScreenVisibility);
|
|
|
|
window.addEventListener('click', () => {
|
|
window.desktop.closeServersDropdown();
|
|
window.desktop.closeDownloadsDropdown();
|
|
});
|
|
}
|
|
|
|
setDarkMode = (darkMode: boolean) => {
|
|
this.setState({darkMode});
|
|
};
|
|
|
|
onToggleLoadingScreenVisibility = (showLoadingScreen: boolean) => {
|
|
this.setState({showLoadingScreen});
|
|
};
|
|
|
|
onFadeOutComplete = () => {
|
|
window.desktop.loadingScreen.loadingScreenAnimationFinished();
|
|
};
|
|
|
|
render() {
|
|
return (
|
|
<LoadingScreen
|
|
loading={this.state.showLoadingScreen}
|
|
darkMode={this.state.darkMode}
|
|
onFadeOutComplete={this.onFadeOutComplete}
|
|
/>
|
|
);
|
|
}
|
|
}
|
|
const start = async () => {
|
|
ReactDOM.render(
|
|
<LoadingScreenRoot/>,
|
|
document.getElementById('app'),
|
|
);
|
|
};
|
|
|
|
start();
|