index.js 1.97 KiB
Newer Older
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
Amaury Martiny's avatar
Amaury Martiny committed
// This file is part of Parity.
//
Amaury Martiny's avatar
Amaury Martiny committed
// SPDX-License-Identifier: BSD-3-Clause
import { checkClockSync } from '@parity/electron';
import settings from 'electron-settings';
import Pino from '../utils/pino';
import setupParityEthereum from '../methods/setupParityEthereum';
import ipcChannel from '../ipcChannel';
Amaury Martiny's avatar
Amaury Martiny committed

const pino = Pino();

var rpcResponsesSetUp = false;

Amaury Martiny's avatar
Amaury Martiny committed
/**
 * Handle all asynchronous messages from renderer to main.
 */
export default async (fetherApp, event, data) => {
Amaury Martiny's avatar
Amaury Martiny committed
  try {
    pino.debug(
      `Received IPC message from ${data.from}, with data ${JSON.stringify(
        data
      )}`
    );
    if (!data) {
Amaury Martiny's avatar
Amaury Martiny committed
      return;
    }

    switch (data.action) {
      case 'APP_RIGHT_CLICK_REQUEST': {
        if (!fetherApp.win) {
          return;
        }
        fetherApp.contextWindowMenu.getMenu().popup({ window: fetherApp.win });
Amaury Martiny's avatar
Amaury Martiny committed
        break;
      }
      case 'CHECK_CLOCK_SYNC_REQUEST': {
        const payload = await checkClockSync();
        event.sender.send('send-to-renderer', {
          action: 'CHECK_CLOCK_SYNC_RESPONSE',
          from: 'fether:electron',
          payload
        });

        break;
      }
      case 'RESTART_NODE_REQUEST': {
        setupParityEthereum();

        break;
      }
      case 'SET_LANGUAGE_REQUEST': {
        event.sender.send('send-to-renderer', {
          action: 'SET_LANGUAGE_RESPONSE',
          from: 'fether:electron',
          payload: settings.get('fether-language')
      case 'RPC_REQUEST': {
        if (!rpcResponsesSetUp) {
          ipcChannel.on('message', data => {
            event.sender.send('send-to-renderer', {
              action: 'RPC_RESPONSE',
              from: 'fether:electron',
              payload: data
            });
          });
          rpcResponsesSetUp = true;
        }

        ipcChannel.send(data.payload);
Amaury Martiny's avatar
Amaury Martiny committed
        break;
      }
      default:
Amaury Martiny's avatar
Amaury Martiny committed
  } catch (err) {
    pino.error(err);