diff --git a/FoxTube.Core/FoxTube.Core.csproj b/FoxTube.Core/FoxTube.Core.csproj index 90ee4b8..8cade6a 100644 --- a/FoxTube.Core/FoxTube.Core.csproj +++ b/FoxTube.Core/FoxTube.Core.csproj @@ -189,6 +189,11 @@ Visual C++ 2015 Runtime for Universal Windows Platform Apps + + + ..\..\..\..\NuGet\microsoft.advertising.xaml\10.1811.22001\SDK\Windows Kits\10\ExtensionSDKs\Microsoft.Advertising.Xaml\10.0\References\CommonConfiguration\neutral\Microsoft.Advertising.winmd + + 14.0 diff --git a/FoxTube.Core/Helpers/Utils.cs b/FoxTube.Core/Helpers/Utils.cs index 29d87cd..1f8cfdf 100644 --- a/FoxTube.Core/Helpers/Utils.cs +++ b/FoxTube.Core/Helpers/Utils.cs @@ -1,7 +1,6 @@ -using System; -using System.Net.Http; +using Microsoft.Advertising.WinRT.UI; +using System; using Windows.ApplicationModel.Core; -using Windows.UI.Notifications; namespace FoxTube.Core.Helpers { @@ -32,5 +31,7 @@ namespace FoxTube.Core.Helpers Settings.ResetSettings(); RestartApp(); } + + public static NativeAdsManagerV2 AdManager => new NativeAdsManagerV2("9ncqqxjtdlfh", "1100044398"); } } diff --git a/FoxTube/Controls/Cards/AdvertCard.xaml b/FoxTube/Controls/Cards/AdvertCard.xaml index 9567cf9..962cdbe 100644 --- a/FoxTube/Controls/Cards/AdvertCard.xaml +++ b/FoxTube/Controls/Cards/AdvertCard.xaml @@ -11,7 +11,12 @@ d:DesignWidth="400" HorizontalAlignment="Stretch" Margin="3" - SizeChanged="UserControl_SizeChanged"> + SizeChanged="UserControl_SizeChanged" + Visibility="Collapsed" + Opacity="0"> + + + diff --git a/FoxTube/Controls/Cards/AdvertCard.xaml.cs b/FoxTube/Controls/Cards/AdvertCard.xaml.cs index c861c4d..ba58a57 100644 --- a/FoxTube/Controls/Cards/AdvertCard.xaml.cs +++ b/FoxTube/Controls/Cards/AdvertCard.xaml.cs @@ -1,14 +1,51 @@ -using Windows.UI.Xaml; +using FoxTube.Core.Helpers; +using Microsoft.Advertising.WinRT.UI; +using Microsoft.Toolkit.Uwp.UI.Controls; +using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace FoxTube.Controls.Cards { + /// + /// Advert which is looks similar to video cards + /// public sealed partial class AdvertCard : UserControl { - public AdvertCard() => + NativeAdsManagerV2 manager = Utils.AdManager; + NativeAdV2 advert; + public AdvertCard() + { InitializeComponent(); + manager.AdReady += AdReady; + manager.ErrorOccurred += ErrorOccurred; + manager.RequestAd(); + } + private void ErrorOccurred(object sender, NativeAdErrorEventArgs e) + { + (Parent as StaggeredPanel)?.Children.Remove(this); + Metrics.AddEvent("Error has occured while loading ad", + ("Code", e.ErrorCode.ToString()), + ("Message", e.ErrorMessage), + ("Request ID", e.RequestId)); + } + + private void AdReady(object sender, NativeAdReadyEventArgs e) + { + advert = e.NativeAd; + + if (string.IsNullOrWhiteSpace(advert.CallToActionText)) + cta.Visibility = Visibility.Collapsed; + + description.Text += $"{advert.Price} {advert.Rating}"; + + e.NativeAd.RegisterAdContainer(grid); + + Metrics.AddEvent("Advert loaded", + ("Region", Settings.Region), + ("Version", Metrics.CurrentVersion)); + } void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) => Height = .75 * ActualWidth; } -} +} \ No newline at end of file diff --git a/FoxTube/Controls/ItemsGrid.xaml.cs b/FoxTube/Controls/ItemsGrid.xaml.cs index a62d8e5..bf20e13 100644 --- a/FoxTube/Controls/ItemsGrid.xaml.cs +++ b/FoxTube/Controls/ItemsGrid.xaml.cs @@ -1,4 +1,5 @@ using FoxTube.Controls.Cards; +using FoxTube.Core.Helpers; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; @@ -16,8 +17,8 @@ namespace FoxTube.Controls { empty.Opacity = 0; - //if (!StoreInterop.AdsDisabled && ItemsCount % 5 == 0 && ItemsCount > 0) - // Items.Add(new AdvertCard()); + if (!StoreInterop.AdsDisabled && ItemsCount % 5 == 0 && ItemsCount > 0) + Items.Add(new AdvertCard()); Items.Add(item); }