Notification system done
This commit is contained in:
@@ -1,16 +1,9 @@
|
|||||||
using Google.Apis.Auth.OAuth2;
|
using Google.Apis.Services;
|
||||||
using Google.Apis.Services;
|
|
||||||
using Google.Apis.YouTube.v3;
|
using Google.Apis.YouTube.v3;
|
||||||
using Google.Apis.YouTube.v3.Data;
|
using Google.Apis.YouTube.v3.Data;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Windows.ApplicationModel.Background;
|
using Windows.ApplicationModel.Background;
|
||||||
using Windows.Storage;
|
using Windows.Storage;
|
||||||
@@ -21,14 +14,7 @@ namespace FoxTube.Background
|
|||||||
public sealed class BackgroundProcessor : IBackgroundTask
|
public sealed class BackgroundProcessor : IBackgroundTask
|
||||||
{
|
{
|
||||||
private DateTime lastCheck = DateTime.Now;
|
private DateTime lastCheck = DateTime.Now;
|
||||||
|
|
||||||
private ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
|
private ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
|
||||||
|
|
||||||
private ClientSecrets Secrets => new ClientSecrets()
|
|
||||||
{
|
|
||||||
ClientId = "349735264870-2ekqlm0a4mkg3mmrfcv90s3qp3o15dq0.apps.googleusercontent.com",
|
|
||||||
ClientSecret = "BkVZOAaCU2Zclf0Zlicg6y2_"
|
|
||||||
};
|
|
||||||
private YouTubeService Service => new YouTubeService(new BaseClientService.Initializer()
|
private YouTubeService Service => new YouTubeService(new BaseClientService.Initializer()
|
||||||
{
|
{
|
||||||
ApiKey = "AIzaSyBgHrCnrlzlVmk0cJKL8RqP9Y8x6XSuk_0",
|
ApiKey = "AIzaSyBgHrCnrlzlVmk0cJKL8RqP9Y8x6XSuk_0",
|
||||||
@@ -66,12 +52,7 @@ namespace FoxTube.Background
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ToastNotificationManager.CreateToastNotifier().Show(Notification.GetInternalToast(null, "Checking videos...", DateTime.Now.ToString(), null, null));
|
|
||||||
Dictionary<string, string> subscriptions = JsonConvert.DeserializeObject<Dictionary<string, string>>(await FileIO.ReadTextAsync(await ApplicationData.Current.RoamingFolder.GetFileAsync("background.json")));
|
Dictionary<string, string> subscriptions = JsonConvert.DeserializeObject<Dictionary<string, string>>(await FileIO.ReadTextAsync(await ApplicationData.Current.RoamingFolder.GetFileAsync("background.json")));
|
||||||
Debug.WriteLine("Subscriptions list");
|
|
||||||
foreach (var i in subscriptions)
|
|
||||||
Debug.WriteLine($"{i.Key}: {i.Value}");
|
|
||||||
Debug.WriteLine("Subscriptions list end");
|
|
||||||
foreach (var s in subscriptions)
|
foreach (var s in subscriptions)
|
||||||
{
|
{
|
||||||
SearchResource.ListRequest request = Service.Search.List("snippet");
|
SearchResource.ListRequest request = Service.Search.List("snippet");
|
||||||
@@ -81,16 +62,12 @@ namespace FoxTube.Background
|
|||||||
request.MaxResults = 5;
|
request.MaxResults = 5;
|
||||||
SearchListResponse response = await request.ExecuteAsync();
|
SearchListResponse response = await request.ExecuteAsync();
|
||||||
|
|
||||||
foreach (var i in response.Items)
|
foreach (SearchResult i in response.Items)
|
||||||
ToastNotificationManager.CreateToastNotifier().Show(
|
ToastNotificationManager.CreateToastNotifier().Show(
|
||||||
Notification.GetVideoToast(i.Id.VideoId, i.Snippet.ChannelId, i.Snippet.Title, i.Snippet.ChannelTitle, i.Snippet.Thumbnails.Medium.Url, s.Value));
|
Notification.GetVideoToast(i.Id.VideoId, i.Snippet.ChannelId, i.Snippet.Title, i.Snippet.ChannelTitle, i.Snippet.Thumbnails.Medium.Url, s.Value));
|
||||||
|
|
||||||
ToastNotificationManager.CreateToastNotifier().Show(Notification.GetVideoToast(null, s.Key, DateTime.Now.ToString(), s.Key, null, s.Value));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|
||||||
ToastNotificationManager.CreateToastNotifier().Show(Notification.GetInternalToast(null, "New videos checked", DateTime.Now.ToString(), null, null));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckAnnouncements()
|
void CheckAnnouncements()
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ namespace FoxTube.Background
|
|||||||
template.LoadXml($@"<toast activationType='foreground' launch='video|{id}'>
|
template.LoadXml($@"<toast activationType='foreground' launch='video|{id}'>
|
||||||
<visual>
|
<visual>
|
||||||
<binding template='ToastGeneric'>
|
<binding template='ToastGeneric'>
|
||||||
<image placement='hero' src='{thumbnail}'/>
|
<image placement='hero' src='{thumbnail.Replace("&", "%26")}'/>
|
||||||
<image placement='appLogoOverride' hint-crop='circle' src='{avatar}'/>
|
<image placement='appLogoOverride' hint-crop='circle' src='{avatar.Replace("&", "%26") ?? "http://foxgame.hol.es/FoxTubeAssets/LogoAvatar.png"}'/>
|
||||||
<text>{title}</text>
|
<text>{title}</text>
|
||||||
<text>{channel} uploaded a new video</text>
|
<text>{channel} uploaded a new video</text>
|
||||||
</binding>
|
</binding>
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
using FoxTube.Controls;
|
|
||||||
using Windows.UI.Xaml;
|
|
||||||
|
|
||||||
namespace FoxTube.Classes
|
|
||||||
{
|
|
||||||
public class AdSizeTrigger : StateTriggerBase
|
|
||||||
{
|
|
||||||
private Advert _class;
|
|
||||||
|
|
||||||
public Advert Class
|
|
||||||
{
|
|
||||||
get { return _class; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
_class = value;
|
|
||||||
SetActive(!_class.OverrideSize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,55 +5,13 @@
|
|||||||
xmlns:ad="using:Microsoft.Advertising.WinRT.UI"
|
xmlns:ad="using:Microsoft.Advertising.WinRT.UI"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d">
|
||||||
xmlns:classes="using:FoxTube.Classes">
|
|
||||||
|
|
||||||
<Grid>
|
<Grid Name="grid" SizeChanged="Grid_SizeChanged">
|
||||||
<VisualStateManager.VisualStateGroups>
|
|
||||||
<VisualStateGroup>
|
|
||||||
<VisualState>
|
|
||||||
<VisualState.StateTriggers>
|
|
||||||
<AdaptiveTrigger MinWindowWidth="320"/>
|
|
||||||
<classes:AdSizeTrigger Class="{x:Bind Instance}"/>
|
|
||||||
</VisualState.StateTriggers>
|
|
||||||
|
|
||||||
<VisualState.Setters>
|
|
||||||
<Setter Target="ad.Width" Value="320"/>
|
|
||||||
<Setter Target="ad.Height" Value="50"/>
|
|
||||||
</VisualState.Setters>
|
|
||||||
</VisualState>
|
|
||||||
<VisualState>
|
|
||||||
<VisualState.StateTriggers>
|
|
||||||
<AdaptiveTrigger MinWindowWidth="640"/>
|
|
||||||
<classes:AdSizeTrigger Class="{x:Bind Instance}"/>
|
|
||||||
</VisualState.StateTriggers>
|
|
||||||
|
|
||||||
<VisualState.Setters>
|
|
||||||
<Setter Target="ad.Width" Value="640"/>
|
|
||||||
<Setter Target="ad.Height" Value="100"/>
|
|
||||||
</VisualState.Setters>
|
|
||||||
</VisualState>
|
|
||||||
<VisualState>
|
|
||||||
<VisualState.StateTriggers>
|
|
||||||
<AdaptiveTrigger MinWindowWidth="728"/>
|
|
||||||
<classes:AdSizeTrigger Class="{x:Bind Instance}"/>
|
|
||||||
</VisualState.StateTriggers>
|
|
||||||
|
|
||||||
<VisualState.Setters>
|
|
||||||
<Setter Target="ad.Width" Value="728"/>
|
|
||||||
<Setter Target="ad.Height" Value="90"/>
|
|
||||||
</VisualState.Setters>
|
|
||||||
</VisualState>
|
|
||||||
</VisualStateGroup>
|
|
||||||
</VisualStateManager.VisualStateGroups>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="auto"/>
|
|
||||||
<RowDefinition/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<ad:AdControl VerticalAlignment="Top"
|
<ad:AdControl VerticalAlignment="Top"
|
||||||
Name="ad" ApplicationId="{x:Bind AppId}"
|
Name="ad" ApplicationId="{x:Bind AppId}"
|
||||||
AdUnitId="{x:Bind AdUnitId}"
|
AdUnitId="{x:Bind AdUnitId}"
|
||||||
Height="{x:Bind Height}"
|
Height="50"
|
||||||
Width="{x:Bind Width}"/>
|
Width="300"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -1,20 +1,6 @@
|
|||||||
using System;
|
using System.Diagnostics;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Runtime.InteropServices.WindowsRuntime;
|
|
||||||
using Windows.Foundation;
|
|
||||||
using Windows.Foundation.Collections;
|
|
||||||
using Windows.UI.Xaml;
|
using Windows.UI.Xaml;
|
||||||
using Windows.UI.Xaml.Controls;
|
using Windows.UI.Xaml.Controls;
|
||||||
using Windows.UI.Xaml.Controls.Primitives;
|
|
||||||
using Windows.UI.Xaml.Data;
|
|
||||||
using Windows.UI.Xaml.Input;
|
|
||||||
using Windows.UI.Xaml.Media;
|
|
||||||
using Windows.UI.Xaml.Navigation;
|
|
||||||
|
|
||||||
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
|
|
||||||
|
|
||||||
namespace FoxTube.Controls
|
namespace FoxTube.Controls
|
||||||
{
|
{
|
||||||
@@ -23,10 +9,26 @@ namespace FoxTube.Controls
|
|||||||
public string AdUnitId { get; set; } = "test";
|
public string AdUnitId { get; set; } = "test";
|
||||||
public string AppId => "3f83fe91-d6be-434d-a0ae-7351c5a997f1";
|
public string AppId => "3f83fe91-d6be-434d-a0ae-7351c5a997f1";
|
||||||
public bool OverrideSize { get; set; } = false;
|
public bool OverrideSize { get; set; } = false;
|
||||||
public Advert Instance => this;
|
|
||||||
|
|
||||||
public int Height { get; set; } = 50;
|
public new double Height
|
||||||
public int Width { get; set; } = 300;
|
{
|
||||||
|
get { return ad.Height; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
ad.Height = value;
|
||||||
|
OverrideSize = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public new double Width
|
||||||
|
{
|
||||||
|
get { return ad.Width; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
ad.Width = value;
|
||||||
|
OverrideSize = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Advert()
|
public Advert()
|
||||||
{
|
{
|
||||||
@@ -37,5 +39,32 @@ namespace FoxTube.Controls
|
|||||||
Visibility = Visibility.Collapsed;
|
Visibility = Visibility.Collapsed;
|
||||||
SecretsVault.NotPurchased += () => Visibility = Visibility.Visible;
|
SecretsVault.NotPurchased += () => Visibility = Visibility.Visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (OverrideSize)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(grid.ActualWidth >= 728)
|
||||||
|
{
|
||||||
|
ad.Width = 728;
|
||||||
|
ad.Height = 90;
|
||||||
|
}
|
||||||
|
else if (grid.ActualWidth >= 640)
|
||||||
|
{
|
||||||
|
ad.Width = 640;
|
||||||
|
ad.Height = 100;
|
||||||
|
}
|
||||||
|
else if (grid.ActualWidth >= 320)
|
||||||
|
{
|
||||||
|
ad.Width = 320;
|
||||||
|
ad.Height = 50;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ad.Width = 300;
|
||||||
|
ad.Height = 50;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,7 +96,6 @@
|
|||||||
<Compile Include="App.xaml.cs">
|
<Compile Include="App.xaml.cs">
|
||||||
<DependentUpon>App.xaml</DependentUpon>
|
<DependentUpon>App.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Classes\AdSizeTrigger.cs" />
|
|
||||||
<Compile Include="Classes\Caption.cs" />
|
<Compile Include="Classes\Caption.cs" />
|
||||||
<Compile Include="Classes\DownloadItemContainer.cs" />
|
<Compile Include="Classes\DownloadItemContainer.cs" />
|
||||||
<Compile Include="Classes\InboxItem.cs" />
|
<Compile Include="Classes\InboxItem.cs" />
|
||||||
|
|||||||
@@ -125,29 +125,14 @@ namespace FoxTube
|
|||||||
{
|
{
|
||||||
var titleBar = ApplicationView.GetForCurrentView().TitleBar;
|
var titleBar = ApplicationView.GetForCurrentView().TitleBar;
|
||||||
|
|
||||||
titleBar.ButtonBackgroundColor = Colors.Transparent;
|
titleBar.BackgroundColor = Colors.Red;
|
||||||
|
titleBar.ButtonBackgroundColor = Colors.Red;
|
||||||
titleBar.ButtonHoverBackgroundColor = Colors.IndianRed;
|
titleBar.ButtonHoverBackgroundColor = Colors.IndianRed;
|
||||||
titleBar.ButtonPressedBackgroundColor = Colors.DarkRed;
|
titleBar.ButtonPressedBackgroundColor = Colors.DarkRed;
|
||||||
titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
|
titleBar.ButtonInactiveBackgroundColor = Colors.DeepPink;
|
||||||
|
titleBar.ForegroundColor = Colors.White;
|
||||||
|
|
||||||
if((int)settings.Values["themeMode"] == 2)
|
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = false;
|
||||||
{
|
|
||||||
Color uiTheme = new UISettings().GetColorValue(UIColorType.Background);
|
|
||||||
if (uiTheme == Colors.Black)
|
|
||||||
titleBar.ButtonForegroundColor = Colors.White;
|
|
||||||
else
|
|
||||||
titleBar.ButtonForegroundColor = Colors.Black;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (RequestedTheme == ElementTheme.Dark)
|
|
||||||
titleBar.ButtonForegroundColor = Colors.White;
|
|
||||||
else if (RequestedTheme == ElementTheme.Light)
|
|
||||||
titleBar.ButtonForegroundColor = Colors.Black;
|
|
||||||
}
|
|
||||||
|
|
||||||
CoreApplicationViewTitleBar coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
|
|
||||||
coreTitleBar.ExtendViewIntoTitleBar = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SecretsVault_SubscriptionsChanged(object sender, params object[] args)
|
private void SecretsVault_SubscriptionsChanged(object sender, params object[] args)
|
||||||
@@ -393,6 +378,7 @@ namespace FoxTube
|
|||||||
nav.IsBackEnabled = true;
|
nav.IsBackEnabled = true;
|
||||||
else
|
else
|
||||||
nav.IsBackEnabled = false;
|
nav.IsBackEnabled = false;
|
||||||
|
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MaximizeVideo()
|
public void MaximizeVideo()
|
||||||
@@ -404,25 +390,33 @@ namespace FoxTube
|
|||||||
videoPlaceholder.Margin = new Thickness(0);
|
videoPlaceholder.Margin = new Thickness(0);
|
||||||
|
|
||||||
nav.IsBackEnabled = true;
|
nav.IsBackEnabled = true;
|
||||||
|
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Fullscreen(bool on)
|
public void Fullscreen(bool on)
|
||||||
{
|
{
|
||||||
if (on)
|
if (on)
|
||||||
{
|
{
|
||||||
|
nav.CompactModeThresholdWidth = short.MaxValue;
|
||||||
|
nav.ExpandedModeThresholdWidth = short.MaxValue;
|
||||||
nav.OpenPaneLength = 0;
|
nav.OpenPaneLength = 0;
|
||||||
nav.CompactPaneLength = 0;
|
nav.CompactPaneLength = 0;
|
||||||
if ((videoPlaceholder.Content as VideoPage).player.MiniView)
|
if ((videoPlaceholder.Content as VideoPage).player.MiniView)
|
||||||
nav.Margin = new Thickness(0, -80, 0, 0);
|
nav.Margin = new Thickness(0, -48, 0, 0);
|
||||||
else
|
else
|
||||||
nav.Margin = new Thickness(0, -91, 0, 0);
|
nav.Margin = new Thickness(0, -60, 0, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
|
nav.CompactModeThresholdWidth = 641;
|
||||||
|
nav.ExpandedModeThresholdWidth = 1008;
|
||||||
nav.Margin = new Thickness(0);
|
nav.Margin = new Thickness(0);
|
||||||
nav.OpenPaneLength = 300;
|
nav.OpenPaneLength = 300;
|
||||||
nav.CompactPaneLength = 48;
|
nav.CompactPaneLength = 48;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = on;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CloseVideo()
|
public void CloseVideo()
|
||||||
@@ -441,6 +435,8 @@ namespace FoxTube
|
|||||||
nav.IsBackEnabled = true;
|
nav.IsBackEnabled = true;
|
||||||
else
|
else
|
||||||
nav.IsBackEnabled = false;
|
nav.IsBackEnabled = false;
|
||||||
|
|
||||||
|
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void search_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
|
private void search_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
|
||||||
|
|||||||
@@ -153,12 +153,12 @@
|
|||||||
<AppBarButton Name="openBrowser" Click="openBrowser_Click" Icon="Globe" Label="Open in browser"/>
|
<AppBarButton Name="openBrowser" Click="openBrowser_Click" Icon="Globe" Label="Open in browser"/>
|
||||||
</CommandBar>
|
</CommandBar>
|
||||||
|
|
||||||
<Grid Grid.Column="1" Name="tabsPlaceholder">
|
<StackPanel Grid.Column="1" Name="tabsPlaceholder">
|
||||||
|
<controls1:Advert/>
|
||||||
<Pivot Grid.Row="1" Name="pivot" SelectedIndex="0" IsHeaderItemsCarouselEnabled="False">
|
<Pivot Grid.Row="1" Name="pivot" SelectedIndex="0" IsHeaderItemsCarouselEnabled="False">
|
||||||
<PivotItem Header="Suggestions">
|
<PivotItem Header="Suggestions">
|
||||||
<ScrollViewer>
|
<ScrollViewer>
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<controls1:Advert/>
|
|
||||||
<StackPanel Name="relatedVideos"/>
|
<StackPanel Name="relatedVideos"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
@@ -194,7 +194,7 @@
|
|||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</PivotItem>
|
</PivotItem>
|
||||||
</Pivot>
|
</Pivot>
|
||||||
</Grid>
|
</StackPanel>
|
||||||
|
|
||||||
<local:LoadingPage Grid.ColumnSpan="2" Visibility="Collapsed"/>
|
<local:LoadingPage Grid.ColumnSpan="2" Visibility="Collapsed"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
Reference in New Issue
Block a user