mirror of
https://github.com/Nathanwoodburn/FireWallet.git
synced 2025-12-06 16:43:01 +11:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
54c5ccb555
|
|||
|
879f74f2bc
|
|||
|
41fa569563
|
|||
|
f4900cf9d6
|
|||
|
72be43e16d
|
|||
|
c94bc8dcda
|
|||
|
145047b614
|
|||
|
21ef8b2139
|
|||
|
860000bea8
|
|||
|
91c90136c1
|
|||
|
e93ce03d50
|
|||
|
520fe20051
|
|||
|
1b41b72193
|
|||
|
1d2597e1e7
|
|||
|
8aaf871bdf
|
|||
|
2e6f38d832
|
|||
|
10662f5910
|
@@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.6.33723.286
|
VisualStudioVersion = 17.6.33723.286
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FireWallet", "FireWallet\FireWallet.csproj", "{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FireWallet", "FireWallet\FireWallet.csproj", "{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}"
|
||||||
|
EndProject
|
||||||
|
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "FireWalletSetup", "FireWalletSetup\FireWalletSetup.vdproj", "{D1751AFE-92C3-4C7E-B5E1-D1D6420A30EA}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
@@ -15,6 +17,8 @@ Global
|
|||||||
{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}.Release|Any CPU.Build.0 = Release|Any CPU
|
{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{D1751AFE-92C3-4C7E-B5E1-D1D6420A30EA}.Debug|Any CPU.ActiveCfg = Debug
|
||||||
|
{D1751AFE-92C3-4C7E-B5E1-D1D6420A30EA}.Release|Any CPU.ActiveCfg = Release
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Security.Principal;
|
using System.Security.Principal;
|
||||||
@@ -484,9 +485,23 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
AddLog("Error: ");
|
AddLog("Error: ");
|
||||||
AddLog(jObject["error"].ToString());
|
AddLog(jObject["error"].ToString());
|
||||||
NotifyForm notifyForm = new NotifyForm("Error: \n" + jObject["error"].ToString());
|
if (jObject["error"].ToString().Contains("Batch output addresses would exceed lookahead"))
|
||||||
notifyForm.ShowDialog();
|
{
|
||||||
notifyForm.Dispose();
|
NotifyForm notifyForm = new NotifyForm("Error: \nBatch output addresses would exceed lookahead\nYour batch might have too many TXs.");
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
} else if (jObject["error"].ToString().Contains("Name is not registered"))
|
||||||
|
{
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Error: \nName is not registered\nRemember you can't renew domains in transfer");
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Error: \n" + jObject["error"].ToString());
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -621,7 +636,7 @@ namespace FireWallet
|
|||||||
private void buttonImport_Click(object sender, EventArgs e)
|
private void buttonImport_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||||
openFileDialog.Filter = "CSV File|*.csv|TXT File|*.txt";
|
openFileDialog.Filter = "All Files|*.*";
|
||||||
openFileDialog.Title = "Open Batch";
|
openFileDialog.Title = "Open Batch";
|
||||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -771,9 +771,6 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
else if (state == "REVEAL")
|
else if (state == "REVEAL")
|
||||||
{
|
{
|
||||||
decimal bid = Convert.ToDecimal(textBoxBid.Text);
|
|
||||||
decimal blind = Convert.ToDecimal(textBoxBlind.Text);
|
|
||||||
decimal lockup = bid + blind;
|
|
||||||
string content = "{\"method\": \"sendreveal\", \"params\": [\"" + domain + "\"]}";
|
string content = "{\"method\": \"sendreveal\", \"params\": [\"" + domain + "\"]}";
|
||||||
|
|
||||||
string response = await APIPost("", true, content);
|
string response = await APIPost("", true, content);
|
||||||
|
|||||||
58
FireWallet/MainForm.Designer.cs
generated
58
FireWallet/MainForm.Designer.cs
generated
@@ -59,6 +59,8 @@ namespace FireWallet
|
|||||||
buttonNavSend = new Button();
|
buttonNavSend = new Button();
|
||||||
buttonNavPortfolio = new Button();
|
buttonNavPortfolio = new Button();
|
||||||
panelPortfolio = new Panel();
|
panelPortfolio = new Panel();
|
||||||
|
buttonRenewAll = new Button();
|
||||||
|
buttonRevealAll = new Button();
|
||||||
groupBoxTransactions = new GroupBox();
|
groupBoxTransactions = new GroupBox();
|
||||||
groupBoxinfo = new GroupBox();
|
groupBoxinfo = new GroupBox();
|
||||||
labelPendingCount = new Label();
|
labelPendingCount = new Label();
|
||||||
@@ -87,6 +89,7 @@ namespace FireWallet
|
|||||||
textBoxReceiveAddress = new TextBox();
|
textBoxReceiveAddress = new TextBox();
|
||||||
labelReceive1 = new Label();
|
labelReceive1 = new Label();
|
||||||
panelDomains = new Panel();
|
panelDomains = new Panel();
|
||||||
|
buttonExportDomains = new Button();
|
||||||
groupBoxDomains = new GroupBox();
|
groupBoxDomains = new GroupBox();
|
||||||
panelDomainList = new Panel();
|
panelDomainList = new Panel();
|
||||||
labelDomainSearch = new Label();
|
labelDomainSearch = new Label();
|
||||||
@@ -174,6 +177,7 @@ namespace FireWallet
|
|||||||
toolStripStatusLabelLedger.Name = "toolStripStatusLabelLedger";
|
toolStripStatusLabelLedger.Name = "toolStripStatusLabelLedger";
|
||||||
toolStripStatusLabelLedger.Size = new Size(71, 17);
|
toolStripStatusLabelLedger.Size = new Size(71, 17);
|
||||||
toolStripStatusLabelLedger.Text = "Cold Wallet:";
|
toolStripStatusLabelLedger.Text = "Cold Wallet:";
|
||||||
|
toolStripStatusLabelLedger.Visible = false;
|
||||||
//
|
//
|
||||||
// toolStripSplitButtonlogout
|
// toolStripSplitButtonlogout
|
||||||
//
|
//
|
||||||
@@ -386,15 +390,40 @@ namespace FireWallet
|
|||||||
//
|
//
|
||||||
// panelPortfolio
|
// panelPortfolio
|
||||||
//
|
//
|
||||||
|
panelPortfolio.Controls.Add(buttonRevealAll);
|
||||||
panelPortfolio.Controls.Add(groupBoxTransactions);
|
panelPortfolio.Controls.Add(groupBoxTransactions);
|
||||||
panelPortfolio.Controls.Add(groupBoxinfo);
|
panelPortfolio.Controls.Add(groupBoxinfo);
|
||||||
panelPortfolio.Controls.Add(groupBoxbalance);
|
panelPortfolio.Controls.Add(groupBoxbalance);
|
||||||
panelPortfolio.Location = new Point(1085, 47);
|
panelPortfolio.Location = new Point(1065, 80);
|
||||||
panelPortfolio.Name = "panelPortfolio";
|
panelPortfolio.Name = "panelPortfolio";
|
||||||
panelPortfolio.Size = new Size(956, 538);
|
panelPortfolio.Size = new Size(956, 538);
|
||||||
panelPortfolio.TabIndex = 7;
|
panelPortfolio.TabIndex = 7;
|
||||||
panelPortfolio.Visible = false;
|
panelPortfolio.Visible = false;
|
||||||
//
|
//
|
||||||
|
// buttonRenewAll
|
||||||
|
//
|
||||||
|
buttonRenewAll.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonRenewAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonRenewAll.Location = new Point(813, 9);
|
||||||
|
buttonRenewAll.Name = "buttonRenewAll";
|
||||||
|
buttonRenewAll.Size = new Size(89, 32);
|
||||||
|
buttonRenewAll.TabIndex = 10;
|
||||||
|
buttonRenewAll.Text = "Renew All";
|
||||||
|
buttonRenewAll.UseVisualStyleBackColor = true;
|
||||||
|
buttonRenewAll.Click += buttonRenewAll_Click;
|
||||||
|
//
|
||||||
|
// buttonRevealAll
|
||||||
|
//
|
||||||
|
buttonRevealAll.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonRevealAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonRevealAll.Location = new Point(537, 12);
|
||||||
|
buttonRevealAll.Name = "buttonRevealAll";
|
||||||
|
buttonRevealAll.Size = new Size(89, 44);
|
||||||
|
buttonRevealAll.TabIndex = 9;
|
||||||
|
buttonRevealAll.Text = "Reveal All";
|
||||||
|
buttonRevealAll.UseVisualStyleBackColor = true;
|
||||||
|
buttonRevealAll.Click += buttonRevealAll_Click;
|
||||||
|
//
|
||||||
// groupBoxTransactions
|
// groupBoxTransactions
|
||||||
//
|
//
|
||||||
groupBoxTransactions.Dock = DockStyle.Bottom;
|
groupBoxTransactions.Dock = DockStyle.Bottom;
|
||||||
@@ -632,7 +661,7 @@ namespace FireWallet
|
|||||||
panelRecieve.Controls.Add(labelReceive2);
|
panelRecieve.Controls.Add(labelReceive2);
|
||||||
panelRecieve.Controls.Add(textBoxReceiveAddress);
|
panelRecieve.Controls.Add(textBoxReceiveAddress);
|
||||||
panelRecieve.Controls.Add(labelReceive1);
|
panelRecieve.Controls.Add(labelReceive1);
|
||||||
panelRecieve.Location = new Point(117, 34);
|
panelRecieve.Location = new Point(1140, 24);
|
||||||
panelRecieve.Name = "panelRecieve";
|
panelRecieve.Name = "panelRecieve";
|
||||||
panelRecieve.Size = new Size(995, 523);
|
panelRecieve.Size = new Size(995, 523);
|
||||||
panelRecieve.TabIndex = 17;
|
panelRecieve.TabIndex = 17;
|
||||||
@@ -692,15 +721,29 @@ namespace FireWallet
|
|||||||
//
|
//
|
||||||
// panelDomains
|
// panelDomains
|
||||||
//
|
//
|
||||||
|
panelDomains.Controls.Add(buttonRenewAll);
|
||||||
|
panelDomains.Controls.Add(buttonExportDomains);
|
||||||
panelDomains.Controls.Add(groupBoxDomains);
|
panelDomains.Controls.Add(groupBoxDomains);
|
||||||
panelDomains.Controls.Add(labelDomainSearch);
|
panelDomains.Controls.Add(labelDomainSearch);
|
||||||
panelDomains.Controls.Add(textBoxDomainSearch);
|
panelDomains.Controls.Add(textBoxDomainSearch);
|
||||||
panelDomains.Location = new Point(1129, 22);
|
panelDomains.Location = new Point(120, 48);
|
||||||
panelDomains.Name = "panelDomains";
|
panelDomains.Name = "panelDomains";
|
||||||
panelDomains.Size = new Size(920, 536);
|
panelDomains.Size = new Size(920, 536);
|
||||||
panelDomains.TabIndex = 18;
|
panelDomains.TabIndex = 18;
|
||||||
panelDomains.Visible = false;
|
panelDomains.Visible = false;
|
||||||
//
|
//
|
||||||
|
// buttonExportDomains
|
||||||
|
//
|
||||||
|
buttonExportDomains.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonExportDomains.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonExportDomains.Location = new Point(351, 9);
|
||||||
|
buttonExportDomains.Name = "buttonExportDomains";
|
||||||
|
buttonExportDomains.Size = new Size(102, 32);
|
||||||
|
buttonExportDomains.TabIndex = 3;
|
||||||
|
buttonExportDomains.Text = "Export";
|
||||||
|
buttonExportDomains.UseVisualStyleBackColor = true;
|
||||||
|
buttonExportDomains.Click += export_Click;
|
||||||
|
//
|
||||||
// groupBoxDomains
|
// groupBoxDomains
|
||||||
//
|
//
|
||||||
groupBoxDomains.Controls.Add(panelDomainList);
|
groupBoxDomains.Controls.Add(panelDomainList);
|
||||||
@@ -749,7 +792,7 @@ namespace FireWallet
|
|||||||
panelSettings.Controls.Add(buttonSettingsSave);
|
panelSettings.Controls.Add(buttonSettingsSave);
|
||||||
panelSettings.Controls.Add(groupBoxSettingsExplorer);
|
panelSettings.Controls.Add(groupBoxSettingsExplorer);
|
||||||
panelSettings.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
panelSettings.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
panelSettings.Location = new Point(121, 21);
|
panelSettings.Location = new Point(1065, 211);
|
||||||
panelSettings.Name = "panelSettings";
|
panelSettings.Name = "panelSettings";
|
||||||
panelSettings.Size = new Size(930, 550);
|
panelSettings.Size = new Size(930, 550);
|
||||||
panelSettings.TabIndex = 19;
|
panelSettings.TabIndex = 19;
|
||||||
@@ -965,13 +1008,13 @@ namespace FireWallet
|
|||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
ClientSize = new Size(1152, 575);
|
ClientSize = new Size(1152, 575);
|
||||||
Controls.Add(panelaccount);
|
Controls.Add(panelaccount);
|
||||||
|
Controls.Add(panelPortfolio);
|
||||||
Controls.Add(panelRecieve);
|
Controls.Add(panelRecieve);
|
||||||
Controls.Add(panelSettings);
|
|
||||||
Controls.Add(panelDomains);
|
Controls.Add(panelDomains);
|
||||||
Controls.Add(panelSend);
|
Controls.Add(panelSend);
|
||||||
Controls.Add(panelPortfolio);
|
|
||||||
Controls.Add(panelNav);
|
Controls.Add(panelNav);
|
||||||
Controls.Add(statusStripmain);
|
Controls.Add(statusStripmain);
|
||||||
|
Controls.Add(panelSettings);
|
||||||
Icon = (Icon)resources.GetObject("$this.Icon");
|
Icon = (Icon)resources.GetObject("$this.Icon");
|
||||||
Name = "MainForm";
|
Name = "MainForm";
|
||||||
Opacity = 0D;
|
Opacity = 0D;
|
||||||
@@ -1091,5 +1134,8 @@ namespace FireWallet
|
|||||||
private Button buttonSettingsRescan;
|
private Button buttonSettingsRescan;
|
||||||
private ToolStripStatusLabel toolStripStatusLabelLedger;
|
private ToolStripStatusLabel toolStripStatusLabelLedger;
|
||||||
private Button buttonAddressVerify;
|
private Button buttonAddressVerify;
|
||||||
|
private Button buttonRevealAll;
|
||||||
|
private Button buttonExportDomains;
|
||||||
|
private Button buttonRenewAll;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,10 +160,10 @@ namespace FireWallet
|
|||||||
toolStripStatusLabelNetwork.Text = "Network: Mainnet";
|
toolStripStatusLabelNetwork.Text = "Network: Mainnet";
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
toolStripStatusLabelNetwork.Text = "Network: Regtest";
|
toolStripStatusLabelNetwork.Text = "Network: Regtest (Not Fully Tested)";
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
toolStripStatusLabelNetwork.Text = "Network: Testnet";
|
toolStripStatusLabelNetwork.Text = "Network: Testnet (Not Implemented)";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,7 +218,8 @@ namespace FireWallet
|
|||||||
hsdProcess.Start();
|
hsdProcess.Start();
|
||||||
// Wait for HSD to start
|
// Wait for HSD to start
|
||||||
await Task.Delay(2000);
|
await Task.Delay(2000);
|
||||||
} catch (Exception ex)
|
}
|
||||||
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
AddLog("HSD Failed to start");
|
AddLog("HSD Failed to start");
|
||||||
AddLog(ex.Message);
|
AddLog(ex.Message);
|
||||||
@@ -556,9 +557,18 @@ namespace FireWallet
|
|||||||
path = "wallet/" + account + "";
|
path = "wallet/" + account + "";
|
||||||
APIresponse = await APIGet(path, true);
|
APIresponse = await APIGet(path, true);
|
||||||
JObject jObject = JObject.Parse(APIresponse);
|
JObject jObject = JObject.Parse(APIresponse);
|
||||||
if (jObject["watchOnly"].ToString() == "True") watchOnly = true;
|
if (jObject["watchOnly"].ToString() == "True")
|
||||||
else watchOnly = false;
|
{
|
||||||
toolStripStatusLabelLedger.Text = "Cold Wallet: " + watchOnly.ToString();
|
watchOnly = true;
|
||||||
|
toolStripStatusLabelLedger.Text = "Cold Wallet";
|
||||||
|
toolStripStatusLabelLedger.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
watchOnly = false;
|
||||||
|
toolStripStatusLabelLedger.Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (watchOnly)
|
if (watchOnly)
|
||||||
{
|
{
|
||||||
@@ -573,17 +583,36 @@ namespace FireWallet
|
|||||||
|
|
||||||
private async void LoginClick(object sender, EventArgs e)
|
private async void LoginClick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
account = comboBoxaccount.Text;
|
// If the node isn't connected show a message
|
||||||
password = textBoxaccountpassword.Text;
|
try
|
||||||
bool loggedin = await Login();
|
|
||||||
if (loggedin)
|
|
||||||
{
|
{
|
||||||
toolStripStatusLabelaccount.Text = "Account: " + account;
|
if (await APIGet("", false) == "Error")
|
||||||
textBoxaccountpassword.Text = "";
|
{
|
||||||
panelaccount.Visible = false;
|
NotifyForm notifyForm = new NotifyForm("Node not connected");
|
||||||
toolStripSplitButtonlogout.Visible = true;
|
notifyForm.ShowDialog();
|
||||||
panelNav.Visible = true;
|
notifyForm.Dispose();
|
||||||
buttonNavPortfolio.PerformClick();
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
account = comboBoxaccount.Text;
|
||||||
|
password = textBoxaccountpassword.Text;
|
||||||
|
bool loggedin = await Login();
|
||||||
|
if (loggedin)
|
||||||
|
{
|
||||||
|
toolStripStatusLabelaccount.Text = "Account: " + account;
|
||||||
|
textBoxaccountpassword.Text = "";
|
||||||
|
panelaccount.Visible = false;
|
||||||
|
toolStripSplitButtonlogout.Visible = true;
|
||||||
|
panelNav.Visible = true;
|
||||||
|
buttonNavPortfolio.PerformClick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Node not connected\n" + ex.Message);
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -604,6 +633,7 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
password = ""; // Clear password from memory as soon as possible
|
password = ""; // Clear password from memory as soon as possible
|
||||||
toolStripSplitButtonlogout.Visible = false;
|
toolStripSplitButtonlogout.Visible = false;
|
||||||
|
toolStripStatusLabelLedger.Visible = false;
|
||||||
string path = "wallet/" + account + "/lock";
|
string path = "wallet/" + account + "/lock";
|
||||||
string content = "";
|
string content = "";
|
||||||
string APIresponse = await APIPost(path, true, content);
|
string APIresponse = await APIPost(path, true, content);
|
||||||
@@ -675,6 +705,11 @@ namespace FireWallet
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<string> APIPost(string path, bool wallet, string content)
|
public async Task<string> APIPost(string path, bool wallet, string content)
|
||||||
{
|
{
|
||||||
|
if (content == "{\"passphrase\": \"\" ,\"timeout\": 60}")
|
||||||
|
{
|
||||||
|
// For some reason, the API doesn't like an empty password, so we'll just use a default one
|
||||||
|
content = "{\"passphrase\": \"password\" ,\"timeout\": 60}";
|
||||||
|
}
|
||||||
string key = nodeSettings["Key"];
|
string key = nodeSettings["Key"];
|
||||||
string ip = nodeSettings["IP"];
|
string ip = nodeSettings["IP"];
|
||||||
string port = "1203";
|
string port = "1203";
|
||||||
@@ -767,7 +802,11 @@ namespace FireWallet
|
|||||||
decimal progress = Convert.ToDecimal(chain["progress"].ToString());
|
decimal progress = Convert.ToDecimal(chain["progress"].ToString());
|
||||||
labelSyncPercent.Text = "Sync: " + decimal.Round(progress * 100, 2) + "%";
|
labelSyncPercent.Text = "Sync: " + decimal.Round(progress * 100, 2) + "%";
|
||||||
|
|
||||||
|
// Exit if set to 0 TXs
|
||||||
|
if (userSettings.ContainsKey("portfolio-tx"))
|
||||||
|
{
|
||||||
|
if (userSettings["portfolio-tx"] == "0") return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Get Unconfirmed TX
|
// Get Unconfirmed TX
|
||||||
@@ -923,7 +962,7 @@ namespace FireWallet
|
|||||||
await UpdateBalance();
|
await UpdateBalance();
|
||||||
GetTXHistory();
|
GetTXHistory();
|
||||||
labelBalance.Text = "Available: " + balance.ToString() + " HNS";
|
labelBalance.Text = "Available: " + balance.ToString() + " HNS";
|
||||||
labelLocked.Text = "Locked: " + balanceLocked.ToString() + " HNS";
|
labelLocked.Text = "Locked: " + balanceLocked.ToString() + " HNS*";
|
||||||
labelBalanceTotal.Text = "Total: " + (balance + balanceLocked).ToString() + " HNS";
|
labelBalanceTotal.Text = "Total: " + (balance + balanceLocked).ToString() + " HNS";
|
||||||
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
||||||
{
|
{
|
||||||
@@ -1415,12 +1454,15 @@ namespace FireWallet
|
|||||||
#endregion
|
#endregion
|
||||||
#region Domains
|
#region Domains
|
||||||
public string[] Domains { get; set; }
|
public string[] Domains { get; set; }
|
||||||
|
public string[] DomainsRenewable { get; set; }
|
||||||
private async void UpdateDomains()
|
private async void UpdateDomains()
|
||||||
{
|
{
|
||||||
string response = await APIGet("wallet/" + account + "/name?own=true", true);
|
string response = await APIGet("wallet/" + account + "/name?own=true", true);
|
||||||
JArray names = JArray.Parse(response);
|
JArray names = JArray.Parse(response);
|
||||||
Domains = new string[names.Count];
|
Domains = new string[names.Count];
|
||||||
|
DomainsRenewable = new string[names.Count];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
int renewable = 0;
|
||||||
panelDomainList.Controls.Clear();
|
panelDomainList.Controls.Clear();
|
||||||
foreach (JObject name in names)
|
foreach (JObject name in names)
|
||||||
{
|
{
|
||||||
@@ -1445,21 +1487,77 @@ namespace FireWallet
|
|||||||
domainName.Left = 5;
|
domainName.Left = 5;
|
||||||
domainName.AutoSize = true;
|
domainName.AutoSize = true;
|
||||||
|
|
||||||
JObject stats = JObject.Parse(name["stats"].ToString());
|
|
||||||
|
|
||||||
Label expiry = new Label();
|
|
||||||
expiry.Text = "Expires: " + stats["daysUntilExpire"].ToString() + " days";
|
|
||||||
expiry.Top = 5;
|
|
||||||
expiry.AutoSize = true;
|
|
||||||
expiry.Left = domainTMP.Width - expiry.Width - 100;
|
|
||||||
|
|
||||||
|
|
||||||
domainTMP.Controls.Add(domainName);
|
domainTMP.Controls.Add(domainName);
|
||||||
domainTMP.Controls.Add(expiry);
|
|
||||||
|
if (!name.ContainsKey("stats")) {
|
||||||
|
AddLog("Domain " + Domains[i] + " does not have stats");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Label expiry = new Label();
|
||||||
|
JObject stats = JObject.Parse(name["stats"].ToString());
|
||||||
|
if (stats.ContainsKey("daysUntilExpire"))
|
||||||
|
{
|
||||||
|
expiry.Text = "Expires: " + stats["daysUntilExpire"].ToString() + " days";
|
||||||
|
expiry.Top = 5;
|
||||||
|
expiry.AutoSize = true;
|
||||||
|
expiry.Left = domainTMP.Width - expiry.Width - 100;
|
||||||
|
domainTMP.Controls.Add(expiry);
|
||||||
|
|
||||||
|
// Add to domains renewable
|
||||||
|
DomainsRenewable[renewable] = Domains[i];
|
||||||
|
renewable++;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
expiry.Text = "Expires: Not Registered yet";
|
||||||
|
expiry.Top = 5;
|
||||||
|
expiry.AutoSize = true;
|
||||||
|
expiry.Left = domainTMP.Width - expiry.Width - 100;
|
||||||
|
domainTMP.Controls.Add(expiry);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
panelDomainList.Controls.Add(domainTMP);
|
panelDomainList.Controls.Add(domainTMP);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private async void buttonRevealAll_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string content = "{\"method\": \"sendreveal\"}";
|
||||||
|
string response = await APIPost("", true, content);
|
||||||
|
AddLog(response);
|
||||||
|
if (response == "Error")
|
||||||
|
{
|
||||||
|
AddLog("Error sending reveal");
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Error sending reveal");
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
JObject resp = JObject.Parse(response);
|
||||||
|
if (resp["error"] != null)
|
||||||
|
{
|
||||||
|
AddLog("Error sending reveal");
|
||||||
|
AddLog(resp["error"].ToString());
|
||||||
|
JObject error = JObject.Parse(resp["error"].ToString());
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Error sending reveal\n" + error["message"].ToString());
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (resp.ContainsKey("result"))
|
||||||
|
{
|
||||||
|
JObject result = JObject.Parse(resp["result"].ToString());
|
||||||
|
string hash = result["hash"].ToString();
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Reveal sent\n" + hash, "Explorer", userSettings["explorer-tx"] + hash);
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
private void textBoxDomainSearch_KeyDown(object sender, KeyEventArgs e)
|
private void textBoxDomainSearch_KeyDown(object sender, KeyEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.KeyValue == 13)
|
if (e.KeyValue == 13)
|
||||||
@@ -1625,11 +1723,37 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private void export_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||||
|
saveFileDialog.Filter = "CSV file (*.csv)|*.csv";
|
||||||
|
saveFileDialog.Title = "Export";
|
||||||
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
StreamWriter sw = new StreamWriter(saveFileDialog.FileName);
|
||||||
|
foreach (string domain in DomainsRenewable)
|
||||||
|
{
|
||||||
|
if (domain == null) break;
|
||||||
|
sw.WriteLine(domain);
|
||||||
|
}
|
||||||
|
sw.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonRenewAll_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (DomainsRenewable == null)
|
||||||
|
{
|
||||||
|
NotifyForm notifyForm = new NotifyForm("No renewable domains found");
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (string domain in DomainsRenewable)
|
||||||
|
{
|
||||||
|
if (domain == null) break;
|
||||||
|
AddBatch(domain, "RENEW");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -197,35 +197,44 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
else if (page == 4)
|
else if (page == 4)
|
||||||
{
|
{
|
||||||
// Import Ledger
|
try
|
||||||
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))
|
// 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) =>
|
||||||
{
|
{
|
||||||
outputBuilder.AppendLine(args.Data);
|
if (!string.IsNullOrEmpty(args.Data))
|
||||||
}
|
{
|
||||||
};
|
outputBuilder.AppendLine(args.Data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
proc.Start();
|
proc.Start();
|
||||||
proc.BeginOutputReadLine();
|
proc.BeginOutputReadLine();
|
||||||
proc.WaitForExit();
|
proc.WaitForExit();
|
||||||
|
|
||||||
mainForm.AddLog(outputBuilder.ToString());
|
|
||||||
|
|
||||||
|
mainForm.AddLog(outputBuilder.ToString());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
mainForm.AddLog(ex.Message);
|
||||||
|
NotifyForm notify = new NotifyForm("Error importing wallet\n" + ex.Message);
|
||||||
|
notify.ShowDialog();
|
||||||
|
notify.Dispose();
|
||||||
|
this.Close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -247,22 +256,28 @@ namespace FireWallet
|
|||||||
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Put, "http://" + ip + ":" + port + "/" + path);
|
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Put, "http://" + ip + ":" + port + "/" + path);
|
||||||
req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("x:" + key)));
|
req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("x:" + key)));
|
||||||
req.Content = new StringContent(content);
|
req.Content = new StringContent(content);
|
||||||
|
|
||||||
// Send request
|
|
||||||
HttpResponseMessage resp = await httpClient.SendAsync(req);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
resp.EnsureSuccessStatusCode();
|
// Send request
|
||||||
|
HttpResponseMessage resp = await httpClient.SendAsync(req);
|
||||||
|
|
||||||
|
if (resp.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
return await resp.Content.ReadAsStringAsync();
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
mainForm.AddLog("Put Error: " + await resp.Content.ReadAsStringAsync());
|
||||||
|
return "Error";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
mainForm.AddLog("Put Error: " + ex.Message);
|
mainForm.AddLog("Put Error: " + ex.Message);
|
||||||
mainForm.AddLog(await resp.Content.ReadAsStringAsync());
|
|
||||||
return "Error";
|
return "Error";
|
||||||
}
|
}
|
||||||
|
|
||||||
return await resp.Content.ReadAsStringAsync();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using System.Linq;
|
|||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
@@ -287,6 +288,14 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
if (checkBoxRunHSD.Checked)
|
if (checkBoxRunHSD.Checked)
|
||||||
{
|
{
|
||||||
|
if (!Regex.IsMatch(textBoxNodeKey.Text, @"^[a-zA-Z0-9]+$"))
|
||||||
|
{
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Please enter valid API key\nDo not use spaces or weird stuff");
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
StreamWriter sw = new StreamWriter(dir + "node.txt");
|
StreamWriter sw = new StreamWriter(dir + "node.txt");
|
||||||
sw.WriteLine("IP: " + textBoxNodeIP.Text);
|
sw.WriteLine("IP: " + textBoxNodeIP.Text);
|
||||||
sw.WriteLine("Network: " + comboBoxNodeNetwork.SelectedIndex);
|
sw.WriteLine("Network: " + comboBoxNodeNetwork.SelectedIndex);
|
||||||
|
|||||||
797
FireWalletSetup/FireWalletSetup.vdproj
Normal file
797
FireWalletSetup/FireWalletSetup.vdproj
Normal file
@@ -0,0 +1,797 @@
|
|||||||
|
"DeployProject"
|
||||||
|
{
|
||||||
|
"VSVersion" = "3:800"
|
||||||
|
"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
|
||||||
|
"IsWebType" = "8:FALSE"
|
||||||
|
"ProjectName" = "8:FireWalletSetup"
|
||||||
|
"LanguageId" = "3:1033"
|
||||||
|
"CodePage" = "3:1252"
|
||||||
|
"UILanguageId" = "3:1033"
|
||||||
|
"SccProjectName" = "8:"
|
||||||
|
"SccLocalPath" = "8:"
|
||||||
|
"SccAuxPath" = "8:"
|
||||||
|
"SccProvider" = "8:"
|
||||||
|
"Hierarchy"
|
||||||
|
{
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
|
"MsmKey" = "8:_04F4559CA8D64ECF91FCC8C907FEA44E"
|
||||||
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
|
"MsmKey" = "8:_24448DEFADA9423B92D588F3CCFCE0BE"
|
||||||
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
|
"MsmKey" = "8:_57B16B55588E41459D70F9475B14B4BB"
|
||||||
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"Configurations"
|
||||||
|
{
|
||||||
|
"Debug"
|
||||||
|
{
|
||||||
|
"DisplayName" = "8:Debug"
|
||||||
|
"IsDebugOnly" = "11:TRUE"
|
||||||
|
"IsReleaseOnly" = "11:FALSE"
|
||||||
|
"OutputFilename" = "8:Debug\\FireWalletSetup.msi"
|
||||||
|
"PackageFilesAs" = "3:2"
|
||||||
|
"PackageFileSize" = "3:-2147483648"
|
||||||
|
"CabType" = "3:1"
|
||||||
|
"Compression" = "3:2"
|
||||||
|
"SignOutput" = "11:FALSE"
|
||||||
|
"CertificateFile" = "8:"
|
||||||
|
"PrivateKeyFile" = "8:"
|
||||||
|
"TimeStampServer" = "8:"
|
||||||
|
"InstallerBootstrapper" = "3:2"
|
||||||
|
"BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
|
||||||
|
{
|
||||||
|
"Enabled" = "11:TRUE"
|
||||||
|
"PromptEnabled" = "11:TRUE"
|
||||||
|
"PrerequisitesLocation" = "2:1"
|
||||||
|
"Url" = "8:"
|
||||||
|
"ComponentsUrl" = "8:"
|
||||||
|
"Items"
|
||||||
|
{
|
||||||
|
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
|
||||||
|
{
|
||||||
|
"Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
|
||||||
|
"ProductCode" = "8:.NETFramework,Version=v4.7.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"Release"
|
||||||
|
{
|
||||||
|
"DisplayName" = "8:Release"
|
||||||
|
"IsDebugOnly" = "11:FALSE"
|
||||||
|
"IsReleaseOnly" = "11:TRUE"
|
||||||
|
"OutputFilename" = "8:Release\\FireWalletSetup.msi"
|
||||||
|
"PackageFilesAs" = "3:2"
|
||||||
|
"PackageFileSize" = "3:-2147483648"
|
||||||
|
"CabType" = "3:1"
|
||||||
|
"Compression" = "3:2"
|
||||||
|
"SignOutput" = "11:FALSE"
|
||||||
|
"CertificateFile" = "8:"
|
||||||
|
"PrivateKeyFile" = "8:"
|
||||||
|
"TimeStampServer" = "8:"
|
||||||
|
"InstallerBootstrapper" = "3:2"
|
||||||
|
"BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
|
||||||
|
{
|
||||||
|
"Enabled" = "11:TRUE"
|
||||||
|
"PromptEnabled" = "11:TRUE"
|
||||||
|
"PrerequisitesLocation" = "2:1"
|
||||||
|
"Url" = "8:"
|
||||||
|
"ComponentsUrl" = "8:"
|
||||||
|
"Items"
|
||||||
|
{
|
||||||
|
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
|
||||||
|
{
|
||||||
|
"Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
|
||||||
|
"ProductCode" = "8:.NETFramework,Version=v4.7.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"Deployable"
|
||||||
|
{
|
||||||
|
"CustomAction"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
"DefaultFeature"
|
||||||
|
{
|
||||||
|
"Name" = "8:DefaultFeature"
|
||||||
|
"Title" = "8:"
|
||||||
|
"Description" = "8:"
|
||||||
|
}
|
||||||
|
"ExternalPersistence"
|
||||||
|
{
|
||||||
|
"LaunchCondition"
|
||||||
|
{
|
||||||
|
"{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_EFBFB4D93D6D4A0FBAC69F265F0E04DB"
|
||||||
|
{
|
||||||
|
"Name" = "8:.NET Core"
|
||||||
|
"Message" = "8:[VSDNETCOREMSG]"
|
||||||
|
"AllowLaterVersions" = "11:FALSE"
|
||||||
|
"InstallUrl" = "8:https://dotnet.microsoft.com/download/dotnet-core/[NetCoreVerMajorDotMinor]"
|
||||||
|
"IsNETCore" = "11:TRUE"
|
||||||
|
"Architecture" = "2:0"
|
||||||
|
"Runtime" = "2:0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"File"
|
||||||
|
{
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_04F4559CA8D64ECF91FCC8C907FEA44E"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:..\\..\\..\\..\\Downloads\\FW.ico"
|
||||||
|
"TargetName" = "8:FW.ico"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_5E5E37B331014B2BBEB73878A5BF354B"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_57B16B55588E41459D70F9475B14B4BB"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:..\\..\\..\\..\\Downloads\\FWBanner.bmp"
|
||||||
|
"TargetName" = "8:FWBanner.bmp"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_5E5E37B331014B2BBEB73878A5BF354B"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"FileType"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
"Folder"
|
||||||
|
{
|
||||||
|
"{3C67513D-01DD-4637-8A68-80971EB9504F}:_5E5E37B331014B2BBEB73878A5BF354B"
|
||||||
|
{
|
||||||
|
"DefaultLocation" = "8:[ProgramFilesFolder]\\FireWallet"
|
||||||
|
"Name" = "8:#1925"
|
||||||
|
"AlwaysCreate" = "11:FALSE"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Property" = "8:TARGETDIR"
|
||||||
|
"Folders"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{1525181F-901A-416C-8A58-119130FE478E}:_BCC2277C7F2A49D9859AB85BE80771EC"
|
||||||
|
{
|
||||||
|
"Name" = "8:#1916"
|
||||||
|
"AlwaysCreate" = "11:FALSE"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Property" = "8:DesktopFolder"
|
||||||
|
"Folders"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{1525181F-901A-416C-8A58-119130FE478E}:_C825708961074F0AB407ADD664E1DFA7"
|
||||||
|
{
|
||||||
|
"Name" = "8:#1919"
|
||||||
|
"AlwaysCreate" = "11:FALSE"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Property" = "8:ProgramMenuFolder"
|
||||||
|
"Folders"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"LaunchCondition"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
"Locator"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
"MsiBootstrapper"
|
||||||
|
{
|
||||||
|
"LangId" = "3:1033"
|
||||||
|
"RequiresElevation" = "11:FALSE"
|
||||||
|
}
|
||||||
|
"Product"
|
||||||
|
{
|
||||||
|
"Name" = "8:Microsoft Visual Studio"
|
||||||
|
"ProductName" = "8:FireWallet"
|
||||||
|
"ProductCode" = "8:{EEABCF5F-54F1-4C71-A82F-FA131D9CC8C1}"
|
||||||
|
"PackageCode" = "8:{7B12D25F-C460-4627-B920-932CD9ACCF9E}"
|
||||||
|
"UpgradeCode" = "8:{0C86F725-6B01-4173-AA05-3F0EDF481362}"
|
||||||
|
"AspNetVersion" = "8:"
|
||||||
|
"RestartWWWService" = "11:FALSE"
|
||||||
|
"RemovePreviousVersions" = "11:TRUE"
|
||||||
|
"DetectNewerInstalledVersion" = "11:TRUE"
|
||||||
|
"InstallAllUsers" = "11:FALSE"
|
||||||
|
"ProductVersion" = "8:2.2"
|
||||||
|
"Manufacturer" = "8:Nathan.Woodburn/"
|
||||||
|
"ARPHELPTELEPHONE" = "8:"
|
||||||
|
"ARPHELPLINK" = "8:https://l.woodburn.au/discord"
|
||||||
|
"Title" = "8:FireWallet"
|
||||||
|
"Subject" = "8:"
|
||||||
|
"ARPCONTACT" = "8:Nathan.Woodburn/"
|
||||||
|
"Keywords" = "8:"
|
||||||
|
"ARPCOMMENTS" = "8:The Handshake wallet that is just Fire"
|
||||||
|
"ARPURLINFOABOUT" = "8:https://github.com/Nathanwoodburn/FireWallet"
|
||||||
|
"ARPPRODUCTICON" = "8:_04F4559CA8D64ECF91FCC8C907FEA44E"
|
||||||
|
"ARPIconIndex" = "3:0"
|
||||||
|
"SearchPath" = "8:"
|
||||||
|
"UseSystemSearchPath" = "11:TRUE"
|
||||||
|
"TargetPlatform" = "3:0"
|
||||||
|
"PreBuildEvent" = "8:"
|
||||||
|
"PostBuildEvent" = "8:"
|
||||||
|
"RunPostBuildEvent" = "3:0"
|
||||||
|
}
|
||||||
|
"Registry"
|
||||||
|
{
|
||||||
|
"HKLM"
|
||||||
|
{
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
"{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5CDEC48EDB6148E1938060F809CCE1AA"
|
||||||
|
{
|
||||||
|
"Name" = "8:Software"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"AlwaysCreate" = "11:FALSE"
|
||||||
|
"DeleteAtUninstall" = "11:FALSE"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
"{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_01E845438BDD488C9229BED4A07565D8"
|
||||||
|
{
|
||||||
|
"Name" = "8:[Manufacturer]"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"AlwaysCreate" = "11:FALSE"
|
||||||
|
"DeleteAtUninstall" = "11:FALSE"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
"Values"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"Values"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"HKCU"
|
||||||
|
{
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
"{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_E241C5D914C447D98BB058FEDA6FB2E0"
|
||||||
|
{
|
||||||
|
"Name" = "8:Software"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"AlwaysCreate" = "11:FALSE"
|
||||||
|
"DeleteAtUninstall" = "11:FALSE"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
"{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9056723452D74EEDA92F2BFD694C9C09"
|
||||||
|
{
|
||||||
|
"Name" = "8:[Manufacturer]"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"AlwaysCreate" = "11:FALSE"
|
||||||
|
"DeleteAtUninstall" = "11:FALSE"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
"Values"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"Values"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"HKCR"
|
||||||
|
{
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"HKU"
|
||||||
|
{
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"HKPU"
|
||||||
|
{
|
||||||
|
"Keys"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"Sequences"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
"Shortcut"
|
||||||
|
{
|
||||||
|
"{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_77F1CD9C54DE4F0294C9C2C3DAD59446"
|
||||||
|
{
|
||||||
|
"Name" = "8:FireWallet"
|
||||||
|
"Arguments" = "8:"
|
||||||
|
"Description" = "8:The Handshake wallet that is just Fire"
|
||||||
|
"ShowCmd" = "3:1"
|
||||||
|
"IconIndex" = "3:0"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Target" = "8:_24448DEFADA9423B92D588F3CCFCE0BE"
|
||||||
|
"Folder" = "8:_C825708961074F0AB407ADD664E1DFA7"
|
||||||
|
"WorkingFolder" = "8:_5E5E37B331014B2BBEB73878A5BF354B"
|
||||||
|
"Icon" = "8:_04F4559CA8D64ECF91FCC8C907FEA44E"
|
||||||
|
"Feature" = "8:"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"UserInterface"
|
||||||
|
{
|
||||||
|
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_324353D76F3C40A7AC383ECFFB7AD313"
|
||||||
|
{
|
||||||
|
"Name" = "8:#1901"
|
||||||
|
"Sequence" = "3:2"
|
||||||
|
"Attributes" = "3:2"
|
||||||
|
"Dialogs"
|
||||||
|
{
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9E8FABACA40B4AF19AC7837F6199E349"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:100"
|
||||||
|
"DisplayName" = "8:Progress"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:0"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
"ShowProgress"
|
||||||
|
{
|
||||||
|
"Name" = "8:ShowProgress"
|
||||||
|
"DisplayName" = "8:#1009"
|
||||||
|
"Description" = "8:#1109"
|
||||||
|
"Type" = "3:5"
|
||||||
|
"ContextData" = "8:1;True=1;False=0"
|
||||||
|
"Attributes" = "3:0"
|
||||||
|
"Setting" = "3:0"
|
||||||
|
"Value" = "3:1"
|
||||||
|
"DefaultValue" = "3:1"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_32996AB03B5A4723B065CE209D7CB353"
|
||||||
|
{
|
||||||
|
"UseDynamicProperties" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
|
||||||
|
}
|
||||||
|
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_5F8B496BAA7C4A4A83CC46CE05F0536A"
|
||||||
|
{
|
||||||
|
"Name" = "8:#1900"
|
||||||
|
"Sequence" = "3:2"
|
||||||
|
"Attributes" = "3:1"
|
||||||
|
"Dialogs"
|
||||||
|
{
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A09B666A12A14C99B65048178A482B56"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:300"
|
||||||
|
"DisplayName" = "8:Confirm Installation"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:0"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_B3830A4823DE445B8A66D38BC4EA17AD"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:200"
|
||||||
|
"DisplayName" = "8:Installation Folder"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:0"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F1DC457477AE4898BBA3BE9EADB3A338"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:100"
|
||||||
|
"DisplayName" = "8:Welcome"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:2"
|
||||||
|
"Value" = "8:_57B16B55588E41459D70F9475B14B4BB"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
"CopyrightWarning"
|
||||||
|
{
|
||||||
|
"Name" = "8:CopyrightWarning"
|
||||||
|
"DisplayName" = "8:#1002"
|
||||||
|
"Description" = "8:#1102"
|
||||||
|
"Type" = "3:3"
|
||||||
|
"ContextData" = "8:"
|
||||||
|
"Attributes" = "3:0"
|
||||||
|
"Setting" = "3:2"
|
||||||
|
"Value" = "8:WARNING: This computer program is experimental and is not guaranteed to be free of bugs. Please report any bugs to the Nathan or open an issue on the GitHub repository."
|
||||||
|
"DefaultValue" = "8:#1202"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
"Welcome"
|
||||||
|
{
|
||||||
|
"Name" = "8:Welcome"
|
||||||
|
"DisplayName" = "8:#1003"
|
||||||
|
"Description" = "8:#1103"
|
||||||
|
"Type" = "3:3"
|
||||||
|
"ContextData" = "8:"
|
||||||
|
"Attributes" = "3:0"
|
||||||
|
"Setting" = "3:1"
|
||||||
|
"Value" = "8:#1203"
|
||||||
|
"DefaultValue" = "8:#1203"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_815C979C89AA4703BA731134B3DF354D"
|
||||||
|
{
|
||||||
|
"Name" = "8:#1902"
|
||||||
|
"Sequence" = "3:2"
|
||||||
|
"Attributes" = "3:3"
|
||||||
|
"Dialogs"
|
||||||
|
{
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D48757B8F9644017B6E349A2ADFC4926"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:100"
|
||||||
|
"DisplayName" = "8:Finished"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:0"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8F9198D340754DEE9FFB73D19BBC990E"
|
||||||
|
{
|
||||||
|
"Name" = "8:#1902"
|
||||||
|
"Sequence" = "3:1"
|
||||||
|
"Attributes" = "3:3"
|
||||||
|
"Dialogs"
|
||||||
|
{
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1B933693E12C4BD5B3C54B519C9B1F44"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:100"
|
||||||
|
"DisplayName" = "8:Finished"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:2"
|
||||||
|
"Value" = "8:_57B16B55588E41459D70F9475B14B4BB"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
"UpdateText"
|
||||||
|
{
|
||||||
|
"Name" = "8:UpdateText"
|
||||||
|
"DisplayName" = "8:#1058"
|
||||||
|
"Description" = "8:#1158"
|
||||||
|
"Type" = "3:15"
|
||||||
|
"ContextData" = "8:"
|
||||||
|
"Attributes" = "3:0"
|
||||||
|
"Setting" = "3:1"
|
||||||
|
"Value" = "8:#1258"
|
||||||
|
"DefaultValue" = "8:#1258"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_B6C7BA0AF8C2424AABEAFBFD45FF0FE5"
|
||||||
|
{
|
||||||
|
"Name" = "8:#1901"
|
||||||
|
"Sequence" = "3:1"
|
||||||
|
"Attributes" = "3:2"
|
||||||
|
"Dialogs"
|
||||||
|
{
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_52696058E87E4D62B45AABE61847F970"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:100"
|
||||||
|
"DisplayName" = "8:Progress"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:2"
|
||||||
|
"Value" = "8:_57B16B55588E41459D70F9475B14B4BB"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
"ShowProgress"
|
||||||
|
{
|
||||||
|
"Name" = "8:ShowProgress"
|
||||||
|
"DisplayName" = "8:#1009"
|
||||||
|
"Description" = "8:#1109"
|
||||||
|
"Type" = "3:5"
|
||||||
|
"ContextData" = "8:1;True=1;False=0"
|
||||||
|
"Attributes" = "3:0"
|
||||||
|
"Setting" = "3:0"
|
||||||
|
"Value" = "3:1"
|
||||||
|
"DefaultValue" = "3:1"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_DAC87040C23F42E5A149D5258B972E5E"
|
||||||
|
{
|
||||||
|
"UseDynamicProperties" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
|
||||||
|
}
|
||||||
|
"{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E63D340D36A543A8BBF49B7BC9395B62"
|
||||||
|
{
|
||||||
|
"Name" = "8:#1900"
|
||||||
|
"Sequence" = "3:1"
|
||||||
|
"Attributes" = "3:1"
|
||||||
|
"Dialogs"
|
||||||
|
{
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0315D52EA80A47BC987BE0887D3DBDEA"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:100"
|
||||||
|
"DisplayName" = "8:Welcome"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:2"
|
||||||
|
"Value" = "8:_57B16B55588E41459D70F9475B14B4BB"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
"CopyrightWarning"
|
||||||
|
{
|
||||||
|
"Name" = "8:CopyrightWarning"
|
||||||
|
"DisplayName" = "8:#1002"
|
||||||
|
"Description" = "8:#1102"
|
||||||
|
"Type" = "3:3"
|
||||||
|
"ContextData" = "8:"
|
||||||
|
"Attributes" = "3:0"
|
||||||
|
"Setting" = "3:2"
|
||||||
|
"Value" = "8:WARNING: This computer program is experimental and is not guaranteed to be free of bugs. Please report any bugs to the Nathan or open an issue on the GitHub repository."
|
||||||
|
"DefaultValue" = "8:#1202"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
"Welcome"
|
||||||
|
{
|
||||||
|
"Name" = "8:Welcome"
|
||||||
|
"DisplayName" = "8:#1003"
|
||||||
|
"Description" = "8:#1103"
|
||||||
|
"Type" = "3:3"
|
||||||
|
"ContextData" = "8:"
|
||||||
|
"Attributes" = "3:0"
|
||||||
|
"Setting" = "3:1"
|
||||||
|
"Value" = "8:#1203"
|
||||||
|
"DefaultValue" = "8:#1203"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_7674CF69E98F4233B169B0E10CB27009"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:200"
|
||||||
|
"DisplayName" = "8:Installation Folder"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:2"
|
||||||
|
"Value" = "8:_57B16B55588E41459D70F9475B14B4BB"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
"InstallAllUsersVisible"
|
||||||
|
{
|
||||||
|
"Name" = "8:InstallAllUsersVisible"
|
||||||
|
"DisplayName" = "8:#1059"
|
||||||
|
"Description" = "8:#1159"
|
||||||
|
"Type" = "3:5"
|
||||||
|
"ContextData" = "8:1;True=1;False=0"
|
||||||
|
"Attributes" = "3:0"
|
||||||
|
"Setting" = "3:0"
|
||||||
|
"Value" = "3:0"
|
||||||
|
"DefaultValue" = "3:1"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E94A31E39D684EC09F27D5431F16531B"
|
||||||
|
{
|
||||||
|
"Sequence" = "3:300"
|
||||||
|
"DisplayName" = "8:Confirm Installation"
|
||||||
|
"UseDynamicProperties" = "11:TRUE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
|
||||||
|
"Properties"
|
||||||
|
{
|
||||||
|
"BannerBitmap"
|
||||||
|
{
|
||||||
|
"Name" = "8:BannerBitmap"
|
||||||
|
"DisplayName" = "8:#1001"
|
||||||
|
"Description" = "8:#1101"
|
||||||
|
"Type" = "3:8"
|
||||||
|
"ContextData" = "8:Bitmap"
|
||||||
|
"Attributes" = "3:4"
|
||||||
|
"Setting" = "3:2"
|
||||||
|
"Value" = "8:_57B16B55588E41459D70F9475B14B4BB"
|
||||||
|
"UsePlugInResources" = "11:TRUE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"MergeModule"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
"ProjectOutput"
|
||||||
|
{
|
||||||
|
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_24448DEFADA9423B92D588F3CCFCE0BE"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:..\\FireWallet\\obj\\Debug\\net6.0-windows\\apphost.exe"
|
||||||
|
"TargetName" = "8:"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_5E5E37B331014B2BBEB73878A5BF354B"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:FALSE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
"ProjectOutputGroupRegister" = "3:1"
|
||||||
|
"OutputConfiguration" = "8:"
|
||||||
|
"OutputGroupCanonicalName" = "8:PublishItems"
|
||||||
|
"OutputProjectGuid" = "8:{14F28C5A-34CC-4FE0-8C8B-35C9A60704BC}"
|
||||||
|
"ShowKeyOutput" = "11:TRUE"
|
||||||
|
"ExcludeFilters"
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
28
README.md
28
README.md
@@ -4,6 +4,11 @@ Experimental wallet for Handshake chain
|
|||||||
## Installation
|
## Installation
|
||||||
### From Releases
|
### From Releases
|
||||||
You can install the latest release from [here](https://github.com/Nathanwoodburn/FireWallet/releases/).
|
You can install the latest release from [here](https://github.com/Nathanwoodburn/FireWallet/releases/).
|
||||||
|
|
||||||
|
Here are some videos showing how to install and use FireWallet:
|
||||||
|
Install with a running Bob wallet: https://cloud.woodburn.au/s/pS8e2oQDidrMJWx
|
||||||
|
Install with internal HSD: https://cloud.woodburn.au/s/trwd8TyxbDfqaxF (You NEED to have Node, NPM, and git installed to use internal HSD)
|
||||||
|
|
||||||
### Build from source
|
### Build from source
|
||||||
You can build from source by cloning this repo.
|
You can build from source by cloning this repo.
|
||||||
You will need Visual Studio (recommend a recent version) and .net desktop development tools installed.
|
You will need Visual Studio (recommend a recent version) and .net desktop development tools installed.
|
||||||
@@ -115,3 +120,26 @@ You can use a Ledger device to sign transactions.
|
|||||||
You need to have Node, NPM, and git installed to use Ledger.
|
You need to have Node, NPM, and git installed to use Ledger.
|
||||||
The Ledger components are not included in the app.
|
The Ledger components are not included in the app.
|
||||||
These will install when you first send HNS (not domains) from a Ledger.
|
These will install when you first send HNS (not domains) from a Ledger.
|
||||||
|
|
||||||
|
|
||||||
|
# Settings
|
||||||
|
FireWallet uses a few different settings files.
|
||||||
|
They are stored in `%appdata%\FireWallet\` (`C:\Users\{username}\AppData\Roaming\FireWallet\`)
|
||||||
|
|
||||||
|
## settings.txt
|
||||||
|
This file stores the user settings for the application.
|
||||||
|
|
||||||
|
## node.txt
|
||||||
|
This file stores the node (HSD/Bob connection) settings.
|
||||||
|
The Network is the network you want to connect to (default is `0` for Mainnet).
|
||||||
|
If you delete this file, FireWallet will show the node setup screen on next startup.
|
||||||
|
|
||||||
|
## theme.txt
|
||||||
|
This file stores the theme settings.
|
||||||
|
The theme is the color scheme of the application.
|
||||||
|
The `transparent-mode` key is used to enable or disable transparent modes.
|
||||||
|
There are 4 modes: `off` is disabled, `mica` is windows app style, `key` is to make 1 colour transparent, and `percent` is to set the opacity of the window.
|
||||||
|
|
||||||
|
## log.txt
|
||||||
|
This file stores the logs for the application.
|
||||||
|
You should check this file if you have any issues with the application.
|
||||||
19
debugging.md
Normal file
19
debugging.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Debugging Info
|
||||||
|
|
||||||
|
## App startup errors
|
||||||
|
|
||||||
|
|
||||||
|
## Node (HSD) errors
|
||||||
|
If you have selected to run the internal node you can check these steps to see if you can fix the issue.
|
||||||
|
|
||||||
|
1. Check the HSD directory in `%appdata%\FireWallet\` (`C:\Users\{username}\AppData\Roaming\FireWallet\HSD`)
|
||||||
|
2. Try running `npm install` in the HSD directory (could have failed in the install process)
|
||||||
|
3. Look in the HSD logs for errors in `C:\Users\{username}\.hsd\debug.log`
|
||||||
|
|
||||||
|
|
||||||
|
## Ledger errors
|
||||||
|
If you are having issues with Ledger you can check these steps to see if you can fix the issue.
|
||||||
|
|
||||||
|
1. Check the Ledger directory in `%appdata%\FireWallet\` (`C:\Users\{username}\AppData\Roaming\FireWallet\hsd-ledger`)
|
||||||
|
2. Try running `npm install` in the Ledger directory (could have failed in the install process)
|
||||||
|
3. Try running `node bin\hsd-ledger createaddress --api-key {api-key} -w {cold wallet name}` in the Ledger directory. This will get you to verify your address on the ledger device. If this fails you have some bigger issue.
|
||||||
Reference in New Issue
Block a user