ghost-portal/packages/apps-electron/src/index.tsx
Krzysztof Jelski f8f7eedad3
Improve Electron App security (#2923)
* WIP on storing accounts without electron remote modules.

* Improve security by isolating main and renderer.

* Apply suggestions from code review

Co-authored-by: Jaco Greeff <jacogr@gmail.com>

Co-authored-by: Jaco Greeff <jacogr@gmail.com>
2020-06-10 18:09:55 +02:00

56 lines
1.6 KiB
TypeScript

// Copyright 2017-2020 @polkadot/apps authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// setup these right at front
import '@polkadot/apps/initSettings';
import 'semantic-ui-css/semantic.min.css';
import '@polkadot/react-components/i18n';
import React, { Suspense } from 'react';
import ReactDOM from 'react-dom';
import { HashRouter } from 'react-router-dom';
import { ThemeProvider } from 'styled-components';
import settings from '@polkadot/ui-settings';
import Queue from '@polkadot/react-components/Status/Queue';
import { BlockAuthors, Events } from '@polkadot/react-query';
import AccountSidebar from '@polkadot/app-accounts/Sidebar';
import { Api } from '@polkadot/react-api';
import Apps from '@polkadot/apps/Apps';
import { RemoteElectronStore } from './renderer/remote-electron-store';
const rootId = 'root';
const rootElement = document.getElementById(rootId);
const theme = { theme: settings.uiTheme };
const store = new RemoteElectronStore();
if (!rootElement) {
throw new Error(`Unable to find element with id '${rootId}'`);
}
ReactDOM.render(
<Suspense fallback='...'>
<ThemeProvider theme={theme}>
<Queue>
<Api
store={store}
url={settings.apiUrl}
>
<BlockAuthors>
<Events>
<AccountSidebar>
<HashRouter>
<Apps />
</HashRouter>
</AccountSidebar>
</Events>
</BlockAuthors>
</Api>
</Queue>
</ThemeProvider>
</Suspense>,
rootElement
);