private ColoredLabel CreateLabel(Label uncoloredLabel, string color, HttpRequest request) { if (uncoloredLabel == null) { throw new ArgumentNullException(nameof(uncoloredLabel)); } color = color ?? DefaultColor; ColoredLabel coloredLabel = new ColoredLabel() { Text = uncoloredLabel.Text, Color = color }; if (uncoloredLabel is ReferenceLabel refLabel) { var refInLabel = string.IsNullOrEmpty(refLabel.Reference) ? string.Empty : $"({refLabel.Reference})"; switch (uncoloredLabel.Type) { case "invoice": coloredLabel.Tooltip = $"Received through an invoice {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.InvoiceLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "payment-request": coloredLabel.Tooltip = $"Received through a payment request {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.PaymentRequestLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "app": coloredLabel.Tooltip = $"Received through an app {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.AppLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "pj-exposed": coloredLabel.Tooltip = $"This utxo was exposed through a payjoin proposal for an invoice {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.InvoiceLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; } } else if (uncoloredLabel is PayoutLabel payoutLabel) { coloredLabel.Tooltip = $"Paid a payout of a pull payment ({payoutLabel.PullPaymentId})"; coloredLabel.Link = string.IsNullOrEmpty(payoutLabel.PullPaymentId) || string.IsNullOrEmpty(payoutLabel.WalletId) ? null : _linkGenerator.PayoutLink(payoutLabel.WalletId, payoutLabel.PullPaymentId, request.Scheme, request.Host, request.PathBase); } return(coloredLabel); }
private ColoredLabel CreateLabel(LabelData uncoloredLabel, string?color, HttpRequest request) { ArgumentNullException.ThrowIfNull(uncoloredLabel); color ??= DefaultColor; ColoredLabel coloredLabel = new ColoredLabel { Text = uncoloredLabel.Text, Color = color, TextColor = TextColor(color) }; if (uncoloredLabel is ReferenceLabel refLabel) { var refInLabel = string.IsNullOrEmpty(refLabel.Reference) ? string.Empty : $"({refLabel.Reference})"; switch (uncoloredLabel.Type) { case "invoice": coloredLabel.Tooltip = $"Received through an invoice {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.InvoiceLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "payment-request": coloredLabel.Tooltip = $"Received through a payment request {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.PaymentRequestLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "app": coloredLabel.Tooltip = $"Received through an app {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.AppLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "pj-exposed": coloredLabel.Tooltip = $"This UTXO was exposed through a PayJoin proposal for an invoice {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.InvoiceLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; } } else if (uncoloredLabel is PayoutLabel payoutLabel) { coloredLabel.Tooltip = $"Paid a payout{(payoutLabel.PullPaymentId is null ? string.Empty : $" of a pull payment ({payoutLabel.PullPaymentId})")}"; coloredLabel.Link = string.IsNullOrEmpty(payoutLabel.WalletId) ? null : _linkGenerator.PayoutLink(payoutLabel.WalletId, payoutLabel.PullPaymentId, PayoutState.Completed, request.Scheme, request.Host, request.PathBase); }
public override bool Equals(object obj) { ColoredLabel item = obj as ColoredLabel; if (item == null) { return(false); } return(Text.Equals(item.Text, StringComparison.OrdinalIgnoreCase)); }
private ColoredLabel CreateLabel(LabelData uncoloredLabel, string?color, HttpRequest request) { ArgumentNullException.ThrowIfNull(uncoloredLabel); color ??= DefaultColor; ColoredLabel coloredLabel = new ColoredLabel { Text = uncoloredLabel.Text, Color = color, TextColor = TextColor(color) }; string PayoutLabelText(KeyValuePair <string, List <string> > pair) { if (pair.Value.Count == 1) { return($"Paid a payout of a pull payment ({pair.Key})"); } else { return($"Paid payouts of a pull payment ({pair.Key})"); } } if (uncoloredLabel is ReferenceLabel refLabel) { var refInLabel = string.IsNullOrEmpty(refLabel.Reference) ? string.Empty : $"({refLabel.Reference})"; switch (uncoloredLabel.Type) { case "invoice": coloredLabel.Tooltip = $"Received through an invoice {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.InvoiceLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "payment-request": coloredLabel.Tooltip = $"Received through a payment request {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.PaymentRequestLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "app": coloredLabel.Tooltip = $"Received through an app {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.AppLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; case "pj-exposed": coloredLabel.Tooltip = $"This UTXO was exposed through a PayJoin proposal for an invoice {refInLabel}"; coloredLabel.Link = string.IsNullOrEmpty(refLabel.Reference) ? null : _linkGenerator.InvoiceLink(refLabel.Reference, request.Scheme, request.Host, request.PathBase); break; } } else if (uncoloredLabel is PayoutLabel payoutLabel) { coloredLabel.Tooltip = payoutLabel.PullPaymentPayouts.Count > 1 ? $"<ul>{string.Join(string.Empty, payoutLabel.PullPaymentPayouts.Select(pair => $"<li>{PayoutLabelText(pair)}</li>"))}</ul>" : payoutLabel.PullPaymentPayouts.Select(PayoutLabelText).ToString(); coloredLabel.Link = string.IsNullOrEmpty(payoutLabel.WalletId) ? null : _linkGenerator.PayoutLink(payoutLabel.WalletId, null, PayoutState.Completed, request.Scheme, request.Host, request.PathBase); } return(coloredLabel); }