diff --git a/app/main.dev.js b/app/main.dev.js index 122ef61f..dfe63df2 100644 --- a/app/main.dev.js +++ b/app/main.dev.js @@ -25,6 +25,9 @@ if (process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true') const path = require('path'); const p = path.join(__dirname, '..', 'app', 'node_modules'); require('module').globalPaths.push(p); + + // set icon + app.dock.setIcon(`${path.join(__dirname, '..', 'resources')}/zap_2.png`) } const installExtensions = async () => { @@ -64,6 +67,8 @@ app.on('ready', async () => { frame: false }); + mainWindow.maximize(); + mainWindow.loadURL(`file://${__dirname}/app.html`); // @TODO: Use 'ready-to-show' event diff --git a/app/reducers/peers.js b/app/reducers/peers.js index d3a716bd..7528b11d 100644 --- a/app/reducers/peers.js +++ b/app/reducers/peers.js @@ -3,6 +3,14 @@ import { callApi } from '../api' // ------------------------------------ // Constants // ------------------------------------ +export const CONNECT_PEER = 'CONNECT_PEER' +export const CONNECT_SUCCESS = 'CONNECT_SUCCESS' +export const CONNECT_FAILURE = 'CONNECT_FAILURE' + +export const DISCONNECT_PEER = 'DISCONNECT_PEER' +export const DISCONNECT_SUCCESS = 'DISCONNECT_SUCCESS' +export const DISCONNECT_FAILURE = 'DISCONNECT_FAILURE' + export const SET_PEER_FORM = 'SET_PEER_FORM' export const SET_PEER = 'SET_PEER' @@ -13,10 +21,48 @@ export const RECEIVE_PEERS = 'RECEIVE_PEERS' // ------------------------------------ // Actions // ------------------------------------ -export function setPeerForm(isOpen) { +export function connectPeer() { + return { + type: CONNECT_PEER + } +} + +export function connectSuccess(peer) { + return { + type: CONNECT_SUCCESS, + peer + } +} + +export function connectFailure() { + return { + type: CONNECT_FAILURE + } +} + +export function disconnectPeer() { + return { + type: DISCONNECT_PEER + } +} + +export function disconnectSuccess(pubkey) { + return { + type: DISCONNECT_SUCCESS, + pubkey + } +} + +export function disconnectFailure() { + return { + type: DISCONNECT_FAILURE + } +} + +export function setPeerForm(form) { return { type: SET_PEER_FORM, - isOpen + form } } @@ -46,11 +92,36 @@ export const fetchPeers = () => async (dispatch) => { dispatch(receivePeers(peers.data)) } +export const connectRequest = ({ pubkey, host }) => async (dispatch) => { + dispatch(connectPeer()) + const success = await callApi('connect', 'post', { pubkey, host }) + success.data ? dispatch(connectSuccess({ pub_key: pubkey, address: host, peer_id: success.data.peer_id })) : dispatch(connectFailure()) + + return success +} + +export const disconnectRequest = ({ pubkey }) => async (dispatch) => { + dispatch(disconnectPeer()) + const success = await callApi('disconnect', 'post', { pubkey }) + console.log('success: ', success) + success ? dispatch(disconnectSuccess(pubkey)) : dispatch(disconnectFailure()) + + return success +} + // ------------------------------------ // Action Handlers // ------------------------------------ const ACTION_HANDLERS = { - [SET_PEER_FORM]: (state, { isOpen }) => ({ ...state, peerForm: { ...state.form, isOpen } }), + [DISCONNECT_PEER]: (state) => ({ ...state, disconnecting: true }), + [DISCONNECT_SUCCESS]: (state, { pubkey }) => ({ ...state, disconnecting: false, peers: state.peers.filter(peer => peer.pub_key !== pubkey) }), + [DISCONNECT_FAILURE]: (state) => ({ ...state, disconnecting: false }), + + [CONNECT_PEER]: (state) => ({ ...state, connecting: true }), + [CONNECT_SUCCESS]: (state, { peer }) => ({ ...state, connecting: false, peers: [...state.peers, peer] }), + [CONNECT_FAILURE]: (state) => ({ ...state, connecting: false }), + + [SET_PEER_FORM]: (state, { form }) => ({ ...state, peerForm: Object.assign({}, state.peerForm, form) }), [SET_PEER]: (state, { peer }) => ({ ...state, peer }), @@ -77,13 +148,15 @@ const initialState = { peer: null, peerForm: { isOpen: false, - pub_key: '', - address: '' - } + pubkey: '', + host: '' + }, + connecting: false, + disconnecting: false } export default function peersReducer(state = initialState, action) { const handler = ACTION_HANDLERS[action.type] return handler ? handler(state, action) : state -} \ No newline at end of file +} diff --git a/app/routes/wallet/components/Wallet.js b/app/routes/wallet/components/Wallet.js index f054d643..0fcc9436 100644 --- a/app/routes/wallet/components/Wallet.js +++ b/app/routes/wallet/components/Wallet.js @@ -25,10 +25,11 @@ class Wallet extends Component { peerModalOpen, channelModalOpen, setPeerForm, - setChannelForm + setChannelForm, + connectRequest, + disconnectRequest } = this.props - console.log('setPeerForm: ', setPeerForm) - console.log('setChannelForm: ', setChannelForm) + return (