private void Workbook_SheetActivate(object sh) { if (!IsLndWorkbook()) { return; } var ws = (Worksheet)sh; LApp?.Refresh(ws.Name); }
private void WsOnChange(Range target) { if (target.Row < OpenChannelsTable.StartRow || target.Row > OpenChannelsTable.EndRow || (target.Value2?.ToString() != "" && target.Value2 != null)) { return; } OpenChannelForm.ClearErrorData(); var channel = OpenChannelsTable.DataList[target.Row - OpenChannelsTable.DataStartRow]; try { LApp.LndClient.CloseChannel(channel.ChannelPoint, false); OpenChannelsTable.RemoveRow(target.Row); LApp.Refresh(SheetNames.Channels); } catch (RpcException e) { if (e.Status.Detail.Contains("peer is offline")) { try { LApp.LndClient.CloseChannel(channel.ChannelPoint, true); OpenChannelsTable.RemoveRow(target.Row); LApp.Refresh(SheetNames.Channels); } catch (RpcException e2) { OpenChannelForm.DisplayError(e2); } } else { OpenChannelForm.DisplayError(e); } } }
private void WsOnChange(Range target) { if (target.Row < PeersTable.StartRow || target.Row > PeersTable.EndRow || (target.Value2?.ToString() != "" && target.Value2 != null)) { return; } PeersForm.ClearErrorData(); try { var peer = PeersTable.DataList[target.Row - PeersTable.DataStartRow]; LApp.LndClient.DisconnectPeer(peer.PubKey); PeersTable.RemoveRow(target.Row); LApp.Refresh(SheetNames.Peers); } catch (RpcException e) { PeersForm.DisplayError(e); } }
private void SubmitButtonOnClick(object sender, EventArgs e) { ClearErrorData(); if (typeof(TRequestMessage) == typeof(ConnectPeerRequest)) { var fullAddress = (string)Ws.Cells[_fieldToRow["addr"], EndColumn].Value2; if (fullAddress == null) { return; } var addressParts = fullAddress.Split('@'); string pubkey; string host; switch (addressParts.Length) { case 0: return; case 2: pubkey = addressParts[0]; host = addressParts[1]; break; default: Utilities.DisplayError(ErrorData, "Error", "Invalid address, must be pubkey@ip:host"); return; } var permanent = Ws.Cells[_fieldToRow["perm"], EndColumn].Value2; bool perm = permanent == null || (bool)permanent; var address = new LightningAddress { Host = host, Pubkey = pubkey }; var request = new ConnectPeerRequest { Addr = address, Perm = perm }; try { _lApp.LndClient.ConnectPeer(request); _lApp.Refresh(SheetNames.Peers); ClearForm(); } catch (RpcException rpcException) { DisplayError(rpcException); } } else if (typeof(TRequestMessage) == typeof(SendCoinsRequest)) { var request = new SendCoinsRequest { Addr = Ws.Cells[_fieldToRow["addr"], EndColumn].Value2, Amount = (long)Ws.Cells[_fieldToRow["amount"], EndColumn].Value2 }; var satPerByte = Ws.Cells[_fieldToRow["sat_per_byte"], EndColumn].Value2; if (satPerByte == null) { satPerByte = 0; } if (satPerByte > 0) { request.SatPerByte = satPerByte; } var targetConf = Ws.Cells[_fieldToRow["target_conf"], EndColumn].Value2; if (targetConf == null) { targetConf = 0; } if (targetConf > 0) { request.TargetConf = targetConf; } try { _lApp.LndClient.SendCoins(request); _lApp.Refresh(SheetNames.Transactions); ClearForm(); } catch (RpcException rpcException) { DisplayError(rpcException); } } else if (typeof(TRequestMessage) == typeof(OpenChannelRequest)) { var localFundingAmount = long.Parse(GetValue("local_funding_amount")); var minConfs = int.Parse(GetValue("min_confs")); var minHtlcMsat = long.Parse(GetValue("min_htlc_msat")); var nodePubKeyString = GetValue("node_pubkey"); var isPrivate = true; if (bool.TryParse(GetValue("private"), out var result)) { isPrivate = result; } var pushSat = long.Parse(GetValue("push_sat")); var remoteCsvDelay = uint.Parse(GetValue("remote_csv_delay")); var satPerByte = long.Parse(GetValue("sat_per_byte")); var targetConf = int.Parse(GetValue("target_conf")); var request = new OpenChannelRequest { LocalFundingAmount = localFundingAmount, MinConfs = minConfs, MinHtlcMsat = minHtlcMsat, NodePubkeyString = nodePubKeyString, Private = isPrivate, PushSat = pushSat }; if (remoteCsvDelay > 0) { request.RemoteCsvDelay = remoteCsvDelay; } if (satPerByte > 0) { request.SatPerByte = satPerByte; } if (targetConf > 0) { request.TargetConf = targetConf; } try { _lApp.LndClient.OpenChannel(request); _lApp.Refresh(SheetNames.Channels); ClearForm(); } catch (RpcException rpcException) { DisplayError(rpcException); } } else { var request = new TRequestMessage(); var rowNumber = _dataStartRow; foreach (var field in Fields) { Range dataCell = Ws.Cells[rowNumber, EndColumn]; var value = dataCell.Value2; if (!string.IsNullOrWhiteSpace(value?.ToString())) { field.Accessor.SetValue(request, dataCell.Value2); } } _query(request); } }