-
-
-
+
diff --git a/electron-react/src/pages/Farmer.js b/electron-react/src/pages/Farmer.js
index a7b7a63548..2cb6b1463f 100644
--- a/electron-react/src/pages/Farmer.js
+++ b/electron-react/src/pages/Farmer.js
@@ -1,5 +1,4 @@
import React, { Component } from "react";
-import CssBaseline from "@material-ui/core/CssBaseline";
import Grid from "@material-ui/core/Grid";
import { makeStyles, withStyles } from "@material-ui/core/styles";
import Container from "@material-ui/core/Container";
@@ -9,8 +8,6 @@ import Box from "@material-ui/core/Box";
import {
Paper,
TableRow,
- Drawer,
- Divider,
List,
ListItem,
ListItemText,
@@ -37,9 +34,6 @@ import TablePagination from "@material-ui/core/TablePagination";
import RefreshIcon from "@material-ui/icons/Refresh";
import Connections from "./Connections";
-import Plotter from "./Plotter";
-import { presentFarmer } from "../modules/farmer_menu";
-import { presentPlotter, changeFarmerMenu } from "../modules/farmer_menu";
import { big_int_to_array, arr_to_hex, sha256 } from "../util/utils";
import { mojo_to_chia_string } from "../util/chia";
import HelpIcon from "@material-ui/icons/Help";
@@ -535,74 +529,35 @@ const FarmerContent = props => {
const closeConnectionCallback = node_id => {
dispatch(closeConnection(node_id));
};
-
- const to_present = useSelector(state => state.farmer_menu.view);
-
- if (to_present === presentFarmer) {
- return (
-
-
- {/* Chart */}
-
-
-
-
-
-
-
-
-
-
-
-
+ return (
+
+
+ {/* Chart */}
+
+
-
- );
- } else {
- return ;
- }
-};
-
-const FarmerListItem = props => {
- const dispatch = useDispatch();
- const label = props.label;
- const type = props.type;
- function present() {
- if (type === presentFarmer) {
- dispatch(changeFarmerMenu(presentFarmer));
- } else if (type === presentPlotter) {
- dispatch(changeFarmerMenu(presentPlotter));
- }
- }
-
- return (
-
-
-
+
+
+
+
+
+
+
+
+
+
+
);
};
-const FarmerMenuList = () => {
- return (
-
-
-
-
-
-
- );
-};
class Farmer extends Component {
constructor(props) {
super(props);
@@ -671,19 +626,8 @@ class Farmer extends Component {
render() {
const classes = this.props.classes;
- var open = true;
return (
-
-
-
-
({
marginTop: theme.spacing(2),
marginBottom: theme.spacing(1)
},
+ bottomButtonRed: {
+ width: 400,
+ height: 45,
+ marginTop: theme.spacing(2),
+ marginBottom: theme.spacing(1),
+ color: "red"
+ },
logo: {
marginTop: theme.spacing(8),
marginBottom: theme.spacing(3)
@@ -82,6 +95,8 @@ const SelectKey = () => {
state => state.wallet_state.public_key_fingerprints
);
+ const [open, setOpen] = React.useState(false);
+
const handleClick = fingerprint => {
return () => dispatch(log_in(fingerprint));
};
@@ -94,6 +109,20 @@ const SelectKey = () => {
dispatch(delete_key(fingerprint));
};
};
+
+ const handleClickOpen = () => {
+ setOpen(true);
+ };
+
+ const handleClose = () => {
+ setOpen(false);
+ };
+
+ const handleCloseDelete = () => {
+ handleClose();
+ dispatch(delete_all_keys());
+ };
+
const goToMnemonics = () => {
dispatch(changeEntranceMenu(presentOldWallet));
};
@@ -187,8 +216,42 @@ const SelectKey = () => {
Create a new private key
+
+
+
+
);
};
diff --git a/electron-react/src/pages/sidebar.js b/electron-react/src/pages/sidebar.js
index acdac92b4f..9844c93c40 100644
--- a/electron-react/src/pages/sidebar.js
+++ b/electron-react/src/pages/sidebar.js
@@ -1,137 +1,111 @@
import React from "react";
-import ListItem from "@material-ui/core/ListItem";
-import ListItemIcon from "@material-ui/core/ListItemIcon";
-import ListItemText from "@material-ui/core/ListItemText";
import {
presentWallet,
presentNode,
presentFarmer,
changeMainMenu,
- presentTrading
+ presentTrading,
+ presentPlotter
} from "../modules/mainMenu";
-import { delete_all_keys, logOut } from "../modules/message";
+import { useSelector } from "react-redux";
+import { logOut } from "../modules/message";
import { useDispatch } from "react-redux";
import List from "@material-ui/core/List";
import Divider from "@material-ui/core/Divider";
-import AccountBalanceWalletIcon from "@material-ui/icons/AccountBalanceWallet";
-import AccountTreeIcon from "@material-ui/icons/AccountTree";
-import DonutLargeIcon from "@material-ui/icons/DonutLarge";
-import LockIcon from "@material-ui/icons/Lock";
-import DeleteForeverIcon from "@material-ui/icons/DeleteForever";
-import Button from "@material-ui/core/Button";
-import Dialog from "@material-ui/core/Dialog";
-import DialogActions from "@material-ui/core/DialogActions";
-import DialogContent from "@material-ui/core/DialogContent";
-import DialogContentText from "@material-ui/core/DialogContentText";
-import DialogTitle from "@material-ui/core/DialogTitle";
+
import { changeEntranceMenu, presentSelectKeys } from "../modules/entranceMenu";
-import ImportExportIcon from "@material-ui/icons/ImportExport";
+import walletSidebarLogo from "../assets/img/wallet_sidebar.svg"; // Tell webpack this JS file uses this image
+import farmSidebarLogo from "../assets/img/farm_sidebar.svg";
+import helpSidebarLogo from "../assets/img/help_sidebar.svg";
+import homeSidebarLogo from "../assets/img/home_sidebar.svg";
+import plotSidebarLogo from "../assets/img/plot_sidebar.svg";
+import poolSidebarLogo from "../assets/img/pool_sidebar.svg";
+import { makeStyles } from "@material-ui/core/styles";
+
+const useStyles = makeStyles(theme => ({
+ div: {
+ textAlign: "center",
+ cursor: "pointer"
+ },
+ label: {
+ fontFamily: "Roboto",
+ fontWeight: "300",
+ fontSize: "16px",
+ fontStyle: "normal",
+ marginTop: "5px"
+ },
+ labelChosen: {
+ fontFamily: "Roboto",
+ fontWeight: "500",
+ fontSize: "16px",
+ fontStyle: "normal",
+ marginTop: "5px"
+ }
+}));
const menuItems = [
- {
- label: "Wallet",
- present: presentWallet,
- icon:
- },
{
label: "Full Node",
present: presentNode,
- icon:
+ icon:
},
{
- label: "Farming",
+ label: "Wallet",
+ present: presentWallet,
+ icon:
+ },
+ {
+ label: "Plot",
+ present: presentPlotter,
+ icon:
+ },
+ {
+ label: "Farm",
present: presentFarmer,
- icon:
+ icon:
},
{
- label: "Trading",
+ label: "Trade",
present: presentTrading,
- icon:
+ icon:
+ },
+ {
+ label: "Keys",
+ changeKeys: true,
+ icon:
}
];
-const MenuItem = menuItem => {
+const MenuItem = (menuItem, currentView) => {
+ const classes = useStyles();
const dispatch = useDispatch();
const item = menuItem;
function presentMe() {
- dispatch(changeMainMenu(item.present));
+ if (item.changeKeys) {
+ dispatch(logOut("log_out", {}));
+ dispatch(changeEntranceMenu(presentSelectKeys));
+ } else {
+ dispatch(changeMainMenu(item.present));
+ }
}
+ const labelClass =
+ currentView === item.present ? classes.labelChosen : classes.label;
return (
-
- {item.icon}
-
-
+
+ {item.icon}
+
{item.label}
+
);
};
export const SideBar = () => {
- const [open, setOpen] = React.useState(false);
- const dispatch = useDispatch();
-
- const handleClickOpen = () => {
- setOpen(true);
- };
-
- const handleClose = () => {
- setOpen(false);
- };
-
- const handleCloseDelete = () => {
- handleClose();
- dispatch(delete_all_keys());
- };
-
- function changeKey() {
- // console.log("Changing key");
- dispatch(logOut("log_out", {}));
- dispatch(changeEntranceMenu(presentSelectKeys));
- }
-
+ const currentView = useSelector(state => state.main_menu.view);
return (
-
{menuItems.map(item => MenuItem(item))}
+
{menuItems.map(item => MenuItem(item, currentView))}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
);
};
diff --git a/electron-react/src/pages/trading/CreateOffer.js b/electron-react/src/pages/trading/CreateOffer.js
index 425c71ed92..b85885523c 100644
--- a/electron-react/src/pages/trading/CreateOffer.js
+++ b/electron-react/src/pages/trading/CreateOffer.js
@@ -209,7 +209,7 @@ export const CreateOffer = () => {
return;
}
let mojo = chia_to_mojo(amount_input.value);
- if (wallets[wallet_id.value].type == "COLOURED_COIN") {
+ if (wallets[wallet_id.value].type === "COLOURED_COIN") {
mojo = colouredcoin_to_mojo(amount_input.value);
}
var trade = null;
diff --git a/src/wallet/wallet_node.py b/src/wallet/wallet_node.py
index 719a667c1d..b1fbaed052 100644
--- a/src/wallet/wallet_node.py
+++ b/src/wallet/wallet_node.py
@@ -5,6 +5,7 @@ from typing import Dict, Optional, Tuple, List, AsyncGenerator, Callable
import concurrent
from pathlib import Path
import random
+import socket
import logging
import traceback
from blspy import PrivateKey
@@ -271,12 +272,18 @@ class WalletNode:
c.get_peer_info()
for c in self.global_connections.get_full_node_connections()
]
- if full_node_peer in peers:
+ full_node_resolved = PeerInfo(
+ socket.gethostbyname(full_node_peer.host), full_node_peer.port
+ )
+ if full_node_peer in peers or full_node_resolved in peers:
self.log.info(
f"Will not attempt to connect to other nodes, already connected to {full_node_peer}"
)
for connection in self.global_connections.get_full_node_connections():
- if connection.get_peer_info() != full_node_peer:
+ if (
+ connection.get_peer_info() != full_node_peer
+ and connection.get_peer_info() != full_node_resolved
+ ):
self.log.info(
f"Closing unnecessary connection to {connection.get_peer_info()}."
)