5 Commits

8 changed files with 373 additions and 76 deletions

View File

@@ -39,6 +39,7 @@ namespace FireWallet
toolStripStatusLabelNetwork = new ToolStripStatusLabel();
toolStripStatusLabelstatus = new ToolStripStatusLabel();
toolStripStatusLabelaccount = new ToolStripStatusLabel();
toolStripStatusLabelLedger = new ToolStripStatusLabel();
toolStripSplitButtonlogout = new ToolStripSplitButton();
timerNodeStatus = new System.Windows.Forms.Timer(components);
panelaccount = new Panel();
@@ -80,6 +81,7 @@ namespace FireWallet
labelSendingTo = new Label();
labelSendPrompt = new Label();
panelRecieve = new Panel();
buttonAddressVerify = new Button();
pictureBoxReceiveQR = new PictureBox();
labelReceive2 = new Label();
textBoxReceiveAddress = new TextBox();
@@ -111,7 +113,6 @@ namespace FireWallet
textBoxExAddr = new TextBox();
labelSettings4 = new Label();
textBoxExTX = new TextBox();
toolStripStatusLabelLedger = new ToolStripStatusLabel();
statusStripmain.SuspendLayout();
panelaccount.SuspendLayout();
groupBoxaccount.SuspendLayout();
@@ -167,6 +168,13 @@ namespace FireWallet
toolStripStatusLabelaccount.Size = new Size(55, 17);
toolStripStatusLabelaccount.Text = "Account:";
//
// toolStripStatusLabelLedger
//
toolStripStatusLabelLedger.Margin = new Padding(50, 3, 50, 2);
toolStripStatusLabelLedger.Name = "toolStripStatusLabelLedger";
toolStripStatusLabelLedger.Size = new Size(71, 17);
toolStripStatusLabelLedger.Text = "Cold Wallet:";
//
// toolStripSplitButtonlogout
//
toolStripSplitButtonlogout.DisplayStyle = ToolStripItemDisplayStyle.Text;
@@ -619,16 +627,30 @@ namespace FireWallet
//
// panelRecieve
//
panelRecieve.Controls.Add(buttonAddressVerify);
panelRecieve.Controls.Add(pictureBoxReceiveQR);
panelRecieve.Controls.Add(labelReceive2);
panelRecieve.Controls.Add(textBoxReceiveAddress);
panelRecieve.Controls.Add(labelReceive1);
panelRecieve.Location = new Point(1057, 62);
panelRecieve.Location = new Point(117, 34);
panelRecieve.Name = "panelRecieve";
panelRecieve.Size = new Size(995, 523);
panelRecieve.TabIndex = 17;
panelRecieve.Visible = false;
//
// buttonAddressVerify
//
buttonAddressVerify.FlatStyle = FlatStyle.Flat;
buttonAddressVerify.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonAddressVerify.Location = new Point(769, 110);
buttonAddressVerify.Name = "buttonAddressVerify";
buttonAddressVerify.Size = new Size(126, 32);
buttonAddressVerify.TabIndex = 21;
buttonAddressVerify.Text = "Create && Verify";
buttonAddressVerify.UseVisualStyleBackColor = true;
buttonAddressVerify.Visible = false;
buttonAddressVerify.Click += buttonAddressVerify_Click;
//
// pictureBoxReceiveQR
//
pictureBoxReceiveQR.Location = new Point(391, 190);
@@ -937,28 +959,22 @@ namespace FireWallet
textBoxExTX.Size = new Size(307, 29);
textBoxExTX.TabIndex = 1;
//
// toolStripStatusLabelLedger
//
toolStripStatusLabelLedger.Margin = new Padding(50, 3, 50, 2);
toolStripStatusLabelLedger.Name = "toolStripStatusLabelLedger";
toolStripStatusLabelLedger.Size = new Size(71, 17);
toolStripStatusLabelLedger.Text = "Cold Wallet:";
//
// MainForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1152, 575);
Controls.Add(panelaccount);
Controls.Add(panelRecieve);
Controls.Add(panelSettings);
Controls.Add(panelDomains);
Controls.Add(panelRecieve);
Controls.Add(panelSend);
Controls.Add(panelPortfolio);
Controls.Add(panelNav);
Controls.Add(panelaccount);
Controls.Add(statusStripmain);
Icon = (Icon)resources.GetObject("$this.Icon");
Name = "MainForm";
Opacity = 0D;
Text = "FireWallet";
FormClosing += MainForm_Closing;
Load += MainForm_Load;
@@ -1074,5 +1090,6 @@ namespace FireWallet
private GroupBox groupBoxSettingsWallet;
private Button buttonSettingsRescan;
private ToolStripStatusLabel toolStripStatusLabelLedger;
private Button buttonAddressVerify;
}
}

View File

@@ -31,19 +31,24 @@ namespace FireWallet
public bool batchMode { get; set; }
public BatchForm batchForm { get; set; }
public bool watchOnly { get; set; }
public bool HSD { get; set; }
public Process hsdProcess { get; set; }
#endregion
#region Application
public MainForm()
{
InitializeComponent();
panelaccount.Visible = true;
}
private void MainForm_Load(object sender, EventArgs e)
private async void MainForm_Load(object sender, EventArgs e)
{
watchOnly = false;
account = "";
timerNodeStatus.Stop();
LoadSettings();
UpdateTheme();
if (await LoadNode() != true) this.Close();
if (userSettings.ContainsKey("hide-splash"))
{
@@ -55,9 +60,14 @@ namespace FireWallet
ss.Dispose();
}
}
else
{
// Show splash screen
SplashScreen ss = new SplashScreen();
ss.ShowDialog();
ss.Dispose();
}
UpdateTheme();
LoadNode();
// Edit the theme of the navigation panel
@@ -77,13 +87,29 @@ namespace FireWallet
GetAccounts();
AddLog("Loaded");
Opacity = 1;
batchMode = false;
textBoxaccountpassword.Focus();
timerNodeStatus.Start();
}
private void MainForm_Closing(object sender, FormClosingEventArgs e)
{
AddLog("Closing");
if (hsdProcess != null)
{
this.Opacity = 0;
hsdProcess.Kill();
AddLog("HSD Closed");
Thread.Sleep(1000);
try
{
hsdProcess.Dispose();
}
catch
{
AddLog("Dispose failed");
}
}
}
#endregion
@@ -91,8 +117,9 @@ namespace FireWallet
#region Settings
private void LoadNode()
private async Task<bool> LoadNode()
{
HSD = false;
if (!File.Exists(dir + "node.txt"))
{
NodeForm cf = new NodeForm();
@@ -104,7 +131,8 @@ namespace FireWallet
{
AddLog("Node setup failed");
this.Close();
return;
await Task.Delay(1000);
AddLog("Close Failed");
}
StreamReader sr = new StreamReader(dir + "node.txt");
@@ -122,7 +150,8 @@ namespace FireWallet
{
AddLog("Node Settings file is missing key");
this.Close();
return;
await Task.Delay(1000);
AddLog("Close Failed");
}
network = Convert.ToInt32(nodeSettings["Network"]);
switch (network)
@@ -137,12 +166,77 @@ namespace FireWallet
toolStripStatusLabelNetwork.Text = "Network: Testnet";
break;
}
NodeStatus();
if (nodeSettings.ContainsKey("HSD"))
{
if (nodeSettings["HSD"].ToLower() == "true")
{
HSD = true;
AddLog("Starting HSD");
toolStripStatusLabelstatus.Text = "Status: HSD Starting";
if (!Directory.Exists(dir + "hsd"))
{
NotifyForm Notifyinstall = new NotifyForm("Installing hsd\nThis may take a few minutes\nDo not close FireWallet", false);
Notifyinstall.Show();
// Wait for the notification to show
await Task.Delay(1000);
string repositoryUrl = "https://github.com/handshake-org/hsd.git";
string destinationPath = dir + "hsd";
CloneRepository(repositoryUrl, destinationPath);
Notifyinstall.CloseNotification();
Notifyinstall.Dispose();
}
hsdProcess = new Process();
bool hideScreen = true;
if (nodeSettings.ContainsKey("HideScreen"))
{
if (nodeSettings["HideScreen"].ToLower() == "false")
{
hideScreen = false;
}
}
try
{
hsdProcess.StartInfo.CreateNoWindow = hideScreen;
hsdProcess.StartInfo.RedirectStandardInput = true;
hsdProcess.StartInfo.RedirectStandardOutput = false;
hsdProcess.StartInfo.UseShellExecute = false;
hsdProcess.StartInfo.RedirectStandardError = false;
hsdProcess.StartInfo.FileName = "node.exe";
hsdProcess.StartInfo.Arguments = dir + "hsd/bin/hsd --index-tx --index-address --api-key " + nodeSettings["Key"];
string bobPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Bob\\hsd_data";
if (Directory.Exists(bobPath))
{
hsdProcess.StartInfo.Arguments = hsdProcess.StartInfo.Arguments + " --prefix " + bobPath;
}
hsdProcess.Start();
// Wait for HSD to start
await Task.Delay(2000);
} catch (Exception ex)
{
AddLog("HSD Failed to start");
AddLog(ex.Message);
this.Close();
await Task.Delay(1000);
AddLog("Close Failed");
}
}
}
timerNodeStatus.Start();
NodeStatus();
return true;
}
private void LoadSettings()
{
if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
if (!File.Exists(dir + "settings.txt"))
{
AddLog("Creating settings file");
@@ -390,19 +484,27 @@ namespace FireWallet
}
private async void GetAccounts()
{
string APIresponse = await APIGet("wallet", true);
comboBoxaccount.Items.Clear();
if (APIresponse != "Error")
try
{
comboBoxaccount.Enabled = true;
JArray jArray = JArray.Parse(APIresponse);
foreach (string account in jArray)
string APIresponse = await APIGet("wallet", true);
comboBoxaccount.Items.Clear();
if (APIresponse != "Error")
{
comboBoxaccount.Items.Add(account);
}
if (comboBoxaccount.Items.Count > 0)
{
comboBoxaccount.SelectedIndex = 0;
comboBoxaccount.Enabled = true;
JArray jArray = JArray.Parse(APIresponse);
foreach (string account in jArray)
{
comboBoxaccount.Items.Add(account);
}
if (comboBoxaccount.Items.Count > 0)
{
comboBoxaccount.SelectedIndex = 0;
}
else
{
comboBoxaccount.Items.Add("No accounts found");
comboBoxaccount.Enabled = false;
}
}
else
{
@@ -410,10 +512,9 @@ namespace FireWallet
comboBoxaccount.Enabled = false;
}
}
else
catch
{
comboBoxaccount.Items.Add("No accounts found");
comboBoxaccount.Enabled = false;
AddLog("Error getting accounts");
}
}
private async Task<bool> Login()
@@ -458,6 +559,15 @@ namespace FireWallet
if (jObject["watchOnly"].ToString() == "True") watchOnly = true;
else watchOnly = false;
toolStripStatusLabelLedger.Text = "Cold Wallet: " + watchOnly.ToString();
if (watchOnly)
{
buttonAddressVerify.Visible = true;
}
else
{
buttonAddressVerify.Visible = false;
}
return true;
}
@@ -602,6 +712,8 @@ namespace FireWallet
/// <returns></returns>
public async Task<string> APIGet(string path, bool wallet)
{
if (nodeSettings == null) return "Error";
if (!nodeSettings.ContainsKey("Key") || !nodeSettings.ContainsKey("IP")) return "Error";
string key = nodeSettings["Key"];
string ip = nodeSettings["IP"];
@@ -1053,7 +1165,8 @@ namespace FireWallet
labelSendingError.Hide();
labelSendingError.Text = "";
buttonNavPortfolio.PerformClick();
} else // Cold wallet signing
}
else // Cold wallet signing
{
AddLog("Sending CW " + amount.ToString() + " HNS to " + address);
@@ -1072,14 +1185,14 @@ namespace FireWallet
// Try to install hsd-ledger
try
{
NotifyForm Notifyinstall = new NotifyForm("Installing hsd-ledger\nThis may take a few minutes\nDo not close FireWallet",false);
NotifyForm Notifyinstall = new NotifyForm("Installing hsd-ledger\nThis may take a few minutes\nDo not close FireWallet", false);
Notifyinstall.Show();
// Wait for the notification to show
await Task.Delay(1000);
string repositoryUrl = "https://github.com/handshake-org/hsd-ledger.git";
string destinationPath = dir + "hsd-ledger";
CloneRepository(repositoryUrl,destinationPath);
CloneRepository(repositoryUrl, destinationPath);
Notifyinstall.CloseNotification();
Notifyinstall.Dispose();
@@ -1092,10 +1205,10 @@ namespace FireWallet
notifyError.Dispose();
return;
}
}
NotifyForm notify = new NotifyForm("Please confirm the transaction on your Ledger device",false);
NotifyForm notify = new NotifyForm("Please confirm the transaction on your Ledger device", false);
notify.Show();
var proc = new Process();
@@ -1137,7 +1250,8 @@ namespace FireWallet
textBoxSendingTo.Text = "";
textBoxSendingAmount.Text = "";
buttonNavPortfolio.PerformClick();
} else
}
else
{
NotifyForm notifyError = new NotifyForm("Error Transaction Failed\nCheck logs for more details");
notifyError.ShowDialog();
@@ -1154,16 +1268,25 @@ namespace FireWallet
labelSendingError.Text = ex.Message;
}
}
private void CloneRepository(string repositoryUrl, string destinationPath)
public void CloneRepository(string repositoryUrl, string destinationPath)
{
try
{
bool hideScreen = true;
if (nodeSettings.ContainsKey("HideScreen"))
{
if (nodeSettings["HideScreen"].ToLower() == "false")
{
hideScreen = false;
}
}
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "git";
startInfo.Arguments = $"clone {repositoryUrl} {destinationPath}";
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.CreateNoWindow = hideScreen;
Process process = new Process();
process.StartInfo = startInfo;
@@ -1181,27 +1304,25 @@ namespace FireWallet
FileName = "cmd",
RedirectStandardInput = true,
WorkingDirectory = destinationPath,
CreateNoWindow = true
CreateNoWindow = hideScreen
};
var pNpmRunDist = Process.Start(psiNpmRunDist);
pNpmRunDist.StandardInput.WriteLine("npm install & exit");
pNpmRunDist.WaitForExit();
if (repositoryUrl == "https://github.com/handshake-org/hsd-ledger.git")
{
// Replace /bin/hsd-ledger with /bin/hsd-ledger from
// https://raw.githubusercontent.com/Nathanwoodburn/FireWallet/master/hsd-ledger
// This version of hsd-ledger has the sendraw transaction function added which is needed for batching
// Replace /bin/hsd-ledger with /bin/hsd-ledger from
// https://raw.githubusercontent.com/Nathanwoodburn/FireWallet/master/hsd-ledger
// This version of hsd-ledger has the sendraw transaction function added which is needed for batching
string sourcePath = destinationPath + "\\bin\\hsd-ledger";
File.Delete(sourcePath);
// Download the new hsd-ledger
WebClient downloader = new WebClient();
downloader.DownloadFile("https://raw.githubusercontent.com/Nathanwoodburn/FireWallet/master/hsd-ledger", sourcePath);
string sourcePath = destinationPath + "\\bin\\hsd-ledger";
File.Delete(sourcePath);
// Download the new hsd-ledger
WebClient downloader = new WebClient();
downloader.DownloadFile("https://raw.githubusercontent.com/Nathanwoodburn/FireWallet/master/hsd-ledger", sourcePath);
}
}
catch (Exception ex)
{
@@ -1209,7 +1330,7 @@ namespace FireWallet
AddLog(ex.Message);
}
}
static bool CheckNodeInstalled()
public bool CheckNodeInstalled()
{
try
{
@@ -1245,6 +1366,52 @@ namespace FireWallet
labelReceive2.Text = "Copied to clipboard";
labelReceive2.Left = (panelRecieve.Width - labelReceive2.Width) / 2;
}
private async void buttonAddressVerify_Click(object sender, EventArgs e)
{
var proc = new Process();
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.FileName = "node.exe";
proc.StartInfo.Arguments = dir + "hsd-ledger/bin/hsd-ledger createaddress --api-key " + nodeSettings["Key"] + " -w " + account;
proc.Start();
// Wait 1 sec
await Task.Delay(1000);
// Get the output into a string
string result = proc.StandardOutput.ReadLine();
try
{
result = result.Replace("Verify address on Ledger device: ", "");
}
catch { }
AddLog(result);
textBoxReceiveAddress.Text = result;
Size size = TextRenderer.MeasureText(textBoxReceiveAddress.Text, textBoxReceiveAddress.Font);
textBoxReceiveAddress.Width = size.Width + 10;
textBoxReceiveAddress.Left = (panelRecieve.Width - textBoxReceiveAddress.Width) / 2;
NotifyForm notify = new NotifyForm("Please confirm the address on your Ledger device", false);
notify.Show();
// Handle events until process exits
while (!proc.HasExited)
{
// Check for cancellation
if (proc.WaitForExit(100))
break;
Application.DoEvents();
}
notify.CloseNotification();
notify.Dispose();
}
#endregion
#region Domains
public string[] Domains { get; set; }
@@ -1457,10 +1624,12 @@ namespace FireWallet
}
#endregion
}
}

View File

@@ -104,7 +104,6 @@
//
// buttonCold
//
buttonCold.Enabled = false;
buttonCold.FlatStyle = FlatStyle.Flat;
buttonCold.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonCold.Location = new Point(147, 239);

View File

@@ -2,9 +2,11 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Security.Principal;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@@ -59,9 +61,50 @@ namespace FireWallet
groupBoxNew.Text = "Import Wallet";
}
private void buttonCold_Click(object sender, EventArgs e)
private async void buttonCold_Click(object sender, EventArgs e)
{
// TODO - Cold wallet
if (!Directory.Exists(mainForm.dir + "hsd-ledger"))
{
if (mainForm.CheckNodeInstalled() == false)
{
mainForm.AddLog("Node not installed");
NotifyForm notify1 = new NotifyForm("Node not installed\nPlease install it to use Ledger");
notify1.ShowDialog();
notify1.Dispose();
return;
}
mainForm.AddLog("Installing hsd-ledger");
// Try to install hsd-ledger
try
{
NotifyForm Notifyinstall = new NotifyForm("Installing hsd-ledger\nThis may take a few minutes\nDo not close FireWallet", false);
Notifyinstall.Show();
// Wait for the notification to show
await Task.Delay(1000);
string repositoryUrl = "https://github.com/handshake-org/hsd-ledger.git";
string destinationPath = mainForm.dir + "hsd-ledger";
mainForm.CloneRepository(repositoryUrl, destinationPath);
Notifyinstall.CloseNotification();
Notifyinstall.Dispose();
}
catch (Exception ex)
{
NotifyForm notifyError = new NotifyForm("Error installing hsd-ledger\n" + ex.Message);
mainForm.AddLog(ex.Message);
notifyError.ShowDialog();
notifyError.Dispose();
return;
}
}
// Import HSD Wallet
groupBoxNew.Show();
groupBoxNew.Text = "Import Ledger";
buttonNext.Show();
page = 4;
}
private void textBoxNewName_TextChanged(object sender, EventArgs e)
@@ -136,7 +179,7 @@ namespace FireWallet
// Create new wallet
buttonNext.Enabled = false;
string path = "wallet/" + textBoxNewName.Text;
string content = "{\"passphrase\":\"" + textBoxNewPass1.Text + "\",\"mnemonic\":\"" + textBoxSeedPhrase.Text +"\"}";
string content = "{\"passphrase\":\"" + textBoxNewPass1.Text + "\",\"mnemonic\":\"" + textBoxSeedPhrase.Text + "\"}";
string response = await APIPut(path, true, content);
if (response == "Error")
{
@@ -152,6 +195,40 @@ namespace FireWallet
notify2.Dispose();
this.Close();
}
else if (page == 4)
{
// Import Ledger
buttonNext.Enabled = false;
var proc = new Process();
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.FileName = "node.exe";
proc.StartInfo.Arguments = mainForm.dir + "hsd-ledger/bin/hsd-ledger createwallet " + textBoxNewPass1.Text + " --api-key " + mainForm.nodeSettings["Key"];
var outputBuilder = new StringBuilder();
// Event handler for capturing output data
proc.OutputDataReceived += (sender, args) =>
{
if (!string.IsNullOrEmpty(args.Data))
{
outputBuilder.AppendLine(args.Data);
}
};
proc.Start();
proc.BeginOutputReadLine();
proc.WaitForExit();
mainForm.AddLog(outputBuilder.ToString());
}
}
HttpClient httpClient = new HttpClient();

View File

@@ -36,6 +36,7 @@ namespace FireWallet
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NodeForm));
labelWelcome = new Label();
groupBoxNode = new GroupBox();
checkBoxRunHSD = new CheckBox();
labelNodeStatus = new Label();
comboBoxNodeNetwork = new ComboBox();
buttonSave = new Button();
@@ -61,6 +62,7 @@ namespace FireWallet
//
// groupBoxNode
//
groupBoxNode.Controls.Add(checkBoxRunHSD);
groupBoxNode.Controls.Add(labelNodeStatus);
groupBoxNode.Controls.Add(comboBoxNodeNetwork);
groupBoxNode.Controls.Add(buttonSave);
@@ -77,6 +79,16 @@ namespace FireWallet
groupBoxNode.TabStop = false;
groupBoxNode.Text = "Node";
//
// checkBoxRunHSD
//
checkBoxRunHSD.AutoSize = true;
checkBoxRunHSD.Location = new Point(62, 100);
checkBoxRunHSD.Name = "checkBoxRunHSD";
checkBoxRunHSD.Size = new Size(304, 19);
checkBoxRunHSD.TabIndex = 10;
checkBoxRunHSD.Text = "Run HSD (use this if you don't want to run Bob/HSD)";
checkBoxRunHSD.UseVisualStyleBackColor = true;
//
// labelNodeStatus
//
labelNodeStatus.AutoSize = true;
@@ -193,5 +205,6 @@ namespace FireWallet
private Button buttonSave;
private ComboBox comboBoxNodeNetwork;
private Label labelNodeStatus;
private CheckBox checkBoxRunHSD;
}
}

View File

@@ -278,18 +278,39 @@ namespace FireWallet
private void SaveSettings(object sender, EventArgs e)
{
buttonNodeTest.PerformClick();
if (labelNodeStatus.Text != "Node Connected")
if (textBoxNodeKey.Text == "")
{
NotifyForm notifyForm = new NotifyForm("Please enter a key");
notifyForm.ShowDialog();
notifyForm.Dispose();
return;
}
StreamWriter sw = new StreamWriter(dir + "node.txt");
sw.WriteLine("IP: " + textBoxNodeIP.Text);
sw.WriteLine("Network: " + comboBoxNodeNetwork.SelectedIndex);
sw.WriteLine("Key: " + textBoxNodeKey.Text);
sw.Dispose();
this.Close();
if (checkBoxRunHSD.Checked)
{
StreamWriter sw = new StreamWriter(dir + "node.txt");
sw.WriteLine("IP: " + textBoxNodeIP.Text);
sw.WriteLine("Network: " + comboBoxNodeNetwork.SelectedIndex);
sw.WriteLine("Key: " + textBoxNodeKey.Text);
sw.WriteLine("HSD: True");
sw.Dispose();
this.Close();
}
else
{
buttonNodeTest.PerformClick();
if (labelNodeStatus.Text != "Node Connected")
{
return;
}
StreamWriter sw = new StreamWriter(dir + "node.txt");
sw.WriteLine("IP: " + textBoxNodeIP.Text);
sw.WriteLine("Network: " + comboBoxNodeNetwork.SelectedIndex);
sw.WriteLine("Key: " + textBoxNodeKey.Text);
sw.Dispose();
this.Close();
}
}
}
}

View File

@@ -27,10 +27,7 @@ namespace FireWallet
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
{
if (!close)
{
e.Cancel = true;
}
}
private void label2_Click(object sender, EventArgs e)

View File

@@ -21,6 +21,10 @@ This password will be used to encrypt your wallet and to login to your wallet.
## First time setup
When you first open the wallet you will be prompted to set your node settings.
You can either connect to an existing HSD (or Bob) node or you can run your own node.
If you want to run your own node you should select the `Run HSD` option.
This will take a few minutes to download and install HSD.
You can get the API key from the HSD launch command or
in Bob wallet under settings > Wallet > API key.
If you change this key in HSD or Bob you will need to update it in FireWallet.