Example #1
0
        public void AddHeroImageTest_WithHeroImageUriOnly_ReturnSelfWithHeroImageAdded()
        {
            // Arrange
            Uri testHeroImageUriSrc = new Uri("C:/justatesturi.jpg");

            // Act
            ToastContentBuilder builder          = new ToastContentBuilder();
            ToastContentBuilder anotherReference = builder.AddHeroImage(testHeroImageUriSrc);

            // Assert
            Assert.AreSame(builder, anotherReference);
            Assert.AreEqual(testHeroImageUriSrc.OriginalString, builder.Content.Visual.BindingGeneric.HeroImage.Source);
        }
Example #2
0
        public void AddHeroImageTest_WithHeroImageUriAndFullOptions_ReturnSelfWithHeroImageAndOptionsAdded()
        {
            // Arrange
            Uri    testHeroImageUriSrc        = new Uri("C:/justatesturi.jpg");
            string testHeroImageAltText       = "Test Hero Image Text";
            bool   testHeroImageAddImageQuery = true;

            // Act
            ToastContentBuilder builder          = new ToastContentBuilder();
            ToastContentBuilder anotherReference = builder.AddHeroImage(testHeroImageUriSrc, testHeroImageAltText, testHeroImageAddImageQuery);

            // Assert
            Assert.AreSame(builder, anotherReference);
            Assert.AreEqual(testHeroImageUriSrc.OriginalString, builder.Content.Visual.BindingGeneric.HeroImage.Source);
            Assert.AreEqual(testHeroImageAltText, builder.Content.Visual.BindingGeneric.HeroImage.AlternateText);
            Assert.AreEqual(testHeroImageAddImageQuery, builder.Content.Visual.BindingGeneric.HeroImage.AddImageQuery);
        }
Example #3
0
        public static ToastNotification CreateToastNotificationForMessage(DiscordMessage message)
        {
            var title       = GetMessageTitle(message);
            var text        = GetMessageContent(message);
            var channelName = GetChannelHeaderName(message.Channel);

            var animated    = message.Author.AvatarHash?.StartsWith("a_") ?? false;
            var avatarUrl   = message.Author.GetAvatarUrl(animated ? ImageFormat.Gif : ImageFormat.Png, 128);
            var replyString = message.Channel is DiscordDmChannel ? $"Reply to @{message.Author.Username}..." : $"Message #{message.Channel.Name}...";

            var builder = new ToastContentBuilder()
                          .AddHeader(message.ChannelId.ToString(), channelName, $"-channelId={message.ChannelId}")
                          .AddAppLogoOverride(new Uri(avatarUrl), ToastGenericAppLogoCrop.Circle)
                          .AddText(title, AdaptiveTextStyle.Title)
                          .AddText(text, AdaptiveTextStyle.Caption)
                          .AddInputTextBox("tbReply", replyString)
                          .AddButton("tbReply", "Reply", ToastActivationType.Background, $"-channelId={message.ChannelId}")
                          .AddToastActivationInfo($"-channelId={message.ChannelId} -messageId={message.Id}", ToastActivationType.Foreground)
                          .AddCustomTimeStamp(message.Timestamp.DateTime);

            if (GetToastThumbnail(message, out var width, out var height, out var proxyUrl))
            {
                Drawing.ScaleProportions(ref width, ref height, 640, 360);
                builder.AddHeroImage(new Uri(proxyUrl + $"?format=jpeg&width={(int)width}&height={(int)height}"));
            }

            var toastContent = builder.GetToastContent();
            var doc          = new XmlDocument();

            doc.LoadXml(toastContent.GetContent());
            return(new ToastNotification(doc)
            {
                NotificationMirroring = NotificationMirroring.Allowed,
                Group = message.Channel.Id.ToString(),
                RemoteId = message.Id.ToString(),
            });
        }