main: Added transfers

This commit is contained in:
Nathan Woodburn 2023-06-08 00:51:07 +10:00
parent de14b98c6f
commit d073b7621f
Signed by: nathanwoodburn
GPG Key ID: 203B000478AD0EF1
7 changed files with 401 additions and 55 deletions

View File

@ -104,6 +104,65 @@ namespace FireWallet
lockupLabel.AutoSize = true; lockupLabel.AutoSize = true;
tx.Controls.Add(lockupLabel); tx.Controls.Add(lockupLabel);
Button deleteTX = new Button();
deleteTX.Text = "X";
deleteTX.Location = new Point(tx.Width - 40, 10);
deleteTX.Width = 25;
deleteTX.Height = 25;
deleteTX.TextAlign = ContentAlignment.MiddleCenter;
deleteTX.Click += (sender, e) => {
panelTXs.Controls.Remove(tx);
FixSpacing();
List<Batch> temp = new List<Batch>();
foreach (Batch batch in batches)
{
if (batch.domain != domain && batch.method != operation)
{
temp.Add(batch);
}
}
batches = temp.ToArray();
};
deleteTX.FlatStyle = FlatStyle.Flat;
deleteTX.Font = new Font(deleteTX.Font.FontFamily, 9F, FontStyle.Bold);
tx.Controls.Add(deleteTX);
panelTXs.Controls.Add(tx);
UpdateTheme();
}
public void AddBatch(string domain, string operation, string toAddress)
{
if (operation != "TRANSFER")
{
AddBatch(domain, operation);
return;
}
batches = batches.Concat(new Batch[] { new Batch(domain, operation, toAddress) }).ToArray();
Panel tx = new Panel();
tx.Left = 0;
tx.Top = panelTXs.Controls.Count * 52 + 2;
tx.Width = panelTXs.Width - SystemInformation.VerticalScrollBarWidth;
tx.Height = 50;
tx.BorderStyle = BorderStyle.FixedSingle;
Label action = new Label();
action.Text = operation;
action.Location = new Point(10, 10);
action.AutoSize = true;
tx.Controls.Add(action);
Label target = new Label();
target.Text = domain;
target.Location = new Point(10, 30);
target.AutoSize = true;
tx.Controls.Add(target);
Label toAddressLabel = new Label();
toAddressLabel.Text = "-> " + toAddress;
toAddressLabel.Location = new Point(200, 10);
toAddressLabel.AutoSize = true;
tx.Controls.Add(toAddressLabel);
Button deleteTX = new Button(); Button deleteTX = new Button();
deleteTX.Text = "X"; deleteTX.Text = "X";
deleteTX.Location = new Point(tx.Width - 40, 10); deleteTX.Location = new Point(tx.Width - 40, 10);
@ -389,7 +448,17 @@ namespace FireWallet
StreamWriter sw = new StreamWriter(saveFileDialog.FileName); StreamWriter sw = new StreamWriter(saveFileDialog.FileName);
foreach (Batch b in batches) foreach (Batch b in batches)
{ {
sw.WriteLine(b.domain + "," + b.method + "," + b.bid + "," + b.lockup); if (b.method == "BID")
{
sw.WriteLine(b.domain + "," + b.method + "," + b.bid + "," + b.lockup, b.toAddress);
}
else if (b.method == "TRANSFER")
{
sw.WriteLine(b.domain + "," + b.method + "," + b.toAddress);
} else
{
sw.WriteLine(b.domain + "," + b.method);
}
} }
sw.Dispose(); sw.Dispose();
} }
@ -414,6 +483,10 @@ namespace FireWallet
{ {
AddBatch(split[0], split[1]); AddBatch(split[0], split[1]);
} }
else if (split.Length == 3)
{
AddBatch(split[0], split[1], split[2]);
}
else if (split.Length == 4) else if (split.Length == 4)
{ {
AddBatch(split[0], split[1], Convert.ToDecimal(split[2]), Convert.ToDecimal(split[3])); AddBatch(split[0], split[1], Convert.ToDecimal(split[2]), Convert.ToDecimal(split[3]));
@ -445,8 +518,17 @@ namespace FireWallet
if (batchImportForm.batches != null) if (batchImportForm.batches != null)
{ {
foreach (Batch b in batchImportForm.batches) foreach (Batch b in batchImportForm.batches)
{
if (b.method == "BID")
{ {
AddBatch(b.domain, b.method, b.bid, b.lockup); AddBatch(b.domain, b.method, b.bid, b.lockup);
} else if (b.method == "TRANSFER")
{
AddBatch(b.domain, b.method, b.toAddress);
} else
{
AddBatch(b.domain, b.method);
}
} }
} }
} }
@ -499,25 +581,47 @@ namespace FireWallet
public string method { get; } public string method { get; }
public decimal bid { get; } public decimal bid { get; }
public decimal lockup { get; } public decimal lockup { get; }
public Batch(string domain, string operation) public string toAddress { get; }
public Batch(string domain, string method)
{ {
this.domain = domain; this.domain = domain;
this.method = operation; this.method = method;
bid = 0;
lockup = 0;
toAddress = "";
}
public Batch(string domain, string method, string toAddress)
{
this.domain = domain;
this.method = method;
this.toAddress = toAddress;
bid = 0; bid = 0;
lockup = 0; lockup = 0;
} }
public Batch(string domain, string operation, decimal bid, decimal lockup) public Batch(string domain, string method, decimal bid, decimal lockup)
{ {
this.domain = domain; this.domain = domain;
this.method = operation; this.method = method;
this.bid = bid; this.bid = bid;
this.lockup = lockup; this.lockup = lockup;
toAddress = "";
}
public Batch(string domain, string method, decimal bid, decimal lockup, string toAddress)
{
this.domain = domain;
this.method = method;
this.bid = bid;
this.lockup = lockup;
this.toAddress = toAddress;
} }
public override string ToString() public override string ToString()
{ {
if (method == "BID") if (method == "BID")
{ {
return "[\"BID\", \"" + domain + "\", " + bid + ", " + lockup + "]"; return "[\"BID\", \"" + domain + "\", " + bid + ", " + lockup + "]";
} else if (method == "TRANSFER")
{
return "[\"TRANSFER\", \"" + domain + "\", \"" + toAddress + "\"]";
} }
return "[\"" + method + "\", \"" + domain + "\"]"; return "[\"" + method + "\", \"" + domain + "\"]";
} }

View File

@ -38,6 +38,12 @@
textBoxBlind = new TextBox(); textBoxBlind = new TextBox();
buttonImport = new Button(); buttonImport = new Button();
buttonCancel = new Button(); buttonCancel = new Button();
label5 = new Label();
groupBoxBid = new GroupBox();
groupBoxtransfer = new GroupBox();
textBoxToAddress = new TextBox();
groupBoxBid.SuspendLayout();
groupBoxtransfer.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// listBoxDomains // listBoxDomains
@ -65,11 +71,12 @@
comboBoxMode.FlatStyle = FlatStyle.Flat; comboBoxMode.FlatStyle = FlatStyle.Flat;
comboBoxMode.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); comboBoxMode.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
comboBoxMode.FormattingEnabled = true; comboBoxMode.FormattingEnabled = true;
comboBoxMode.Items.AddRange(new object[] { "OPEN", "BID", "REVEAL", "REDEEM", "RENEW" }); comboBoxMode.Items.AddRange(new object[] { "OPEN", "BID", "REVEAL", "REDEEM", "RENEW", "TRANSFER", "FINALIZE" });
comboBoxMode.Location = new System.Drawing.Point(346, 42); comboBoxMode.Location = new System.Drawing.Point(346, 42);
comboBoxMode.Name = "comboBoxMode"; comboBoxMode.Name = "comboBoxMode";
comboBoxMode.Size = new System.Drawing.Size(226, 29); comboBoxMode.Size = new System.Drawing.Size(226, 29);
comboBoxMode.TabIndex = 2; comboBoxMode.TabIndex = 2;
comboBoxMode.SelectedIndexChanged += comboBoxMode_SelectedIndexChanged;
// //
// label2 // label2
// //
@ -85,7 +92,7 @@
// //
label3.AutoSize = true; label3.AutoSize = true;
label3.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); label3.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
label3.Location = new System.Drawing.Point(305, 111); label3.Location = new System.Drawing.Point(25, 25);
label3.Name = "label3"; label3.Name = "label3";
label3.Size = new System.Drawing.Size(35, 21); label3.Size = new System.Drawing.Size(35, 21);
label3.TabIndex = 3; label3.TabIndex = 3;
@ -95,7 +102,7 @@
// //
label4.AutoSize = true; label4.AutoSize = true;
label4.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); label4.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
label4.Location = new System.Drawing.Point(292, 159); label4.Location = new System.Drawing.Point(12, 73);
label4.Name = "label4"; label4.Name = "label4";
label4.Size = new System.Drawing.Size(48, 21); label4.Size = new System.Drawing.Size(48, 21);
label4.TabIndex = 3; label4.TabIndex = 3;
@ -104,7 +111,7 @@
// textBoxBid // textBoxBid
// //
textBoxBid.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); textBoxBid.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
textBoxBid.Location = new System.Drawing.Point(346, 108); textBoxBid.Location = new System.Drawing.Point(66, 22);
textBoxBid.Name = "textBoxBid"; textBoxBid.Name = "textBoxBid";
textBoxBid.Size = new System.Drawing.Size(226, 29); textBoxBid.Size = new System.Drawing.Size(226, 29);
textBoxBid.TabIndex = 4; textBoxBid.TabIndex = 4;
@ -112,7 +119,7 @@
// textBoxBlind // textBoxBlind
// //
textBoxBlind.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); textBoxBlind.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
textBoxBlind.Location = new System.Drawing.Point(346, 156); textBoxBlind.Location = new System.Drawing.Point(66, 70);
textBoxBlind.Name = "textBoxBlind"; textBoxBlind.Name = "textBoxBlind";
textBoxBlind.Size = new System.Drawing.Size(226, 29); textBoxBlind.Size = new System.Drawing.Size(226, 29);
textBoxBlind.TabIndex = 5; textBoxBlind.TabIndex = 5;
@ -141,17 +148,57 @@
buttonCancel.UseVisualStyleBackColor = true; buttonCancel.UseVisualStyleBackColor = true;
buttonCancel.Click += buttonCancel_Click; buttonCancel.Click += buttonCancel_Click;
// //
// label5
//
label5.AutoSize = true;
label5.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
label5.Location = new System.Drawing.Point(6, 19);
label5.Name = "label5";
label5.Size = new System.Drawing.Size(67, 21);
label5.TabIndex = 7;
label5.Text = "Send To:";
//
// groupBoxBid
//
groupBoxBid.Controls.Add(textBoxBid);
groupBoxBid.Controls.Add(label3);
groupBoxBid.Controls.Add(label4);
groupBoxBid.Controls.Add(textBoxBlind);
groupBoxBid.Location = new System.Drawing.Point(287, 99);
groupBoxBid.Name = "groupBoxBid";
groupBoxBid.Size = new System.Drawing.Size(370, 200);
groupBoxBid.TabIndex = 8;
groupBoxBid.TabStop = false;
groupBoxBid.Text = "Bid Settings";
//
// groupBoxtransfer
//
groupBoxtransfer.Controls.Add(textBoxToAddress);
groupBoxtransfer.Controls.Add(label5);
groupBoxtransfer.Location = new System.Drawing.Point(287, 99);
groupBoxtransfer.Name = "groupBoxtransfer";
groupBoxtransfer.Size = new System.Drawing.Size(370, 200);
groupBoxtransfer.TabIndex = 0;
groupBoxtransfer.TabStop = false;
groupBoxtransfer.Text = "Transfer Settings";
//
// textBoxToAddress
//
textBoxToAddress.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
textBoxToAddress.Location = new System.Drawing.Point(6, 43);
textBoxToAddress.Name = "textBoxToAddress";
textBoxToAddress.Size = new System.Drawing.Size(358, 29);
textBoxToAddress.TabIndex = 8;
//
// BatchImportForm // BatchImportForm
// //
AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new System.Drawing.Size(950, 535); ClientSize = new System.Drawing.Size(950, 535);
Controls.Add(groupBoxtransfer);
Controls.Add(groupBoxBid);
Controls.Add(buttonCancel); Controls.Add(buttonCancel);
Controls.Add(buttonImport); Controls.Add(buttonImport);
Controls.Add(textBoxBlind);
Controls.Add(textBoxBid);
Controls.Add(label4);
Controls.Add(label3);
Controls.Add(label2); Controls.Add(label2);
Controls.Add(comboBoxMode); Controls.Add(comboBoxMode);
Controls.Add(label1); Controls.Add(label1);
@ -161,6 +208,10 @@
Name = "BatchImportForm"; Name = "BatchImportForm";
Text = "Import"; Text = "Import";
Load += BatchImportForm_Load; Load += BatchImportForm_Load;
groupBoxBid.ResumeLayout(false);
groupBoxBid.PerformLayout();
groupBoxtransfer.ResumeLayout(false);
groupBoxtransfer.PerformLayout();
ResumeLayout(false); ResumeLayout(false);
PerformLayout(); PerformLayout();
} }
@ -177,5 +228,9 @@
private TextBox textBoxBlind; private TextBox textBoxBlind;
private Button buttonImport; private Button buttonImport;
private Button buttonCancel; private Button buttonCancel;
private Label label5;
private GroupBox groupBoxBid;
private GroupBox groupBoxtransfer;
private TextBox textBoxToAddress;
} }
} }

View File

@ -234,9 +234,10 @@ namespace FireWallet
Batch[] newBatch = new Batch[batches.Length + 1]; Batch[] newBatch = new Batch[batches.Length + 1];
Array.Copy(batches, newBatch, batches.Length); Array.Copy(batches, newBatch, batches.Length);
newBatch[newBatch.Length - 1] = new Batch(domain, "BID", bid , lockup); newBatch[newBatch.Length - 1] = new Batch(domain, "BID", bid, lockup);
batches = newBatch; batches = newBatch;
} catch (Exception ex) }
catch (Exception ex)
{ {
NotifyForm notify = new NotifyForm("Import error: \n" + ex.Message); NotifyForm notify = new NotifyForm("Import error: \n" + ex.Message);
notify.ShowDialog(); notify.ShowDialog();
@ -245,7 +246,9 @@ namespace FireWallet
} }
} }
this.Close(); this.Close();
} else if (comboBoxMode.Text == "OPEN" || comboBoxMode.Text == "REVEAL" || comboBoxMode.Text == "REDEEM" || comboBoxMode.Text == "RENEW") }
else if (comboBoxMode.Text == "OPEN" || comboBoxMode.Text == "REVEAL" || comboBoxMode.Text == "REDEEM"
|| comboBoxMode.Text == "RENEW" || comboBoxMode.Text == "FINALIZE")
{ {
batches = new Batch[0]; batches = new Batch[0];
foreach (string domain in listBoxDomains.Items) foreach (string domain in listBoxDomains.Items)
@ -259,11 +262,46 @@ namespace FireWallet
} }
} }
this.Close(); this.Close();
} else }
else if (comboBoxMode.Text == "TRANSFER")
{
batches = new Batch[0];
foreach (string domain in listBoxDomains.Items)
{
if (domain != "")
{
Batch[] newBatch = new Batch[batches.Length + 1];
Array.Copy(batches, newBatch, batches.Length);
newBatch[newBatch.Length - 1] = new Batch(domain, comboBoxMode.Text, textBoxToAddress.Text);
batches = newBatch;
}
}
this.Close();
}
else
{ {
MessageBox.Show("Please select a mode"); MessageBox.Show("Please select a mode");
} }
} }
private void comboBoxMode_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBoxMode.Text == "BID")
{
groupBoxBid.Visible = true;
groupBoxtransfer.Visible = false;
}
else if (comboBoxMode.Text == "TRANSFER")
{
groupBoxBid.Visible = false;
groupBoxtransfer.Visible = true;
}
else
{
groupBoxBid.Visible = false;
groupBoxtransfer.Visible = false;
}
}
} }
} }
public class Batch public class Batch
@ -272,12 +310,22 @@ public class Batch
public string operation { get; } public string operation { get; }
public decimal bid { get; } public decimal bid { get; }
public decimal lockup { get; } public decimal lockup { get; }
public string toAddress { get; }
public Batch(string domain, string operation) public Batch(string domain, string operation)
{ {
this.domain = domain; this.domain = domain;
this.operation = operation; this.operation = operation;
bid = 0; bid = 0;
lockup = 0; lockup = 0;
toAddress = "";
}
public Batch(string domain, string operation, string toAddress)
{
this.domain = domain;
this.operation = operation;
this.toAddress = toAddress;
bid = 0;
lockup = 0;
} }
public Batch(string domain, string operation, decimal bid, decimal lockup) public Batch(string domain, string operation, decimal bid, decimal lockup)
{ {
@ -285,5 +333,6 @@ public class Batch
this.operation = operation; this.operation = operation;
this.bid = bid; this.bid = bid;
this.lockup = lockup; this.lockup = lockup;
toAddress = "";
} }
} }

View File

@ -47,6 +47,8 @@
groupBoxBids = new GroupBox(); groupBoxBids = new GroupBox();
panelBids = new Panel(); panelBids = new Panel();
groupBoxAction = new GroupBox(); groupBoxAction = new GroupBox();
buttonTransfer = new Button();
buttonRenew = new Button();
textBoxBlind = new TextBox(); textBoxBlind = new TextBox();
textBoxBid = new TextBox(); textBoxBid = new TextBox();
labelBlind = new Label(); labelBlind = new Label();
@ -240,6 +242,8 @@
// //
// groupBoxAction // groupBoxAction
// //
groupBoxAction.Controls.Add(buttonTransfer);
groupBoxAction.Controls.Add(buttonRenew);
groupBoxAction.Controls.Add(textBoxBlind); groupBoxAction.Controls.Add(textBoxBlind);
groupBoxAction.Controls.Add(textBoxBid); groupBoxAction.Controls.Add(textBoxBid);
groupBoxAction.Controls.Add(labelBlind); groupBoxAction.Controls.Add(labelBlind);
@ -255,6 +259,30 @@
groupBoxAction.Text = "Bid"; groupBoxAction.Text = "Bid";
groupBoxAction.Visible = false; groupBoxAction.Visible = false;
// //
// buttonTransfer
//
buttonTransfer.FlatStyle = FlatStyle.Flat;
buttonTransfer.Location = new System.Drawing.Point(253, 22);
buttonTransfer.Name = "buttonTransfer";
buttonTransfer.Size = new System.Drawing.Size(155, 37);
buttonTransfer.TabIndex = 6;
buttonTransfer.Text = "Transfer";
buttonTransfer.UseVisualStyleBackColor = true;
buttonTransfer.Visible = false;
buttonTransfer.Click += buttonTransfer_Click;
//
// buttonRenew
//
buttonRenew.FlatStyle = FlatStyle.Flat;
buttonRenew.Location = new System.Drawing.Point(414, 22);
buttonRenew.Name = "buttonRenew";
buttonRenew.Size = new System.Drawing.Size(155, 37);
buttonRenew.TabIndex = 6;
buttonRenew.Text = "Renew";
buttonRenew.UseVisualStyleBackColor = true;
buttonRenew.Visible = false;
buttonRenew.Click += buttonRenew_Click;
//
// textBoxBlind // textBoxBlind
// //
textBoxBlind.Location = new System.Drawing.Point(60, 64); textBoxBlind.Location = new System.Drawing.Point(60, 64);
@ -382,5 +410,7 @@
private Button buttonActionAlt; private Button buttonActionAlt;
private Button buttonActionMain; private Button buttonActionMain;
private Button buttonExplorer; private Button buttonExplorer;
private Button buttonRenew;
private Button buttonTransfer;
} }
} }

View File

@ -17,6 +17,8 @@ namespace FireWallet
string state; string state;
string explorerTX; string explorerTX;
string explorerName; string explorerName;
int TransferEnd;
public MainForm mainForm { get; set; } public MainForm mainForm { get; set; }
@ -234,7 +236,6 @@ namespace FireWallet
string content = "{\"method\": \"getnameinfo\", \"params\": [\"" + domain + "\"]}"; string content = "{\"method\": \"getnameinfo\", \"params\": [\"" + domain + "\"]}";
string response = await APIPost("", false, content); string response = await APIPost("", false, content);
JObject jObject = JObject.Parse(response); JObject jObject = JObject.Parse(response);
// Get block height // Get block height
string Nodeinfo = await APIGet("", false); string Nodeinfo = await APIGet("", false);
JObject jObjectInfo = JObject.Parse(Nodeinfo); JObject jObjectInfo = JObject.Parse(Nodeinfo);
@ -259,11 +260,19 @@ namespace FireWallet
labelStatusHighest.Text = convertHNS(info["highest"].ToString()) + " HNS"; labelStatusHighest.Text = convertHNS(info["highest"].ToString()) + " HNS";
labelStatusPaid.Text = convertHNS(info["value"].ToString()) + " HNS"; labelStatusPaid.Text = convertHNS(info["value"].ToString()) + " HNS";
if (info["transfer"].ToString() == "0") labelStatusTransferring.Text = "No";
else labelStatusTransferring.Text = "Yes";
JObject stats = (JObject)info["stats"]; JObject stats = (JObject)info["stats"];
if (info["transfer"].ToString() == "0")
{
labelStatusTransferring.Text = "No";
TransferEnd = 0;
}
else
{
labelStatusTransferring.Text = "Yes";
TransferEnd = Convert.ToInt32(stats["transferLockupEnd"].ToString());
}
if (state == "CLOSED") if (state == "CLOSED")
{ {
string expires = stats["blocksUntilExpire"].ToString() + " Blocks (~" + stats["daysUntilExpire"].ToString() + " days)"; string expires = stats["blocksUntilExpire"].ToString() + " Blocks (~" + stats["daysUntilExpire"].ToString() + " days)";
@ -294,13 +303,13 @@ namespace FireWallet
else groupBoxDNS.Visible = false; else groupBoxDNS.Visible = false;
//Setup action box //Setup action box
ActionSetup(state); ActionSetupAsync(state);
} }
catch (Exception ex) catch (Exception ex)
{ {
// No info -> Domain not yet auctioned // No info -> Domain not yet auctioned
labelStatusMain.Text = "Available"; labelStatusMain.Text = "Available";
ActionSetup("AVAILABLE"); ActionSetupAsync("AVAILABLE");
} }
} }
} }
@ -611,9 +620,18 @@ namespace FireWallet
sw.Dispose(); sw.Dispose();
} }
#endregion #endregion
private async Task<bool> DomainOwned()
private void ActionSetup(string state)
{ {
string ownedDomains = await APIGet("wallet/hot/name?own=true", true);
JArray ownedList = JArray.Parse(ownedDomains);
foreach (JObject d in ownedList) if (d["name"].ToString() == domain) return true;
return false;
}
private async void ActionSetupAsync(string state)
{
own = await DomainOwned();
this.state = state; this.state = state;
switch (state) switch (state)
{ {
@ -641,8 +659,22 @@ namespace FireWallet
{ {
if (labelStatusTransferring.Text == "Yes") if (labelStatusTransferring.Text == "Yes")
{ {
// Check if can finalize groupBoxAction.Show();
groupBoxAction.Text = "Finalize";
// Check if can finalize
if (height >= TransferEnd)
{
buttonActionMain.Text = "Send Finalize";
buttonActionAlt.Text = "Finalize in Batch";
}
else
{
labelBid.Text = "Finalize transfer in " + (TransferEnd - height).ToString() + " blocks";
labelBid.Show();
buttonActionMain.Text = "Cancel Transfer";
buttonActionAlt.Text = "Cancel in Batch";
}
} }
else else
{ {
@ -650,6 +682,8 @@ namespace FireWallet
groupBoxAction.Text = "Edit"; groupBoxAction.Text = "Edit";
buttonActionMain.Text = "Edit DNS"; buttonActionMain.Text = "Edit DNS";
buttonActionAlt.Text = "Edit in Batch"; buttonActionAlt.Text = "Edit in Batch";
buttonRenew.Show();
buttonTransfer.Show();
} }
} }
break; break;
@ -684,7 +718,6 @@ namespace FireWallet
{ {
textBoxBlind.Text = "0"; textBoxBlind.Text = "0";
} }
await APIPost("", true, "{\"method\": \"selectwallet\", \"params\": [\"" + explorerTX + "\"]}");
decimal bid = Convert.ToDecimal(textBoxBid.Text); decimal bid = Convert.ToDecimal(textBoxBid.Text);
decimal blind = Convert.ToDecimal(textBoxBlind.Text); decimal blind = Convert.ToDecimal(textBoxBlind.Text);
decimal lockup = bid + blind; decimal lockup = bid + blind;
@ -722,7 +755,6 @@ namespace FireWallet
} }
else if (state == "REVEAL") else if (state == "REVEAL")
{ {
await APIPost("", true, "{\"method\": \"selectwallet\", \"params\": [\"" + explorerTX + "\"]}");
decimal bid = Convert.ToDecimal(textBoxBid.Text); decimal bid = Convert.ToDecimal(textBoxBid.Text);
decimal blind = Convert.ToDecimal(textBoxBlind.Text); decimal blind = Convert.ToDecimal(textBoxBlind.Text);
decimal lockup = bid + blind; decimal lockup = bid + blind;
@ -759,7 +791,6 @@ namespace FireWallet
} }
else if (state == "AVAILABLE") else if (state == "AVAILABLE")
{ {
await APIPost("", true, "{\"method\": \"selectwallet\", \"params\": [\"" + explorerTX + "\"]}");
decimal bid = Convert.ToDecimal(textBoxBid.Text); decimal bid = Convert.ToDecimal(textBoxBid.Text);
decimal blind = Convert.ToDecimal(textBoxBlind.Text); decimal blind = Convert.ToDecimal(textBoxBlind.Text);
decimal lockup = bid + blind; decimal lockup = bid + blind;
@ -793,6 +824,46 @@ namespace FireWallet
notifyForm.Dispose(); notifyForm.Dispose();
} }
} }
else if (state == "CLOSED")
{
if (labelStatusTransferring.Text == "Yes")
{
string content = "{\"method\": \"sendfinalize\", \"params\": [\"" + domain + "\"]}";
if (height < TransferEnd)
{
content = "{\"method\": \"sendcancel\", \"params\": [\"" + domain + "\"]}";
}
string response = await APIPost("", true, content);
if (response == "Error")
{
NotifyForm notifyForm = new NotifyForm("Error sending finalize");
notifyForm.ShowDialog();
notifyForm.Dispose();
}
else
{
JObject jObject = JObject.Parse(response);
if (jObject["result"].ToString() == "")
{
JObject error = (JObject)jObject["error"];
string message = (string)error["message"];
NotifyForm notifyForm2 = new NotifyForm("Error sending finalize: \n" + message);
notifyForm2.ShowDialog();
notifyForm2.Dispose();
return;
}
JObject result = (JObject)jObject["result"];
string hash = (string)result["hash"];
NotifyForm notifyForm = new NotifyForm("Finalize sent: " + hash, "Explorer", explorerTX + hash);
notifyForm.ShowDialog();
notifyForm.Dispose();
}
}
}
} }
private void Explorer_Click(object sender, EventArgs e) private void Explorer_Click(object sender, EventArgs e)
@ -835,7 +906,19 @@ namespace FireWallet
} }
else if (state == "CLOSED") else if (state == "CLOSED")
{ {
if (labelStatusTransferring.Text == "Yes")
{
if (height >= TransferEnd)
{
mainForm.AddBatch(domain, "FINALIZE");
this.Close();
}
else
{
mainForm.AddBatch(domain, "CANCEL");
this.Close();
}
}
} }
else else
{ {
@ -852,5 +935,15 @@ namespace FireWallet
} }
} }
} }
private void buttonRenew_Click(object sender, EventArgs e)
{
mainForm.AddBatch(domain, "RENEW");
}
private void buttonTransfer_Click(object sender, EventArgs e)
{
// Transfer
}
} }
} }

View File

@ -50,6 +50,7 @@ namespace FireWallet
labelaccountusername = new Label(); labelaccountusername = new Label();
buttonaccountnew = new Button(); buttonaccountnew = new Button();
panelNav = new Panel(); panelNav = new Panel();
buttonBatch = new Button();
buttonNavDomains = new Button(); buttonNavDomains = new Button();
buttonNavReceive = new Button(); buttonNavReceive = new Button();
buttonNavSend = new Button(); buttonNavSend = new Button();
@ -84,7 +85,6 @@ namespace FireWallet
panelDomains = new Panel(); panelDomains = new Panel();
labelDomainSearch = new Label(); labelDomainSearch = new Label();
textBoxDomainSearch = new TextBox(); textBoxDomainSearch = new TextBox();
buttonBatch = new Button();
statusStripmain.SuspendLayout(); statusStripmain.SuspendLayout();
panelaccount.SuspendLayout(); panelaccount.SuspendLayout();
groupBoxaccount.SuspendLayout(); groupBoxaccount.SuspendLayout();
@ -259,6 +259,19 @@ namespace FireWallet
panelNav.Size = new Size(114, 553); panelNav.Size = new Size(114, 553);
panelNav.TabIndex = 6; panelNav.TabIndex = 6;
// //
// buttonBatch
//
buttonBatch.FlatStyle = FlatStyle.Flat;
buttonBatch.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonBatch.Location = new Point(12, 245);
buttonBatch.Name = "buttonBatch";
buttonBatch.Size = new Size(89, 30);
buttonBatch.TabIndex = 3;
buttonBatch.TabStop = false;
buttonBatch.Text = "Batch";
buttonBatch.UseVisualStyleBackColor = true;
buttonBatch.Click += buttonBatch_Click;
//
// buttonNavDomains // buttonNavDomains
// //
buttonNavDomains.FlatStyle = FlatStyle.Flat; buttonNavDomains.FlatStyle = FlatStyle.Flat;
@ -632,19 +645,6 @@ namespace FireWallet
textBoxDomainSearch.TabIndex = 0; textBoxDomainSearch.TabIndex = 0;
textBoxDomainSearch.KeyDown += textBoxDomainSearch_KeyDown; textBoxDomainSearch.KeyDown += textBoxDomainSearch_KeyDown;
// //
// buttonBatch
//
buttonBatch.FlatStyle = FlatStyle.Flat;
buttonBatch.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
buttonBatch.Location = new Point(12, 245);
buttonBatch.Name = "buttonBatch";
buttonBatch.Size = new Size(89, 30);
buttonBatch.TabIndex = 3;
buttonBatch.TabStop = false;
buttonBatch.Text = "Batch";
buttonBatch.UseVisualStyleBackColor = true;
buttonBatch.Click += buttonBatch_Click;
//
// MainForm // MainForm
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);

View File

@ -126,6 +126,7 @@ namespace FireWallet
sw.WriteLine("explorer-block: https://niami.io/block/"); sw.WriteLine("explorer-block: https://niami.io/block/");
sw.WriteLine("explorer-domain: https://niami.io/domain/"); sw.WriteLine("explorer-domain: https://niami.io/domain/");
sw.WriteLine("confirmations: 1"); sw.WriteLine("confirmations: 1");
sw.WriteLine("portfolio-tx: 20");
sw.Dispose(); sw.Dispose();
} }
@ -475,6 +476,17 @@ namespace FireWallet
toolStripStatusLabelstatus.Text = "Status: Node Connected"; toolStripStatusLabelstatus.Text = "Status: Node Connected";
} }
// Try to keep wallet unlocked
string path = "wallet/" + account + "/unlock";
string content = "{\"passphrase\": \"" + password + "\",\"timeout\": 60}";
await APIPost(path, true, content);
path = "";
content = "{\"method\": \"selectwallet\",\"params\":[ \"" + account + "\"]}";
await APIPost(path, true, content);
} }
private async Task UpdateBalance() private async Task UpdateBalance()
{ {
@ -614,6 +626,8 @@ namespace FireWallet
JArray txs = JArray.Parse(APIresponse); JArray txs = JArray.Parse(APIresponse);
int txCount = txs.Count; int txCount = txs.Count;
if (txCount > groupBoxTransactions.Height / 55) txCount = (int)Math.Floor(groupBoxTransactions.Height / 55.0); if (txCount > groupBoxTransactions.Height / 55) txCount = (int)Math.Floor(groupBoxTransactions.Height / 55.0);
if (userSettings.ContainsKey("portfolio-tx")) txCount = Convert.ToInt32(userSettings["portfolio-tx"]);
if (txCount > txs.Count) txCount = txs.Count;
Control[] tmpControls = new Control[txCount]; Control[] tmpControls = new Control[txCount];
for (int i = 0; i < txCount; i++) for (int i = 0; i < txCount; i++)
{ {
@ -625,9 +639,9 @@ namespace FireWallet
string date = tx["mdate"].ToString(); string date = tx["mdate"].ToString();
Panel tmpPanel = new Panel(); Panel tmpPanel = new Panel();
tmpPanel.Width = groupBoxTransactions.Width - 20; tmpPanel.Width = groupBoxTransactions.Width - SystemInformation.VerticalScrollBarWidth - 20;
tmpPanel.Height = 50; tmpPanel.Height = 50;
tmpPanel.Location = new Point(10, 20 + (i * 55)); tmpPanel.Location = new Point(5, (i * 55));
tmpPanel.BorderStyle = BorderStyle.FixedSingle; tmpPanel.BorderStyle = BorderStyle.FixedSingle;
tmpPanel.BackColor = ColorTranslator.FromHtml(theme["background-alt"]); tmpPanel.BackColor = ColorTranslator.FromHtml(theme["background-alt"]);
tmpPanel.ForeColor = ColorTranslator.FromHtml(theme["foreground-alt"]); tmpPanel.ForeColor = ColorTranslator.FromHtml(theme["foreground-alt"]);
@ -692,7 +706,12 @@ namespace FireWallet
} }
groupBoxTransactions.Controls.Clear(); groupBoxTransactions.Controls.Clear();
groupBoxTransactions.Controls.AddRange(tmpControls); Panel txPanel = new Panel();
txPanel.Width = groupBoxTransactions.Width - SystemInformation.VerticalScrollBarWidth;
txPanel.Controls.AddRange(tmpControls);
txPanel.AutoScroll = true;
txPanel.Dock = DockStyle.Fill;
groupBoxTransactions.Controls.Add(txPanel);
} }
@ -728,11 +747,6 @@ namespace FireWallet
private void timerNodeStatus_Tick(object sender, EventArgs e) private void timerNodeStatus_Tick(object sender, EventArgs e)
{ {
NodeStatus(); NodeStatus();
// If logged in, update info
if (panelaccount.Visible == false)
{
GetTXHistory();
}
} }
#endregion #endregion
#region Nav #region Nav
@ -1018,6 +1032,7 @@ namespace FireWallet
{ {
if (e.KeyValue == 13) if (e.KeyValue == 13)
{ {
textBoxDomainSearch.Text = textBoxDomainSearch.Text.Trim().ToLower();
e.SuppressKeyPress = true; e.SuppressKeyPress = true;
DomainForm domainForm = new DomainForm(textBoxDomainSearch.Text, userSettings["explorer-tx"], userSettings["explorer-domain"]); DomainForm domainForm = new DomainForm(textBoxDomainSearch.Text, userSettings["explorer-tx"], userSettings["explorer-domain"]);
domainForm.mainForm = this; domainForm.mainForm = this;