Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
Beispiel #3
0
        public override bool Equals(object obj)
        {
            ColoredLabel item = obj as ColoredLabel;

            if (item == null)
            {
                return(false);
            }
            return(Text.Equals(item.Text, StringComparison.OrdinalIgnoreCase));
        }
Beispiel #4
0
        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);
        }