From 893a86517b12ee4a0de473d7a64dc01652ddeccc Mon Sep 17 00:00:00 2001 From: Michael Gordeev Date: Sun, 10 Nov 2019 20:05:15 +0300 Subject: [PATCH] - Fresh start - Added new core project - Done main layout design - Done video, channel, playlist and advert cards --- FoxTube.Background/BackgroundProcessor.cs | 2 +- .../Downloads.cs => FoxTube.Core/Class1.cs | 8 +- FoxTube.Core/Controllers/StoreInterop.cs | 24 ++ FoxTube.Core/FoxTube.Core.csproj | 144 ++++++++ FoxTube.Core/Properties/AssemblyInfo.cs | 29 ++ FoxTube.sln | 22 ++ FoxTube/App.xaml.cs | 54 +-- FoxTube/Assets/AnnouncementThumb.png | Bin 26655 -> 0 bytes FoxTube/Assets/ChannelCoverTemplate.png | Bin 31327 -> 0 bytes FoxTube/Assets/Data/Package.zip | Bin 34402 -> 0 bytes FoxTube/Assets/Data/Patchnotes.xml | 331 ------------------ FoxTube/Assets/DefaultChannelBanner.png | Bin 0 -> 8004 bytes FoxTube/Assets/DefaultVideoThumbnail.png | Bin 0 -> 11213 bytes FoxTube/Assets/Icons/Contact.png | Bin 0 -> 38678 bytes FoxTube/Assets/Icons/Profile.png | Bin 22217 -> 0 bytes FoxTube/Assets/Icons/Send.png | Bin 11584 -> 0 bytes FoxTube/Assets/LogoAvatar.png | Bin 14489 -> 0 bytes FoxTube/Assets/NewsAvatar.png | Bin 17739 -> 0 bytes FoxTube/Assets/WhatsNewThumb.png | Bin 28302 -> 0 bytes FoxTube/Assets/videoPlaceholder.png | Bin 4099 -> 0 bytes FoxTube/Assets/videoThumbSample.png | Bin 8755 -> 0 bytes FoxTube/Classes/Authenticator.cs | 226 ------------ FoxTube/Classes/Extensions.cs | 39 --- FoxTube/Classes/Methods.cs | 89 ----- FoxTube/Classes/Navigation.cs | 64 ---- FoxTube/Classes/Processes.cs | 248 ------------- FoxTube/Classes/SearchParameters.cs | 16 - FoxTube/Classes/Service.cs | 48 --- FoxTube/Classes/Settings.cs | 277 --------------- FoxTube/Classes/User.cs | 328 ----------------- FoxTube/Classes/UserManagement.cs | 173 --------- FoxTube/Classes/ViewModel.cs | 19 - FoxTube/Controls/AccountManager.xaml | 118 +++---- FoxTube/Controls/AccountManager.xaml.cs | 76 +--- FoxTube/Controls/Cards/AdvertCard.xaml | 59 ++++ FoxTube/Controls/Cards/AdvertCard.xaml.cs | 14 + FoxTube/Controls/Cards/ChannelCard.xaml | 89 +++++ FoxTube/Controls/Cards/ChannelCard.xaml.cs | 14 + FoxTube/Controls/Cards/PlaylistCard.xaml | 69 ++++ FoxTube/Controls/Cards/PlaylistCard.xaml.cs | 14 + FoxTube/Controls/Cards/VideoCard.xaml | 96 +++++ FoxTube/Controls/Cards/VideoCard.xaml.cs | 14 + FoxTube/Controls/ContentFrame.xaml | 220 ------------ FoxTube/Controls/ContentFrame.xaml.cs | 130 ------- FoxTube/Controls/ItemGrid.xaml | 18 + FoxTube/Controls/ItemGrid.xaml.cs | 27 ++ FoxTube/Controls/MainFrame.xaml | 14 - FoxTube/Controls/MainFrame.xaml.cs | 157 --------- FoxTube/FoxTube.csproj | 137 +++----- FoxTube/Helpers/Utils.cs | 16 + FoxTube/MainPage.xaml | 100 ++++++ FoxTube/MainPage.xaml.cs | 99 ++++++ FoxTube/Pages/Home.xaml | 21 -- FoxTube/Pages/MainPage.xaml | 275 --------------- FoxTube/Pages/MainPage.xaml.cs | 265 -------------- FoxTube/Strings/en-US.old/About.resw | 171 --------- FoxTube/Strings/en-US.old/Cards.resw | 201 ----------- FoxTube/Strings/en-US.old/Channel.resw | 162 --------- FoxTube/Strings/en-US.old/Chat.resw | 141 -------- FoxTube/Strings/en-US.old/CommentsPage.resw | 186 ---------- FoxTube/Strings/en-US.old/Downloads.resw | 183 ---------- FoxTube/Strings/en-US.old/General.resw | 228 ------------ FoxTube/Strings/en-US.old/Home.resw | 132 ------- FoxTube/Strings/en-US.old/Inbox.resw | 144 -------- FoxTube/Strings/en-US.old/LoadingPage.resw | 153 -------- FoxTube/Strings/en-US.old/Main.resw | 243 ------------- FoxTube/Strings/en-US.old/Methods.resw | 162 --------- FoxTube/Strings/en-US.old/Playlist.resw | 168 --------- FoxTube/Strings/en-US.old/Report.resw | 150 -------- FoxTube/Strings/en-US.old/Search.resw | 231 ------------ FoxTube/Strings/en-US.old/Settings.resw | 132 ------- FoxTube/Strings/en-US.old/Translate.resw | 220 ------------ FoxTube/Strings/en-US.old/VideoPage.resw | 315 ----------------- FoxTube/Strings/en-US/Dialogs.resw | 135 ------- FoxTube/Strings/en-US/Generic.resw | 129 ------- FoxTube/Strings/en-US/Inbox.resw | 126 ------- FoxTube/Strings/en-US/Loading.resw | 150 -------- FoxTube/Strings/en-US/Toasts.resw | 126 ------- FoxTube/Strings/ru-RU/About.resw | 171 --------- FoxTube/Strings/ru-RU/Cards.resw | 201 ----------- FoxTube/Strings/ru-RU/Channel.resw | 162 --------- FoxTube/Strings/ru-RU/Chat.resw | 141 -------- FoxTube/Strings/ru-RU/CommentsPage.resw | 186 ---------- FoxTube/Strings/ru-RU/Downloads.resw | 183 ---------- FoxTube/Strings/ru-RU/General.resw | 228 ------------ FoxTube/Strings/ru-RU/Home.resw | 132 ------- FoxTube/Strings/ru-RU/Inbox.resw | 144 -------- FoxTube/Strings/ru-RU/LoadingPage.resw | 153 -------- FoxTube/Strings/ru-RU/Main.resw | 240 ------------- FoxTube/Strings/ru-RU/Methods.resw | 162 --------- FoxTube/Strings/ru-RU/Playlist.resw | 168 --------- FoxTube/Strings/ru-RU/Report.resw | 150 -------- FoxTube/Strings/ru-RU/Search.resw | 231 ------------ FoxTube/Strings/ru-RU/Settings.resw | 132 ------- FoxTube/Strings/ru-RU/Translate.resw | 220 ------------ FoxTube/Strings/ru-RU/VideoPage.resw | 315 ----------------- FoxTube/Themes/Resources.xaml | 49 +-- FoxTube/Views/Home.xaml | 41 +++ FoxTube/{Pages => Views}/Home.xaml.cs | 4 +- 99 files changed, 1002 insertions(+), 10582 deletions(-) rename FoxTube/Classes/Downloads.cs => FoxTube.Core/Class1.cs (51%) create mode 100644 FoxTube.Core/Controllers/StoreInterop.cs create mode 100644 FoxTube.Core/FoxTube.Core.csproj create mode 100644 FoxTube.Core/Properties/AssemblyInfo.cs delete mode 100644 FoxTube/Assets/AnnouncementThumb.png delete mode 100644 FoxTube/Assets/ChannelCoverTemplate.png delete mode 100644 FoxTube/Assets/Data/Package.zip delete mode 100644 FoxTube/Assets/Data/Patchnotes.xml create mode 100644 FoxTube/Assets/DefaultChannelBanner.png create mode 100644 FoxTube/Assets/DefaultVideoThumbnail.png create mode 100644 FoxTube/Assets/Icons/Contact.png delete mode 100644 FoxTube/Assets/Icons/Profile.png delete mode 100644 FoxTube/Assets/Icons/Send.png delete mode 100644 FoxTube/Assets/LogoAvatar.png delete mode 100644 FoxTube/Assets/NewsAvatar.png delete mode 100644 FoxTube/Assets/WhatsNewThumb.png delete mode 100644 FoxTube/Assets/videoPlaceholder.png delete mode 100644 FoxTube/Assets/videoThumbSample.png delete mode 100644 FoxTube/Classes/Authenticator.cs delete mode 100644 FoxTube/Classes/Extensions.cs delete mode 100644 FoxTube/Classes/Methods.cs delete mode 100644 FoxTube/Classes/Navigation.cs delete mode 100644 FoxTube/Classes/Processes.cs delete mode 100644 FoxTube/Classes/SearchParameters.cs delete mode 100644 FoxTube/Classes/Service.cs delete mode 100644 FoxTube/Classes/Settings.cs delete mode 100644 FoxTube/Classes/User.cs delete mode 100644 FoxTube/Classes/UserManagement.cs delete mode 100644 FoxTube/Classes/ViewModel.cs create mode 100644 FoxTube/Controls/Cards/AdvertCard.xaml create mode 100644 FoxTube/Controls/Cards/AdvertCard.xaml.cs create mode 100644 FoxTube/Controls/Cards/ChannelCard.xaml create mode 100644 FoxTube/Controls/Cards/ChannelCard.xaml.cs create mode 100644 FoxTube/Controls/Cards/PlaylistCard.xaml create mode 100644 FoxTube/Controls/Cards/PlaylistCard.xaml.cs create mode 100644 FoxTube/Controls/Cards/VideoCard.xaml create mode 100644 FoxTube/Controls/Cards/VideoCard.xaml.cs delete mode 100644 FoxTube/Controls/ContentFrame.xaml delete mode 100644 FoxTube/Controls/ContentFrame.xaml.cs create mode 100644 FoxTube/Controls/ItemGrid.xaml create mode 100644 FoxTube/Controls/ItemGrid.xaml.cs delete mode 100644 FoxTube/Controls/MainFrame.xaml delete mode 100644 FoxTube/Controls/MainFrame.xaml.cs create mode 100644 FoxTube/Helpers/Utils.cs create mode 100644 FoxTube/MainPage.xaml create mode 100644 FoxTube/MainPage.xaml.cs delete mode 100644 FoxTube/Pages/Home.xaml delete mode 100644 FoxTube/Pages/MainPage.xaml delete mode 100644 FoxTube/Pages/MainPage.xaml.cs delete mode 100644 FoxTube/Strings/en-US.old/About.resw delete mode 100644 FoxTube/Strings/en-US.old/Cards.resw delete mode 100644 FoxTube/Strings/en-US.old/Channel.resw delete mode 100644 FoxTube/Strings/en-US.old/Chat.resw delete mode 100644 FoxTube/Strings/en-US.old/CommentsPage.resw delete mode 100644 FoxTube/Strings/en-US.old/Downloads.resw delete mode 100644 FoxTube/Strings/en-US.old/General.resw delete mode 100644 FoxTube/Strings/en-US.old/Home.resw delete mode 100644 FoxTube/Strings/en-US.old/Inbox.resw delete mode 100644 FoxTube/Strings/en-US.old/LoadingPage.resw delete mode 100644 FoxTube/Strings/en-US.old/Main.resw delete mode 100644 FoxTube/Strings/en-US.old/Methods.resw delete mode 100644 FoxTube/Strings/en-US.old/Playlist.resw delete mode 100644 FoxTube/Strings/en-US.old/Report.resw delete mode 100644 FoxTube/Strings/en-US.old/Search.resw delete mode 100644 FoxTube/Strings/en-US.old/Settings.resw delete mode 100644 FoxTube/Strings/en-US.old/Translate.resw delete mode 100644 FoxTube/Strings/en-US.old/VideoPage.resw delete mode 100644 FoxTube/Strings/en-US/Dialogs.resw delete mode 100644 FoxTube/Strings/en-US/Generic.resw delete mode 100644 FoxTube/Strings/en-US/Inbox.resw delete mode 100644 FoxTube/Strings/en-US/Loading.resw delete mode 100644 FoxTube/Strings/en-US/Toasts.resw delete mode 100644 FoxTube/Strings/ru-RU/About.resw delete mode 100644 FoxTube/Strings/ru-RU/Cards.resw delete mode 100644 FoxTube/Strings/ru-RU/Channel.resw delete mode 100644 FoxTube/Strings/ru-RU/Chat.resw delete mode 100644 FoxTube/Strings/ru-RU/CommentsPage.resw delete mode 100644 FoxTube/Strings/ru-RU/Downloads.resw delete mode 100644 FoxTube/Strings/ru-RU/General.resw delete mode 100644 FoxTube/Strings/ru-RU/Home.resw delete mode 100644 FoxTube/Strings/ru-RU/Inbox.resw delete mode 100644 FoxTube/Strings/ru-RU/LoadingPage.resw delete mode 100644 FoxTube/Strings/ru-RU/Main.resw delete mode 100644 FoxTube/Strings/ru-RU/Methods.resw delete mode 100644 FoxTube/Strings/ru-RU/Playlist.resw delete mode 100644 FoxTube/Strings/ru-RU/Report.resw delete mode 100644 FoxTube/Strings/ru-RU/Search.resw delete mode 100644 FoxTube/Strings/ru-RU/Settings.resw delete mode 100644 FoxTube/Strings/ru-RU/Translate.resw delete mode 100644 FoxTube/Strings/ru-RU/VideoPage.resw create mode 100644 FoxTube/Views/Home.xaml rename FoxTube/{Pages => Views}/Home.xaml.cs (90%) diff --git a/FoxTube.Background/BackgroundProcessor.cs b/FoxTube.Background/BackgroundProcessor.cs index 7bfe196..089b44d 100644 --- a/FoxTube.Background/BackgroundProcessor.cs +++ b/FoxTube.Background/BackgroundProcessor.cs @@ -4,7 +4,7 @@ namespace FoxTube.Background { public sealed class BackgroundProcessor : IBackgroundTask { - public async void Run(IBackgroundTaskInstance taskInstance) + public void Run(IBackgroundTaskInstance taskInstance) { } diff --git a/FoxTube/Classes/Downloads.cs b/FoxTube.Core/Class1.cs similarity index 51% rename from FoxTube/Classes/Downloads.cs rename to FoxTube.Core/Class1.cs index 8b64ae2..ada58be 100644 --- a/FoxTube/Classes/Downloads.cs +++ b/FoxTube.Core/Class1.cs @@ -4,13 +4,9 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FoxTube.Classes +namespace FoxTube.Core { - public static class Downloads + public sealed class Class1 { - public static void Cancel(string id) - { - - } } } diff --git a/FoxTube.Core/Controllers/StoreInterop.cs b/FoxTube.Core/Controllers/StoreInterop.cs new file mode 100644 index 0000000..5997617 --- /dev/null +++ b/FoxTube.Core/Controllers/StoreInterop.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FoxTube.Core.Controllers +{ + public static class StoreInterop + { + public static bool AdsDisabled => false; + public static string GetProPrice() + { + return "$4.99"; + } + + public static void PurchaseApp() + { + if (!AdsDisabled) + // TODO: Add purchase validation + return; + } + } +} diff --git a/FoxTube.Core/FoxTube.Core.csproj b/FoxTube.Core/FoxTube.Core.csproj new file mode 100644 index 0000000..0a7fd8e --- /dev/null +++ b/FoxTube.Core/FoxTube.Core.csproj @@ -0,0 +1,144 @@ + + + + + Debug + AnyCPU + {797951D8-BF28-4659-BDF4-C17A583E64CD} + winmdobj + Properties + FoxTube.Core + FoxTube.Core + en-US + UAP + 10.0.18362.0 + 10.0.17134.0 + 14 + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + false + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + prompt + 4 + + + x86 + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + false + prompt + + + x86 + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + false + prompt + + + ARM + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + false + prompt + + + ARM + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + false + prompt + + + ARM64 + true + bin\ARM64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + false + prompt + + + ARM64 + bin\ARM64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + false + prompt + + + x64 + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + false + prompt + + + x64 + bin\x64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + false + prompt + + + PackageReference + + + + + + + + + 6.2.9 + + + + 14.0 + + + + \ No newline at end of file diff --git a/FoxTube.Core/Properties/AssemblyInfo.cs b/FoxTube.Core/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3a284da --- /dev/null +++ b/FoxTube.Core/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("FoxTube.Core")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("FoxTube.Core")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/FoxTube.sln b/FoxTube.sln index e8ba8c1..46772a3 100644 --- a/FoxTube.sln +++ b/FoxTube.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FoxTube.Background", "FoxTu EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FoxTube.Tests", "FoxTube.Tests\FoxTube.Tests.csproj", "{3D864717-2D87-4E54-BFC0-755FC2FCA2A7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FoxTube.Core", "FoxTube.Core\FoxTube.Core.csproj", "{797951D8-BF28-4659-BDF4-C17A583E64CD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -91,6 +93,26 @@ Global {3D864717-2D87-4E54-BFC0-755FC2FCA2A7}.Release|x86.ActiveCfg = Release|x86 {3D864717-2D87-4E54-BFC0-755FC2FCA2A7}.Release|x86.Build.0 = Release|x86 {3D864717-2D87-4E54-BFC0-755FC2FCA2A7}.Release|x86.Deploy.0 = Release|x86 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|ARM.ActiveCfg = Debug|ARM + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|ARM.Build.0 = Debug|ARM + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|ARM64.Build.0 = Debug|ARM64 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|x64.ActiveCfg = Debug|x64 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|x64.Build.0 = Debug|x64 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|x86.ActiveCfg = Debug|x86 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Debug|x86.Build.0 = Debug|x86 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|Any CPU.Build.0 = Release|Any CPU + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|ARM.ActiveCfg = Release|ARM + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|ARM.Build.0 = Release|ARM + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|ARM64.ActiveCfg = Release|ARM64 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|ARM64.Build.0 = Release|ARM64 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|x64.ActiveCfg = Release|x64 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|x64.Build.0 = Release|x64 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|x86.ActiveCfg = Release|x86 + {797951D8-BF28-4659-BDF4-C17A583E64CD}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/FoxTube/App.xaml.cs b/FoxTube/App.xaml.cs index ab6a176..34722f4 100644 --- a/FoxTube/App.xaml.cs +++ b/FoxTube/App.xaml.cs @@ -1,12 +1,5 @@ -using FoxTube.Classes; -using FoxTube.Controls; -using FoxTube.Pages; -using Microsoft.AppCenter.Analytics; -using System.Collections.Generic; -using Windows.ApplicationModel.Activation; -using Windows.Globalization; +using Windows.ApplicationModel.Activation; using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; namespace FoxTube { @@ -15,46 +8,18 @@ namespace FoxTube public App() => InitializeComponent(); - /*void Initialize() - { - Settings.LoadData(); - - switch (Settings.Theme) - { - case 0: - RequestedTheme = ApplicationTheme.Light; - break; - case 1: - RequestedTheme = ApplicationTheme.Dark; - break; - } - ApplicationLanguages.PrimaryLanguageOverride = Settings.Language; - - Processes.InitializeApp(); - - Suspending += (s, e) => Processes.SuspendApp(); - UnhandledException += (s, e) => Analytics.TrackEvent("The app crashed", new Dictionary() - { - { "Exception", e.Exception.GetType().ToString() }, - { "Details", e.Message }, - { "StackTrace", e.Exception.StackTrace } - }); - }*/ - protected override void OnLaunched(LaunchActivatedEventArgs e) { if (!e.PrelaunchActivated && Window.Current.Content == null) - Window.Current.Content = new MainPage(e.SplashScreen, e.Arguments); + Window.Current.Content = new MainPage(); Window.Current.Activate(); } - protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args) + protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args) { var deferral = args.TaskInstance.GetDeferral(); base.OnBackgroundActivated(args); - await Methods.ProcessBackgroundToast((args.TaskInstance.TriggerDetails as ToastNotificationActivatedEventArgs).Argument); - deferral.Complete(); } @@ -63,19 +28,8 @@ namespace FoxTube base.OnActivated(e); if (Window.Current.Content == null) - Window.Current.Content = new MainPage(e.SplashScreen, e); + Window.Current.Content = new MainPage(); Window.Current.Activate(); - - if (e.Kind == ActivationKind.Protocol) - Authenticator.SetResponse((e as ProtocolActivatedEventArgs).Uri); - - /*if(e.Kind == ActivationKind.ToastNotification) - { - if (UserManagement.IsAuthorized) - Methods.ProcessToast((e as ToastNotificationActivatedEventArgs).Argument); - else - UserManagement.AuthorizationStateChanged += (arg) => Methods.ProcessToast((e as ToastNotificationActivatedEventArgs).Argument); - }*/ } } } diff --git a/FoxTube/Assets/AnnouncementThumb.png b/FoxTube/Assets/AnnouncementThumb.png deleted file mode 100644 index cb1434a7195702282fb3a705cc8b712536ccc8d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26655 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 diff --git a/FoxTube/Assets/ChannelCoverTemplate.png b/FoxTube/Assets/ChannelCoverTemplate.png deleted file mode 100644 index 61d877accb1b8eb64a33195711e69ce25dd4e993..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31327 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 diff --git a/FoxTube/Assets/Data/Package.zip b/FoxTube/Assets/Data/Package.zip deleted file mode 100644 index 862d98914718b5731871af570c7bea228ece149c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34402 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 diff --git a/FoxTube/Assets/Data/Patchnotes.xml b/FoxTube/Assets/Data/Patchnotes.xml deleted file mode 100644 index 09510f7..0000000 --- a/FoxTube/Assets/Data/Patchnotes.xml +++ /dev/null @@ -1,331 +0,0 @@ - - - - - ### What's new: -- Fixed video playback problems -- Fixed some cases when playlist cards aren't displayed -- Fixed some cases when the app crashes -- Fixed app crashes on trying to navigate to not existing channel/playlist/video -- Fixed history page refresh button -- You can now report comments as spam -- You can now report videos -- Enchanced background subscriptions check sequence -- Corrected misspells in English localization - - ### Что нового: -- Исправлены проблемы с воспроизведением видео -- Исправлены некоторые случаи при которых карточки плейлистов не отображались -- Исправлены некоторые случай при которых приложение вылетало -- Исправлены вылеты приложения при попытке перейти на несуществующий канал/плейлист/видео -- Исправлена кнопка обновления на странице истории просмотров -- Теперь вы можете помечать комментарии как спам -- Теперь вы можете отправлять жалобы на видео -- Улучшена проверка новых видео подписок в фоне -- Исправлены ошибки в английской локализации - - - - - - ### What's new: -- Added localization contribution system -- Added ability to completely collapse command bars (check settings) -- Added feature that checks your clipboard and suggests you to open YouTube page in the app if there is any (check settings) -- Added additional analytics tools to detect authorization fails -- Added video speed controller (check video settings) -- Test ads are now shown -- Fixed gaps in grids -- Fixed some cases when on maximizing video it pauses/continues -- Fixed missing inbox items due to incompatible date formats -- Fixed inability to unsubscribe from channel -- Fixed minimization of videos with unusual aspect ratios -- Fixed some cases when video continues to play in the background after closing/reloading video page - -### NB: -Since Microsoft hasn't fixed ad banners I'm forced to release the test ones. It will help me to optimize mechanics of ads delivery and make you fill more comfortable when the real ones will appear. Feedback is welcomed. - - ### Что нового: -- Теперь вы можете помочь нам переводить приложение на новые языки! -- Добавлена возможность полностью скрывать панель команд (см. Настройки) -- Добавлена функция которая сканирует ваш буфер обмена и, если там есть YouTube-ссылка, предлагает открыть соответствующую страницу в приложении (см. Настройки) -- Добавлены дополнительные инструменты аналитики для обнаружения ошибок авторизации -- Добавлен ползунок управления скоростью воспроизведения видео (см. Настройки видео) -- Теперь показываются тестовая реклама -- Исправлены пропуски в сетках -- Исправлены некоторые случаи при которых разворачивание видео останавливало/воспроизодило видео -- Исправлены пропущенные сообщения из-за несовместимых форматов дат системы -- Исправлена невозможность отписаться от канала -- Исправлено сворачивание видео с необычными соотношениями сторон -- Исправлены некоторые случаи при которых видео продолжало воспроизводиться в фоне после закрытия/обновления страницы видео - -### NB: -Поскольку Майкрософт все еще не исправили реальные рекламные баннеры, мне необходимо выпустить тестовые. Это поможет мне оптимизировать процесс доставки рекламы и позволит вам чувствовать себя более комфортно когда будут запущены настоящие. Отзывы приветствуются. - - - - - - ### What's new: -- Improved analytics tools for more precise bugs tracking -- Fixed multipying downloads history entries on login/logout -- Added feedback button failed authentication popup -- Duplicated subscriptions are now ignored on login - - ### Что нового: -- Улучшены инструменты аналитики для более быстрого поиска багов -- Исправлено дублирование записей истории загрузок при входе/выходе из аккаунта -- Добавлена кнопка отзыва в сообщении об ошибке при входе в аккаунт -- Повторяющиеся подписки теперь игнорируются при входе - - - - - - ##[Final release] -### What's new: -- In-video advert now doesn't appear on minimized playback -- Fixed small header appearing on channel page -- Fixed home page loading in long active sessions -- Optimization and bugfixes -- Fixed crash when local watch history reaches 87 entries (now its capacity is 200) -- Added backward navigation to video page -- Improved authentication process -- Removed outdated logo from 'About' page and updated Twitter link -- Play/pause toggle on video player mouse click -- Added player hotkeys: - Space - Play/Pause - Arrow right/left - Skip forward/backward - F11 - Toggle full screen -- Activated real ads -- Fixed app crash on video's zero rating -- "Subscribe" button now is hidden on your videos - - ##[Релизная версия] -### Что нового: -- Теперь реклама в видео не появляется в компактном режиме -- Исправлено появление меленького заголовка на странице канала -- Исправлено отображение видео на домашней странице при долгой активной сессии -- Оптимизация и исправление ошибок -- Исправлен сбой приложения при достижении локальной историей 87 записей (текущая емкость журнала - 200 записей) -- Добавлена обратная навигация для страниц просмотра -- Улучшен процесс аутентификации -- Удален старый логотип с страницы 'О приложении' и обновлена ссылка на Твиттер -- Пауза/воспроизведение при клике мышью по окну плеера -- Добавлены горячие клавиши: - Пробел - Пауза/Воспроизведение - Стрелка вправо/влево - Перейти вперед на 30 секунд/назад на 10 секунд - F11 - Переключить полноэкранный режим -- Запущена реальная реклама -- Исправлен вылет приложения при нулевом рейтинге видео -- Кнопка "Подписаться" теперь скрыта на странице вашего видео - - - - - - ##[Final pre-release version] -### What's new: -- Fixed fails when trying to retrieve history, WL or recommended -- Fixed ads appearance -- Fixed ads watermarks on video when it was opened through notification -- Optimized and enchanced video playback -- Fixed special characters appearing in toast notifications -- History page re-design -- Added app history management (doesn't affect web site's history) -- Extended history information for videos (watching progress) -- Continue where you left off feature -- Watch later playlist now acts like regular playlist -- If video is longer than 1 hour ads will be shown every 30 minutes -- Added incognito mode (available in video card context menu) -- Search suggestions now run smoother -- FoxTube pro price is now displayed in menu -- Fixed crashes on opening links which don't contain http(s) prefix -- Fixed backward navigation with minimized video -- Player re-design -- Added quality selector to live streams playback -- Added "Auto" quality option for videos -- Updated design of user's avatar in the top-right corner - -####[NB] -This is the final pre-release minor version. That means that until 1.0 release there will be no new features implemented. All subsequent updates will contain only bugfixes - - ##[Последняя предварительная версия] -### Что нового: -- Исправлена проблема получения истории, "Посмотреть позже" и рекомендаций -- Исправлен внешний вид рекламы -- Исправлено появление водяных занков рекламы на видео при открытии через уведомления -- Оптимизирован и улучшен просмотр видео -- Исправлено появление особых символов в уведомлениях -- Редизайн страницы истории -- Добавлено управление историей просмотра приложения (не влияет на историю просмотров на сайте) -- Расширенная информация о просмотренном видео (прогресс просмотра) -- Функция продолжения просмотра -- Плейлист "Посмотреть позже" теперь ведет себя как обычный плейлист -- Если видео длится более 1 часа, рекламный баннер будет появляться каждые 30 минут -- Добавлен режим инкогнито (доступен в контекстном меню видео карточки) -- Подсказки при поиске работают плавнее -- Теперь на кнопке отключения рекламы отображается текущая цена -- Исправлены вылеты при попытке открыть ссылку не содержащую http(s) префикс -- Исправлена обратная навигация при уменьшенном видео -- Редизайн плеера -- Добавлено меню выбора качества для прямых эфиров -- Добавлено опция "Авто" в меню выбора качеста видео -- Обновлен дизайн аватара пользователя в верхнем правом углу - -####[NB] -Версия 0.6 станет последней пред релизной версией. Это значит, что новые функции не будут добовляться до полного релиза приложения. Все последующие обновления будут содержать лишь исправления - - - - - - ### What's new: -- App optimization -- Changelog notification now pops up after update at first launch -- Added ability to add videos to playlists on video page -- Added ability to add videos to playlists through card's context menu -- Added ability to download video through card's context menu -- Deleted videos are now also displayed -- Added support of April 2018 Update (Windows 10 build 17134) -- Added adverts (not real. Just for debugging) -- Fixed header titles -- Some items were moved from menu to header -- Added "Share" button to video cards -- Added "Delete video from playlist" button to video cards on playlist page -- Improved channel cover quality -- If available, shows localized titles and descriptions (based on "Search relevance language" parameter set in settings) -- Updated russian localization - - ### Что нового: -- Оптимизация приложения -- Добавлено уведомление со списком изменений при первом запуске после обновления -- Добавлена возможность добавлять видео в плейлисты на странице просмотра -- Добавлена возможность добавлять видео в плейлисты через контекстное меню карточки -- Добавлена возможность скачивать видео через контекстное меню карточки -- Удаленные видео теперь также отображаются -- Добавлена поддержка Апрельского Обновления 2018 (Windows 10 сборка 17134) -- Добавлена реклама (не настоящие. Только для отладки) -- Исправлено изменение заголовков -- Некоторые пункты меню перемещены в заголовок -- Добавлена кнопка "Поделиться" к видео карточкам -- Добавлена кнопка "Удалить видео из плейлиста" к видео карточкам на страницах плейлистов -- Улучшено качество обложки канала -- Показывает локализированные заголовки и описания если доступны (основан на параметре "Предпочитаемый язык поиска" установленного в настройках) -- Обновлена русская локализация - - - - - - ### What's new: -- Improved stability and speed of the app -- Fixed a lot of bugs -- Rebuilt player -- Added animations and acrylic -- Added accout information -- Added history -- Added "Watch later" playlist -- Added "Recommended" and "Subscriptions" tabs on home page -- Added tiny icon near the channel search -- Added ability to delete comments -- Rebuilt videos downloading -- Added transparent title bar -- Added prompts to rate the app and leave feedback (dialogs shows up after 12 and 24 hours of active using) -- Rebuilt cards grid -- Added publish date on the video page -- Stream countdown was rebuilt and moved to the top of video page -- Current playlist focuses on current video -- Text selection color is now red instead of system accent color -- Added toast notifications for livestreams - -### Known issues: -- 'History' and 'Watch later' playlists sometimes are missing. Solution: restart the app -- The same problem with 'Recommended' and 'Subscriptions' tabs on home page -- Somewhere there is no russian locale. Will be finished in 1.0 version -- Playlists management will be introduced in the next version but it may miss some playlists -- Even though I've done ads delivering system it's not introduced because of some problems with ads' lookup. I just want to make your ads experience to be the best one. So it won't be implemented until I make sure that they are ready - - ### Что нового: -- Улучшена стабильность и скорость приложения -- Исправлена куча багов -- Переработан плеер -- Добавлены анимации и акрил -- Добавлена информация об аккаунте -- Добавлена история -- Добавлен плейлист "Посмотреть позже" -- Добавлены вкладки "Рекоммендованные" и "Подписки" на домашней странице -- Добавлена маленькая иконка канала при прокрутке вниз на странице канала -- Добавлена возможность удалять комментарии -- Переработано скачивание видео -- Добавлен прозрачный заголовок окна -- Добавлены всплывающие уведомления с просьбой оценить приложение и оставить отзыв (появляются после 12 и 24 часов активного использования) -- Переработана сетка карточек -- Добавлена информация о дате публикации видео на странице просмотра -- Обратный отсчет для стримов переработан и перенесен вверх страницы -- Список видео текущего плейлиста сразу перематывается на текущее -- Текст выделяется красным, а не текущим цветом системы -- Добавлены уведомления для прямых эфиров - -### Известные проблемы: -- История и плейлист 'Посмотреть позже' иногда могут не отображаться. Решение: перезапустить приложение -- Аналогично и со вкладками 'Рекомендованные' и 'Подписки' на домашней странице -- В некоторых местах отсутствует русская локализация. Будет дополнена в версии 1.0 -- Управление плейлистами будет добавлено в следующей версии, но некоторые плейлисты могут отсутствовать -- Хотя я сделал систему доставки рекламы, она не введена из-за некоторых проблем с видом банеров. Я хочу сделать ваш опыт взаимодействия с рекламой в приложении лучше, так что она не будет введена до тех пор, пока я не буду в этом уверен - - - - - - ### What's new: - -- Small fixes -- First public pre-release version -- Some content was cut out due to its incompleteness - - ### Что нового: - -- Мелкие исправления багов -- Эта версия является первой пред-релизной публичной версией -- Некотроые функции были вырезаны из-за их незавершенности - - - - - - ### What's new: - -- 'Live' button fixed in the player -- Long channel names on crads fixed -- Fixed video description disappearing on window resizing -- Player seek is fixed -- Added video buffering progress indicatior -- Small fixes - -### Known issues: - -- Recommended and subscriptions pages aren't implemented -- History isn't implemented -- Playlists management isn't implemented -- Ads aren't implemented - - ### Что нового: - -- Кнопка перехода к прямому эфиру на стримах теперь работает -- Исправлен баг с длинными именами каналов на карточках -- Исправлено исчезание описания видео при изменении размеров окна -- Исправлен ползунок перемотки видео -- Добавлен индикатор буферизации видео -- Мелкие исправления - -### Что по-прежнему не работает: - -- Страница рекомендованных видео и страница видео с подписок -- История -- Работа с плейлистами -- Нет карточек рекламы - - - - diff --git a/FoxTube/Assets/DefaultChannelBanner.png b/FoxTube/Assets/DefaultChannelBanner.png new file mode 100644 index 0000000000000000000000000000000000000000..6e129c165f37b8af57e4aee0fe2e9b1ac60ac8f7 GIT binary patch literal 8004 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 literal 0 HcmV?d00001 diff --git a/FoxTube/Assets/DefaultVideoThumbnail.png b/FoxTube/Assets/DefaultVideoThumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1cb01b853939f0bdff684df54d795ed8b03405 GIT binary patch literal 11213 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 literal 0 HcmV?d00001 diff --git a/FoxTube/Assets/Icons/Profile.png b/FoxTube/Assets/Icons/Profile.png deleted file mode 100644 index 71ac04e9abb701b9e26ddd0fc172dc3bf171623b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22217 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

mRa&wW}ju9n!hGv_!&OO(6XFmEB=#KoQ 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 diff --git a/FoxTube/Assets/Icons/Send.png b/FoxTube/Assets/Icons/Send.png deleted file mode 100644 index 2c73623783b73f4cd1fa53cc01a40fc4968575c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11584 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 F{}*HOIDY^D diff --git a/FoxTube/Assets/LogoAvatar.png b/FoxTube/Assets/LogoAvatar.png deleted file mode 100644 index c2550ebc828a7394e397cb64928886946e8aae65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14489 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 diff --git a/FoxTube/Assets/WhatsNewThumb.png b/FoxTube/Assets/WhatsNewThumb.png deleted file mode 100644 index 93ab8b684a4d73e5c9bba90cc6c3a520fb253bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28302 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 G{67GO6N?1^ diff --git a/FoxTube/Assets/videoPlaceholder.png b/FoxTube/Assets/videoPlaceholder.png deleted file mode 100644 index 54f5e6ae80cf19f1dc6aafe67b646bf641154f80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4099 zcmeAS@N?(olHy`uVBq!ia0y~yV6k9eV2bBp1B%QtObZ863dtTpz6=aistgPb%?u1b z{{!il3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`!jG!i)^F=14Fw@OOH;IEGZj zy}fae^MC;Zv*GgJ@9#XjsLH2eaPQ%{ZQuDocD(*652Cyu07-^VEMPJJQI5iB7%+^6 z0Wf2Xri0Ni0G5oS>0mSrM(f7W_Q7ZyX|$a<+9VjQ4o8~=qg_Q}yUUNZ@n;9K?!Cgc RYA&eo^mO%eS?83{1ON~^?Y{s3 diff --git a/FoxTube/Assets/videoThumbSample.png b/FoxTube/Assets/videoThumbSample.png deleted file mode 100644 index 28c0f63ba63030139c85b608ff94a61b82d71249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8755 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 diff --git a/FoxTube/Classes/Authenticator.cs b/FoxTube/Classes/Authenticator.cs deleted file mode 100644 index c103947..0000000 --- a/FoxTube/Classes/Authenticator.cs +++ /dev/null @@ -1,226 +0,0 @@ -using Google.Apis.Oauth2.v2; -using Google.Apis.YouTube.v3; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Http; -using System.Text; -using System.Threading.Tasks; -using Windows.Data.Json; -using Windows.Security.Cryptography; -using Windows.Security.Cryptography.Core; -using Windows.Storage.Streams; -using Google.Apis.Auth.OAuth2.Responses; -using Google.Apis.Auth.OAuth2; - -namespace FoxTube.Classes -{ - public static class Authenticator - { - const string redirectURI = "xfox111.foxtube:/oauth2redirect"; - const string authorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth"; - const string tokenEndpoint = "https://www.googleapis.com/oauth2/v4/token"; - - readonly static string scopes = Oauth2Service.Scope.UserinfoProfile + " " + - Oauth2Service.Scope.UserinfoEmail + " " + - YouTubeService.Scope.YoutubeForceSsl; - - - static Uri responseUri = null; - static string state = null; - static string codeVerifier = null; - - - public static async Task Authorize(string clientId) - { - await SendRequest(clientId); - await WaitForResponse(); - string code = ProcessResponse(responseUri); - JsonObject response = await ExchangeForTokens(clientId, code); - - ClearFields(); - - return new TokenResponse - { - AccessToken = response.GetNamedString("access_token"), - ExpiresInSeconds = 3600, - IssuedUtc = DateTime.UtcNow, - TokenType = response.GetNamedString("token_type"), - IdToken = response.GetNamedString("id_token"), - RefreshToken = response.GetNamedString("refresh_token"), - Scope = response.GetNamedString("scope") - }; - } - - public static async Task RefreshToken(string clientId, string refreshToken) => - await RefreshToken(clientId, refreshToken, null); - - public static async Task RefreshToken(string clientId, string refreshToken, string idToken) - { - HttpClient client = new HttpClient(); - client.DefaultRequestHeaders.Host = "www.googleapis.com"; - client.DefaultRequestHeaders.Add("Content-Type", "application/x-www-form-urlencoded"); - - Dictionary body = new Dictionary - { - { "client_id", clientId }, - { "refresh_token", refreshToken }, - { "grant_type", "refresh_token" } - }; - - using(HttpResponseMessage raw = await client.PostAsync("https://www.googleapis.com/oauth2/v4/token", new FormUrlEncodedContent(body))) - { - if (!raw.IsSuccessStatusCode) - return null; - - JsonObject response = JsonObject.Parse(await raw.Content.ReadAsStringAsync()); - - return new TokenResponse - { - AccessToken = response.GetNamedString("access_token"), - IssuedUtc = DateTime.UtcNow, - RefreshToken = refreshToken, - Scope = scopes, - TokenType = "Bearer", - ExpiresInSeconds = int.Parse(response.GetNamedString("expires_in")), - IdToken = idToken - }; - } - } - - static async Task WaitForResponse() - { - while (responseUri == null) - await Task.Delay(1000); - } - - public static void SetResponse(Uri response) => - responseUri = response; - - static async Task SendRequest(string clientId) - { - // Generates state and PKCE values. - state = randomDataBase64url(32); - codeVerifier = randomDataBase64url(32); - string code_challenge = base64urlencodeNoPadding(sha256(codeVerifier)); - - // Creates the OAuth 2.0 authorization request. - string authorizationRequest = string.Format("{0}?response_type=code&redirect_uri={1}&client_id={2}&state={3}&code_challenge={4}&code_challenge_method={5}&scope={6}", - authorizationEndpoint, - Uri.EscapeDataString(redirectURI), - clientId, - state, - code_challenge, - "S256", - scopes); - - // Opens the Authorization URI in the browser. - await Windows.System.Launcher.LaunchUriAsync(new Uri(authorizationRequest)); - } - - public static string ProcessResponse(Uri response) - { - // Gets URI from navigation parameters. - string queryString = response.Query; - - // Parses URI params into a dictionary - // ref: http://stackoverflow.com/a/11957114/72176 - Dictionary queryStringParams = - queryString.Substring(1).Split('&') - .ToDictionary(c => c.Split('=')[0], - c => Uri.UnescapeDataString(c.Split('=')[1])); - - if (!queryStringParams.ContainsKey("code") - || !queryStringParams.ContainsKey("state") - || queryStringParams.ContainsKey("error")) - return null; - - // Gets the Authorization state - string incoming_state = queryStringParams["state"]; - - // Compares the receieved state to the expected value, to ensure that - // this app made the request which resulted in authorization - if (incoming_state != state) - return null; - - // Returns the Authorization code - return queryStringParams["code"]; - } - - - static async Task ExchangeForTokens(string clientId, string code) - { - // Builds the Token request - string tokenRequestBody = string.Format("code={0}&redirect_uri={1}&client_id={2}&code_verifier={3}&scope=&grant_type=authorization_code", - code, - Uri.EscapeDataString(redirectURI), - clientId, - codeVerifier - ); - StringContent content = new StringContent(tokenRequestBody, Encoding.UTF8, "application/x-www-form-urlencoded"); - - // Performs the authorization code exchange. - HttpClientHandler handler = new HttpClientHandler(); - handler.AllowAutoRedirect = true; - HttpClient client = new HttpClient(handler); - - HttpResponseMessage response = await client.PostAsync(tokenEndpoint, content); - string responseString = await response.Content.ReadAsStringAsync(); - - if (!response.IsSuccessStatusCode) - return null; - - // Retrieves access token - return JsonObject.Parse(responseString); - } - - static void ClearFields() - { - codeVerifier = null; - state = null; - responseUri = null; - } - - - ///

- /// Returns URI-safe data with a given input length. - /// - /// Input length (nb. output will be longer) - /// - static string randomDataBase64url(uint length) - { - IBuffer buffer = CryptographicBuffer.GenerateRandom(length); - return base64urlencodeNoPadding(buffer); - } - - /// - /// Returns the SHA256 hash of the input string. - /// - /// - /// - static IBuffer sha256(string inputStirng) - { - HashAlgorithmProvider sha = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha256); - IBuffer buff = CryptographicBuffer.ConvertStringToBinary(inputStirng, BinaryStringEncoding.Utf8); - return sha.HashData(buff); - } - - /// - /// Base64url no-padding encodes the given input buffer. - /// - /// - /// - static string base64urlencodeNoPadding(IBuffer buffer) - { - string base64 = CryptographicBuffer.EncodeToBase64String(buffer); - - // Converts base64 to base64url. - base64 = base64.Replace("+", "-"); - base64 = base64.Replace("/", "_"); - // Strips padding. - base64 = base64.Replace("=", ""); - - return base64; - } - } -} diff --git a/FoxTube/Classes/Extensions.cs b/FoxTube/Classes/Extensions.cs deleted file mode 100644 index 969207a..0000000 --- a/FoxTube/Classes/Extensions.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Google.Apis.YouTube.v3.Data; -using System; -using System.Collections; -using System.Linq; - -namespace FoxTube -{ - public delegate void AuthorizationChangedEventHandler(bool isAuthorized); - public delegate void SubscriptionChangedEventHandler(string action, Subscription subscription); - public delegate void ProVersionStateChangedEventHandler(bool purchased, string price); - public delegate void NavigatingOccured(Type sourcePageType, object parameter); - public delegate void NavigationOccured(IList pivotCollection, int? selectedPivot); - public delegate void SimpleEventHandler(); - - public enum LoadingScreenState - { - Loading = 0, - Loaded = 1, - Error = 2, - Blocked = 3 - } - - public interface INavigationPage - { - object Parameter { get; set; } - } - - public static class Extensions - { - public static Uri ToUri(this string str) => - string.IsNullOrWhiteSpace(str) ? null : new Uri(str); - - public static bool Belongs(this T obj, params T[] values) => - values.Contains(obj); - - public static string GuardFromNull(this object obj, string str) => - string.IsNullOrWhiteSpace(str) ? string.Empty : str; - } -} diff --git a/FoxTube/Classes/Methods.cs b/FoxTube/Classes/Methods.cs deleted file mode 100644 index 263ff33..0000000 --- a/FoxTube/Classes/Methods.cs +++ /dev/null @@ -1,89 +0,0 @@ -using FoxTube.Classes; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Windows.ApplicationModel.Core; -using Windows.UI; -using Windows.UI.Core; -using Windows.UI.ViewManagement; -using Windows.UI.Xaml; - -namespace FoxTube -{ - public static class Methods - { - public static void ProcessToast(string argument) - { - string[] args = argument.Split('|'); - - switch (args[0]) - { - case "changelog": - case "inbox": - Navigation.GoToDeveloper(args[1]); - break; - - case "video": - Navigation.GoToVideo(args[1]); - break; - - case "channel": - Navigation.GoToChannel(args[1]); - break; - - case "download": - Navigation.GoToDownloads(); - break; - case "clipboard": - switch (args[1]) - { - case "video": - Navigation.GoToVideo(args[2]); - break; - case "channel": - Navigation.GoToChannel(args[2]); - break; - case "playlist": - Navigation.GoToPlaylist(args[2]); - break; - } - break; - } - } - - public static async Task ProcessBackgroundToast(string argument) - { - try - { - string[] args = argument.Split('|'); - - switch (args[0]) - { - case "dcancel": - Downloads.Cancel(args[1]); - break; - case "later": - await UserManagement.AddItemToWL(args[1]); - break; - } - } - catch { } - } - - public static void SetTitleBar() - { - var titleBar = ApplicationView.GetForCurrentView().TitleBar; - - titleBar.ButtonBackgroundColor = Colors.Transparent; - titleBar.ButtonHoverBackgroundColor = Colors.IndianRed; - titleBar.ButtonPressedBackgroundColor = Colors.DarkRed; - titleBar.ButtonInactiveBackgroundColor = Colors.Transparent; - titleBar.ButtonInactiveForegroundColor = Colors.Gray; - titleBar.ButtonForegroundColor = Colors.White; - - CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true; - } - } -} diff --git a/FoxTube/Classes/Navigation.cs b/FoxTube/Classes/Navigation.cs deleted file mode 100644 index 3e356a5..0000000 --- a/FoxTube/Classes/Navigation.cs +++ /dev/null @@ -1,64 +0,0 @@ -using FoxTube.Classes; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FoxTube -{ - public static class Navigation - { - public static void GoToSubscriptions() - { - - } - public static void GoToSettings() - { - - } - public static void GoToUploadPage() - { - - } - public static void GoToSearch(SearchParameters args) - { - - } - - public static void GoToChannel(string id) - { - - } - - public static void GoToHome() - { - - } - - public static void GoToVideo(string id, string playlistId = null, bool incognito = false) - { - - } - - public static void GoToDeveloper(string id) - { - - } - - public static void GoToPlaylist(string id) - { - - } - - public static void GoToHistory() - { - - } - - public static void GoToDownloads() - { - - } - } -} diff --git a/FoxTube/Classes/Processes.cs b/FoxTube/Classes/Processes.cs deleted file mode 100644 index 347a201..0000000 --- a/FoxTube/Classes/Processes.cs +++ /dev/null @@ -1,248 +0,0 @@ -using Microsoft.AppCenter; -using Microsoft.AppCenter.Analytics; -using Microsoft.Services.Store.Engagement; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using Windows.ApplicationModel.Background; -using Windows.ApplicationModel.DataTransfer; -using Windows.ApplicationModel.Resources; -using Windows.Data.Xml.Dom; -using Windows.System; -using Windows.System.Power; -using Windows.UI.Core; -using Windows.UI.Notifications; -using Windows.UI.Popups; -using Windows.UI.Xaml; - -namespace FoxTube.Classes -{ - public static class Processes - { - static CoreWindowActivationState windowState = CoreWindowActivationState.CodeActivated; - static ResourceLoader resources = ResourceLoader.GetForViewIndependentUse("Inbox"); - - static Stopwatch sw = new Stopwatch(); - public static async void InitializeApp() => await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => - { - CheckVersion(); - - RegisterToastTask(); - if (Settings.DevNotifications || Settings.VideoNotifications) - RegisterTask(); - else - UnregisterTask(); - - AppCenter.Start("45774462-9ea7-438a-96fc-03982666f39e", typeof(Analytics)); - AppCenter.SetCountryCode(Settings.Region); - - sw.Start(); - - Window.Current.Activated += (s, e) => windowState = e.WindowActivationState; - - // TODO: Initialize other stuff - - if (Settings.ProcessClipboard) - { - Clipboard.ContentChanged += ParseClipboard; - ParseClipboard(); - } - - PromptFeedback(); - }); - - public static void SuspendApp() - { - sw.Stop(); - - Settings.Uptime += sw.Elapsed; - - // TODO: Save other stuff - - Analytics.TrackEvent("Session terminated", new Dictionary - { - { "Uptime", sw.Elapsed.ToString() }, - { "Total time", Settings.Uptime.ToString() } - }); - } - - static async void ParseClipboard(object sender = null, object e = null) - { - if (windowState != CoreWindowActivationState.Deactivated || !Settings.ProcessClipboard) - return; - - try - { - string link = await Clipboard.GetContent().GetTextAsync(); - - if (!link.Contains("youtube") && !link.Contains("youtu.be")) - return; - - string type = string.Empty; - string name = string.Empty; - - if (YoutubeExplode.YoutubeClient.TryParseChannelId(link, out string id)) - { - type = "channel"; - name = (await new YoutubeExplode.YoutubeClient().GetChannelAsync(id)).Title; - } - else if (YoutubeExplode.YoutubeClient.TryParsePlaylistId(link, out id)) - { - type = "playlist"; - name = (await new YoutubeExplode.YoutubeClient().GetPlaylistAsync(id)).Title; - } - else if (YoutubeExplode.YoutubeClient.TryParseUsername(link, out id)) - { - id = await new YoutubeExplode.YoutubeClient().GetChannelIdAsync(id); - type = "channel"; - name = (await new YoutubeExplode.YoutubeClient().GetChannelAsync(id)).Title; - } - else if (YoutubeExplode.YoutubeClient.TryParseVideoId(link, out id)) - { - type = "video"; - name = (await new YoutubeExplode.YoutubeClient().GetVideoAsync(id)).Title; - } - - if (string.IsNullOrWhiteSpace(id)) - return; - - XmlDocument toastXml = new XmlDocument(); - toastXml.LoadXml($@" - - - {resources.GetString("/Toasts/clipboardHead")} - {name} - {resources.GetString($"/Generic/{type}")} - - - - - - "); - ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toastXml)); - } - catch { } - } - - static void CheckVersion() - { - if (Settings.GetCurrentVersion() == Settings.Version) - return; - - try - { - XmlDocument toast = new XmlDocument(); - toast.LoadXml($@" - - - - - {resources.GetString("/Inbox/changelog")} - {resources.GetString("/Inbox/whatsNew")} {Settings.GetCurrentVersion()} - - - "); - - ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toast)); - - Settings.Version = Settings.GetCurrentVersion(); - } - catch { } - } - - static async void RegisterToastTask() - { - if (BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name.Equals("foxtubeToast"))) - return; - - var backgroundRequest = await BackgroundExecutionManager.RequestAccessAsync(); - if (backgroundRequest == BackgroundAccessStatus.DeniedBySystemPolicy || - backgroundRequest == BackgroundAccessStatus.DeniedByUser || - backgroundRequest == BackgroundAccessStatus.Unspecified) - return; - - BackgroundTaskBuilder builder = new BackgroundTaskBuilder() { Name = "foxtubeToast" }; - builder.SetTrigger(new ToastNotificationActionTrigger()); - - BackgroundTaskRegistration registration = builder.Register(); - } - - static async void RegisterTask() - { - if (BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name.Equals("foxtubeBackground"))) - return; - - var backgroundRequest = await BackgroundExecutionManager.RequestAccessAsync(); - if (backgroundRequest == BackgroundAccessStatus.DeniedBySystemPolicy || - backgroundRequest == BackgroundAccessStatus.DeniedByUser || - backgroundRequest == BackgroundAccessStatus.Unspecified || - PowerManager.EnergySaverStatus == EnergySaverStatus.On) - return; - - BackgroundTaskBuilder builder = new BackgroundTaskBuilder() - { - Name = "foxtubeBackgound", - IsNetworkRequested = true, - TaskEntryPoint = "FoxTube.Background.BackgroundProcessor" - }; - builder.SetTrigger(new TimeTrigger(15, false)); - - BackgroundTaskRegistration registration = builder.Register(); - } - - static void UnregisterTask() - { - if (!(BackgroundTaskRegistration.AllTasks.Values.ToList().Find(i => i.Name == "foxtubeBackground") is IBackgroundTaskRegistration task)) - return; - - task.Unregister(true); - } - - static async void PromptFeedback() - { - if (Settings.Uptime.TotalHours >= 12 && Settings.PromptFeedback) - { - Analytics.TrackEvent("Prompting feedback", new Dictionary - { - { "Total uptime", Settings.Uptime.ToString() } - }); - - MessageDialog dialog = new MessageDialog(resources.GetString("/Dialogs/feedbackMessage")); - dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/dontAsk"), (command) => Settings.PromptFeedback = false)); - dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/promptLater"))); - dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/sure"), async (command) => - { - Settings.PromptFeedback = false; - if (StoreServicesFeedbackLauncher.IsSupported()) - await StoreServicesFeedbackLauncher.GetDefault().LaunchAsync(); - else - await Launcher.LaunchUriAsync("mailto:feedback@xfox111.net".ToUri()); - })); - dialog.DefaultCommandIndex = 2; - dialog.CancelCommandIndex = 1; - await dialog.ShowAsync(); - } - - if (Settings.Uptime.TotalHours >= 24 && Settings.PromptReview) - { - Analytics.TrackEvent("Prompting review", new Dictionary - { - { "Total uptime", Settings.Uptime.ToString() } - }); - - MessageDialog dialog = new MessageDialog(resources.GetString("/Dialogs/rate")); - dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/dontAsk"), (command) => Settings.PromptReview = false)); - dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/promptLater"))); - dialog.Commands.Add(new UICommand(resources.GetString("/Dialogs/sure"), async (command) => - { - Settings.PromptReview = false; - await Launcher.LaunchUriAsync("ms-windows-store://review/?ProductId=9NCQQXJTDLFH".ToUri()); - })); - dialog.DefaultCommandIndex = 2; - dialog.CancelCommandIndex = 1; - await dialog.ShowAsync(); - } - } - } -} diff --git a/FoxTube/Classes/SearchParameters.cs b/FoxTube/Classes/SearchParameters.cs deleted file mode 100644 index f9c8967..0000000 --- a/FoxTube/Classes/SearchParameters.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FoxTube.Classes -{ - public class SearchParameters - { - public SearchParameters(string query) - { - - } - } -} diff --git a/FoxTube/Classes/Service.cs b/FoxTube/Classes/Service.cs deleted file mode 100644 index b9178ba..0000000 --- a/FoxTube/Classes/Service.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Net; -using Windows.Services.Store; - -namespace FoxTube -{ - public static class Service - { - public static bool AdsDisabled { get; private set; } = true; - public static event ProVersionStateChangedEventHandler Purchased; - - public static NetworkCredential EmailCredential => new NetworkCredential("foxtube.bot@xfox111.net", "JkY39w$.7?bT57O,8k3a"); - - private static bool TestAds => false; //TODO: Change this bool - public static string AppId => TestAds ? "d25517cb-12d4-4699-8bdc-52040c712cab" : "9ncqqxjtdlfh"; - public static string AdUnitId => TestAds ? "test" : "1100037769"; - - public static async void CheckAddons() - { - try - { - StoreProductQueryResult requset = await StoreContext.GetDefault().GetAssociatedStoreProductsAsync(new[] { "Durable" }); - - if (requset.Products["9NP1QK556625"].IsInUserCollection) - return; - - AdsDisabled = false; - Purchased?.Invoke(false, requset.Products["9NP1QK556625"].Price.FormattedPrice); - } - catch { } - } - - public static async void GetPro() - { - try - { - StorePurchaseResult request = await StoreContext.GetDefault().RequestPurchaseAsync("9NP1QK556625"); - - if (!request.Status.Belongs(StorePurchaseStatus.AlreadyPurchased, StorePurchaseStatus.Succeeded)) - return; - - Purchased?.Invoke(true, ""); - AdsDisabled = true; - } - catch { } - } - } -} diff --git a/FoxTube/Classes/Settings.cs b/FoxTube/Classes/Settings.cs deleted file mode 100644 index f817af8..0000000 --- a/FoxTube/Classes/Settings.cs +++ /dev/null @@ -1,277 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Globalization; -using System.Linq; -using Windows.ApplicationModel; -using Windows.Storage; -using Windows.UI.Xaml.Controls; - -namespace FoxTube.Classes -{ - public static class Settings - { - public class SettingsContainer - { - public string videoQuality = "remember"; - public string rememberedQuality = "1080p"; - - public bool videoNotifications = true; - public bool devNotifications = true; - - public bool checkConnection = true; - public bool autoplay = true; - public double volume = 100; - - public string language = GetLanguage(); - public string relevanceLanguage = CultureInfo.InstalledUICulture.TwoLetterISOLanguageName; - public string region = CultureInfo.InstalledUICulture.Name.Split('-')[1]; - public int safeSearch = 0; - - public bool[] hasAccount = new bool[5] { false, false, false, false, false }; - public int theme = 2; - - public string version = GetCurrentVersion(); - public bool mature = false; - - public TimeSpan uptime = TimeSpan.FromSeconds(0); - public bool promptReview = true; - public bool promptFeedback = true; - - public bool processClipboard = true; - public bool minimizeCommandbar = false; - - public int selectedUser = -1; - - static string GetLanguage() - { - if ((new[] { "ua", "ru", "by", "kz", "kg", "md", "lv", "ee" }).Contains(CultureInfo.InstalledUICulture.TwoLetterISOLanguageName)) - return "ru-RU"; - else - return "en-US"; - } - } - - public static string GetCurrentVersion() - { - PackageVersion ver = Package.Current.Id.Version; - return $"{ver.Major}.{ver.Minor}"; - } - - public static string VideoQuality - { - get => Container.videoQuality; - set - { - Container.videoQuality = value; - SaveData(); - } - } - public static string RememberedQuality - { - get => Container.rememberedQuality; - set - { - Container.rememberedQuality = value; - SaveData(); - } - } - - public static bool VideoNotifications - { - get => Container.videoNotifications; - set - { - Container.videoNotifications = value; - SaveData(); - } - } - public static bool DevNotifications - { - get => Container.devNotifications; - set - { - Container.devNotifications = value; - SaveData(); - } - } - - public static bool CheckConnection - { - get => Container.checkConnection; - set - { - Container.checkConnection = value; - SaveData(); - } - } - public static bool Autoplay - { - get => Container.autoplay; - set - { - Container.autoplay = value; - SaveData(); - } - } - public static double Volume - { - get => Container.volume; - set - { - Container.volume = value; - SaveData(); - } - } - - public static string Language - { - get => Container.language; - set - { - Container.language = value; - SaveData(); - } - } - public static string RelevanceLanguage - { - get => Container.relevanceLanguage; - set - { - Container.relevanceLanguage = value; - SaveData(); - } - } - public static string Region - { - get => Container.region; - set - { - Container.region = value; - SaveData(); - } - } - public static int SafeSearch - { - get => Container.safeSearch; - set - { - Container.safeSearch = value; - SaveData(); - } - } - public static int SelectedUser - { - get => Container.selectedUser; - set - { - Container.selectedUser = value; - SaveData(); - } - } - public static bool[] HasAccount => Container.hasAccount; - public static void SetAccount(int index, bool isAuthorized) - { - HasAccount[index] = isAuthorized; - SaveData(); - } - public static int Theme - { - get => Container.theme; - set - { - Container.theme = value; - SaveData(); - } - } - - public static string Version - { - get => Container.version; - set - { - Container.version = value; - SaveData(); - } - } - public static bool Mature - { - get => Container.mature; - set - { - Container.mature = value; - SaveData(); - } - } - - public static TimeSpan Uptime - { - get => Container.uptime; - set - { - Container.uptime = value; - SaveData(); - } - } - public static bool PromptReview - { - get => Container.promptReview; - set - { - Container.promptReview = value; - SaveData(); - } - } - public static bool PromptFeedback - { - get => Container.promptFeedback; - set - { - Container.promptFeedback = value; - SaveData(); - } - } - - public static bool ProcessClipboard - { - get => Container.processClipboard; - set - { - Container.processClipboard = value; - SaveData(); - } - } - - public static AppBarClosedDisplayMode AppBarClosedMode - { - get => Container.minimizeCommandbar ? AppBarClosedDisplayMode.Minimal : AppBarClosedDisplayMode.Compact; - set - { - Container.minimizeCommandbar = value == AppBarClosedDisplayMode.Minimal; - SaveData(); - } - } - - //Settings storage - static readonly ApplicationDataContainer storage = ApplicationData.Current.RoamingSettings; - static SettingsContainer Container = new SettingsContainer(); - - /// - /// Loads saved settings from storage - /// - public static void LoadData() - { - try - { - Container = JsonConvert.DeserializeObject(storage.Values["settings"] as string); - } - catch - { - Container = new SettingsContainer(); - SaveData(); - } - } - - static void SaveData() => - storage.Values["settings"] = JsonConvert.SerializeObject(Container); - } -} diff --git a/FoxTube/Classes/User.cs b/FoxTube/Classes/User.cs deleted file mode 100644 index 883ef43..0000000 --- a/FoxTube/Classes/User.cs +++ /dev/null @@ -1,328 +0,0 @@ -using Google.Apis.YouTube.v3.Data; -using YoutubeExplode.Models; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Google.Apis.Oauth2.v2.Data; -using YoutubeExplode; -using System.Net.Http; -using Google.Apis.Auth.OAuth2.Responses; -using Newtonsoft.Json; -using Windows.UI.Xaml; -using Windows.UI.Popups; - -namespace FoxTube.Classes -{ - public class User - { - public event SubscriptionChangedEventHandler SubscriptionsChanged; - - public List Subscriptions { get; } = new List(); - - public List WatchLater { get; private set; } - public List WebHistory { get; private set; } - public List AppHistory { get; } - - public Userinfoplus UserInfo { get; private set; } - public TokenResponse Tokens { get; private set; } - - public YoutubeClient YoutubeClient { get; } - - public string AccountId => Channel.Id; - public Google.Apis.YouTube.v3.Data.Channel Channel { get; private set; } - - HttpClient HttpClient { get; } - - DispatcherTimer timer = new DispatcherTimer(); - - public async Task Deauthenticate() => - await HttpClient.GetAsync($"https://accounts.google.com/o/oauth2/revoke?token={Tokens.AccessToken}"); - - public User(TokenResponse tokens) - { - Tokens = tokens; - - HttpClient = new HttpClient(); - HttpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Tokens.AccessToken); - YoutubeClient = new YoutubeClient(HttpClient); - - timer.Interval = TimeSpan.FromSeconds((int)tokens.ExpiresInSeconds); - timer.Tick += Timer_Tick; - timer.Start(); - } - - async void Timer_Tick(object sender, object e) - { - Tokens = await UserManagement.RefreshToken(); - timer.Interval = TimeSpan.FromSeconds((int)Tokens.ExpiresInSeconds); - timer.Start(); - } - - public async Task Initialize() - { - string responseRaw = await HttpClient.GetStringAsync("https://www.googleapis.com/oauth2/v2/userinfo"); - dynamic response = JsonConvert.DeserializeObject(responseRaw); - - UserInfo = new Userinfoplus - { - Email = this.GuardFromNull((string)response.email), - FamilyName = this.GuardFromNull((string)response.family_name), - Gender = this.GuardFromNull((string)response.gender), - GivenName = this.GuardFromNull((string)response.given_name), - Hd = this.GuardFromNull((string)response.hd), - Id = this.GuardFromNull((string)response.id), - Link = this.GuardFromNull((string)response.link), - Locale = this.GuardFromNull((string)response.locale), - Name = this.GuardFromNull((string)response.name), - Picture = this.GuardFromNull((string)response.picture), - VerifiedEmail = true //As it said in documentation it's always true because it applies to primary e-mail - }; - - string nextToken = null; - do - { - string query = $"https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&maxResults=50&mine=true&order=relevance&access_token={Tokens.AccessToken}{(string.IsNullOrWhiteSpace(nextToken) ? "" : "&pageToken=" + nextToken)}"; - HttpResponseMessage r = await HttpClient.GetAsync(query); - MessageDialog dialog = new MessageDialog(await r.Content.ReadAsStringAsync(), r.StatusCode.ToString()); - await dialog.ShowAsync(); - - responseRaw = await HttpClient.GetStringAsync(query); - response = JsonConvert.DeserializeObject(responseRaw); - nextToken = response.nextPageToken; - foreach (dynamic item in response.items) - Subscriptions.Add(new Subscription - { - Snippet = new SubscriptionSnippet - { - ChannelId = item.channelId, - ChannelTitle = item.channelTitle, - Description = item.description, - PublishedAt = item.publishedAt, - Title = item.title, - Thumbnails = new ThumbnailDetails - { - Default__ = new Thumbnail - { - Height = item.thumbnails["default"].height, - Width = item.thumbnails["default"].width, - Url = item.thumbnails["default"].url, - }, - Medium = new Thumbnail - { - Height = item.thumbnails.medium.height, - Width = item.thumbnails.medium.width, - Url = item.thumbnails.medium.url, - }, - High = new Thumbnail - { - Height = item.thumbnails.high.height, - Width = item.thumbnails.high.width, - Url = item.thumbnails.high.url, - } - }, - ResourceId = new ResourceId - { - ChannelId = item.resourceId.channelId, - Kind = item.resourceId.kind - } - }, - ETag = item.etag, - Id = item.id, - Kind = "youtube#subscription" - }); - } - while (!string.IsNullOrWhiteSpace(nextToken)); - - responseRaw = await HttpClient.GetStringAsync("https://www.googleapis.com/youtube/v3/channels?mine=true&part=contentDetails,snippet,image"); - response = JsonConvert.DeserializeObject(responseRaw); - - Channel = new Google.Apis.YouTube.v3.Data.Channel - { - Kind = "youtube#channel", - ETag = response.items[0].etag, - Id = response.items[0].id, - ContentDetails = new ChannelContentDetails - { - RelatedPlaylists = new ChannelContentDetails.RelatedPlaylistsData - { - Likes = response.items[0].contentDetails.relatedPlaylists.likes, - Favorites = response.items[0].contentDetails.relatedPlaylists.favorites, - Uploads = response.items[0].contentDetails.relatedPlaylists.uploads, - WatchHistory = "HL", - WatchLater = "WL" - } - }, - Snippet = new ChannelSnippet - { - Title = response.items[0].snippet.title, - Description = response.items[0].snippet.description, - CustomUrl = response.items[0].snippet.customUrl, - PublishedAt = response.items[0].snippet.publishedAt, - DefaultLanguage = response.items[0].snippet.defaultLanguage, - Country = response.items[0].snippet.country, - Localized = new ChannelLocalization - { - Description = response.items[0].snippet.localized.description, - Title = response.items[0].snippet.localized.title, - }, - Thumbnails = new ThumbnailDetails - { - Default__ = new Thumbnail - { - Height = response.items[0].snippet.thumbnails["default"].height, - Width = response.items[0].snippet.thumbnails["default"].width, - Url = response.items[0].snippet.thumbnails["default"].url, - }, - Medium = new Thumbnail - { - Height = response.items[0].snippet.thumbnails.medium.height, - Width = response.items[0].snippet.thumbnails.medium.width, - Url = response.items[0].snippet.thumbnails.medium.url, - }, - High = new Thumbnail - { - Height = response.items[0].snippet.thumbnails.high.height, - Width = response.items[0].snippet.thumbnails.high.width, - Url = response.items[0].snippet.thumbnails.high.url, - } - } - }, - BrandingSettings = new ChannelBrandingSettings - { - Channel = new ChannelSettings - { - Country = response.items[0].brandingSettings.channel.country, - DefaultLanguage = response.items[0].brandingSettings.channel.defaultLanguage, - DefaultTab = response.items[0].brandingSettings.channel.defaultTab, - Description = response.items[0].brandingSettings.channel.description, - FeaturedChannelsTitle = response.items[0].brandingSettings.channel.featuredChannelsTitle, - FeaturedChannelsUrls = response.items[0].brandingSettings.channel.featuredChannelsUrls, - Keywords = response.items[0].brandingSettings.channel.keywords, - ModerateComments = response.items[0].brandingSettings.channel.moderateComments, - ProfileColor = response.items[0].brandingSettings.channel.profileColor, - ShowBrowseView = response.items[0].brandingSettings.channel.showBrowseView, - ShowRelatedChannels = response.items[0].brandingSettings.channel.showRelatedChannels, - Title = response.items[0].brandingSettings.channel.title, - TrackingAnalyticsAccountId = response.items[0].brandingSettings.channel.trackingAnalyticsAccountId, - UnsubscribedTrailer = response.items[0].brandingSettings.channel.unsubscribedTrailer - }, - Image = new ImageSettings - { - BannerImageUrl = response.items[0].brandingSettings.image.bannerImageUrl, - BannerMobileImageUrl = response.items[0].brandingSettings.image.bannerMobileImage.Url, - WatchIconImageUrl = response.items[0].brandingSettings.image.watchIconImageUrl, - TrackingImageUrl = response.items[0].brandingSettings.image.trackingImageUrl, - BannerTabletLowImageUrl = response.items[0].brandingSettings.image.bannerTabletLowImageUrl, - BannerTabletImageUrl = response.items[0].brandingSettings.image.bannerTabletImageUrl, - BannerTabletHdImageUrl = response.items[0].brandingSettings.image.bannerTabletHdImageUrl, - BannerTabletExtraHdImageUrl = response.items[0].brandingSettings.image.bannerTabletExtraHdImageUrl, - BannerMobileLowImageUrl = response.items[0].brandingSettings.image.bannerMobileLowImageUrl, - BannerMobileMediumHdImageUrl = response.items[0].brandingSettings.image.bannerMobileMediumHdImageUrl, - BannerMobileHdImageUrl = response.items[0].brandingSettings.image.bannerMobileHdImageUrl, - BannerMobileExtraHdImageUrl = response.items[0].brandingSettings.image.bannerMobileExtraHdImageUrl, - BannerTvLowImageUrl = response.items[0].brandingSettings.image.bannerTvLowImageUrl, - BannerTvImageUrl = response.items[0].brandingSettings.image.bannerTvImageUrl, - BannerTvMediumImageUrl = response.items[0].brandingSettings.image.bannerTvMediumImageUrl, - BannerTvHighImageUrl = response.items[0].brandingSettings.image.bannerTvHighImageUrl, - BannerExternalUrl = response.items[0].brandingSettings.image.bannerExternalUrl - }, - Hints = response.items[0].brandingSettings.hints - } - }; - - - WatchLater = (await YoutubeClient.GetPlaylistAsync("WL")).Videos.ToList(); - WebHistory = (await YoutubeClient.GetPlaylistAsync("HL")).Videos.ToList(); - } - - /// - /// Subscribes or unsibscribes authorized user from the channel - /// - /// The ID of channel which has to be added/removed - /// Returns 'true' if channel is in subscriptions now; 'false' if it's not - public async Task ChangeSubscriptionState(string id) - { - if (Subscriptions.Find(i => i.Snippet.ResourceId.ChannelId == id) is Subscription subscription) - { - try - { - HttpResponseMessage response = await HttpClient.DeleteAsync("https://www.googleapis.com/youtube/v3/subscriptions?id=" + subscription.Id); - if (response.StatusCode != System.Net.HttpStatusCode.NoContent) - return true; - } - catch { return true; } - - SubscriptionsChanged?.Invoke("remove", subscription); - Subscriptions.Remove(subscription); - - return false; - } - else - { - Dictionary body = new Dictionary - { - { "snippet", " { \"resourceId\" : { \"channelId\" : " + id + " } }" } - }; - HttpResponseMessage response = await HttpClient.PostAsync("https://www.googleapis.com/youtube/v3/subscriptions?part=snippet", new FormUrlEncodedContent(body)); - - if (!response.IsSuccessStatusCode) - return false; - - dynamic raw = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); - - Subscription sub = new Subscription - { - Snippet = new SubscriptionSnippet - { - ChannelId = raw.channelId, - ChannelTitle = raw.channelTitle, - Description = raw.description, - PublishedAt = raw.publishedAt, - Title = raw.title, - Thumbnails = new ThumbnailDetails - { - Default__ = new Thumbnail - { - Height = raw.thumbnails["default"].height, - Width = raw.thumbnails["default"].width, - Url = raw.thumbnails["default"].url, - }, - Medium = new Thumbnail - { - Height = raw.thumbnails.medium.height, - Width = raw.thumbnails.medium.width, - Url = raw.thumbnails.medium.url, - }, - High = new Thumbnail - { - Height = raw.thumbnails.high.height, - Width = raw.thumbnails.high.width, - Url = raw.thumbnails.high.url, - } - }, - ResourceId = new ResourceId - { - ChannelId = raw.resourceId.channelId, - Kind = raw.resourceId.channelId - } - }, - ETag = raw.etag, - Id = raw.id, - Kind = "youtube#subscription" - }; - - Subscriptions.Add(sub); - SubscriptionsChanged?.Invoke("add", sub); - - return true; - } - } - - public void Dispose() - { - timer.Stop(); - timer.Tick -= Timer_Tick; - } - } -} diff --git a/FoxTube/Classes/UserManagement.cs b/FoxTube/Classes/UserManagement.cs deleted file mode 100644 index 58fd2f7..0000000 --- a/FoxTube/Classes/UserManagement.cs +++ /dev/null @@ -1,173 +0,0 @@ -using FoxTube.Classes; -using Google.Apis.Auth.OAuth2; -using Google.Apis.Auth.OAuth2.Flows; -using Google.Apis.Auth.OAuth2.Responses; -using Google.Apis.Oauth2.v2.Data; -using Google.Apis.Services; -using Google.Apis.YouTube.v3; -using Microsoft.AppCenter.Analytics; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Windows.Security.Credentials; -using Windows.Storage; -using YoutubeExplode; - -namespace FoxTube -{ - public static class UserManagement - { - static ApplicationDataContainer storage = ApplicationData.Current.LocalSettings; - - public static event AuthorizationChangedEventHandler AuthorizationStateChanged; - public static event SubscriptionChangedEventHandler SubscriptionsChanged; - - static string[] Secrets => new string[5] - { - "1096685398208-bktbnoe59bt69nhnrrb5j0tpld58orsv.apps.googleusercontent.com", - "1096685398208-u4a2pgpcn27c2kb3ud2eck1oh2ot68vs.apps.googleusercontent.com", - "1096685398208-a65ebfpqnhl7u3iipfmfe5cif6j07db3.apps.googleusercontent.com", - "1096685398208-in0gco58ckrumgjuo68st55fvb0ntllj.apps.googleusercontent.com", - "1096685398208-7gd029f6tku4sc756v2338g1f0fu4k2k.apps.googleusercontent.com" - }; - - static YouTubeService NoAuthService { get; } = new YouTubeService(new BaseClientService.Initializer - { - ApiKey = "AIzaSyBgHrCnrlzlVmk0cJKL8RqP9Y8x6XSuk_0", - ApplicationName = "FoxTube" - }); - static YoutubeClient NoAuthClient { get; } = new YoutubeClient(); - - public static YoutubeClient YoutubeClient => Current?.YoutubeClient ?? NoAuthClient; - - public static bool IsAuthorized => Current != null; - - public static User Current { get; set; } - - public static Userinfoplus[] UserInfos { get; private set; } = new Userinfoplus[5]; - static string[] tokens = new string[5]; - - public static async void Initialize() - { - if(storage.Values["users"] != null) - UserInfos = JsonConvert.DeserializeObject(storage.Values["users"] as string); - PasswordVault vault = new PasswordVault(); - foreach (Userinfoplus info in UserInfos) - { - if (info == null) - continue; - PasswordCredential credential = vault.Retrieve("FoxTube", info.Id); - credential.RetrievePassword(); - tokens[UserInfos.ToList().IndexOf(info)] = credential.Password; - } - - if(Settings.SelectedUser >= 0) - { - try { Current = new User(await Authenticator.RefreshToken(Secrets[Settings.SelectedUser], tokens[Settings.SelectedUser])); } - catch { Current = new User(await Authenticator.Authorize(Secrets[Settings.SelectedUser])); } - - await Current.Initialize(); - Current.SubscriptionsChanged += SubscriptionsChanged; - UserInfos[Settings.SelectedUser] = Current.UserInfo; - } - - AuthorizationStateChanged?.Invoke(Settings.SelectedUser > -1); - } - - public static async Task AddItemToWL(string id) - { - - } - - public static async void ChangeAccount(Userinfoplus newUser) - { - Current.Dispose(); - Current.SubscriptionsChanged -= SubscriptionsChanged; - - Current = null; - - Settings.SelectedUser = UserInfos.ToList().IndexOf(newUser); - - try { Current = new User(await Authenticator.RefreshToken(Secrets[Settings.SelectedUser], tokens[Settings.SelectedUser])); } - catch { Current = new User(await Authenticator.Authorize(Secrets[Settings.SelectedUser])); } - - await Current.Initialize(); - Current.SubscriptionsChanged += SubscriptionsChanged; - UserInfos[Settings.SelectedUser] = Current.UserInfo; - - AuthorizationStateChanged?.Invoke(true); - } - - public static async void CreateNew() - { - Analytics.TrackEvent("Initialized authorization sequence"); - try - { - for (int k = 0; k < 5; k++) - if (tokens[k] == null) - { - TokenResponse response = await Authenticator.Authorize(Secrets[k]); - tokens[k] = response.RefreshToken; - Current?.Dispose(); - if (Current != null) - Current.SubscriptionsChanged -= SubscriptionsChanged; - Current = new User(response); - await Current.Initialize(); - Current.SubscriptionsChanged += SubscriptionsChanged; - UserInfos[k] = Current.UserInfo; - - storage.Values["users"] = JsonConvert.SerializeObject(UserInfos); - PasswordVault vault = new PasswordVault(); - vault.Add(new PasswordCredential("FoxTube", Current.UserInfo.Id, response.RefreshToken)); - - Settings.SelectedUser = k; - AuthorizationStateChanged?.Invoke(true); - break; - } - } - catch { } - } - - public static async void Logout() - { - Current.Dispose(); - Current.SubscriptionsChanged -= SubscriptionsChanged; - await Current.Deauthenticate(); - - PasswordVault vault = new PasswordVault(); - vault.Remove(vault.Retrieve("FoxTube", Current.UserInfo.Id)); - UserInfos[Settings.SelectedUser] = null; - tokens[Settings.SelectedUser] = null; - storage.Values["users"] = JsonConvert.SerializeObject(UserInfos); - - Current = null; - - Settings.SelectedUser = -1; - for (int i = 0; i < 5; i++) - if (UserInfos[i] != null) - { - Settings.SelectedUser = i; - break; - } - - if (Settings.SelectedUser >= 0) - { - try { Current = new User(await Authenticator.RefreshToken(Secrets[Settings.SelectedUser], tokens[Settings.SelectedUser])); } - catch { Current = new User(await Authenticator.Authorize(Secrets[Settings.SelectedUser])); } - - await Current.Initialize(); - Current.SubscriptionsChanged += SubscriptionsChanged; - UserInfos[Settings.SelectedUser] = Current.UserInfo; - } - - AuthorizationStateChanged?.Invoke(Settings.SelectedUser > -1); - } - - public static async Task RefreshToken() => - await Authenticator.RefreshToken(Secrets[Settings.SelectedUser], tokens[Settings.SelectedUser]); - } -} diff --git a/FoxTube/Classes/ViewModel.cs b/FoxTube/Classes/ViewModel.cs deleted file mode 100644 index c6aecb1..0000000 --- a/FoxTube/Classes/ViewModel.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Windows.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls; - -namespace FoxTube -{ - public class ViewModel : Page - { - public List PivotItems { get; } = new List(); - - public object Parameter { get; private set; } - - public void PivotChanged(int index) { } - } -} diff --git a/FoxTube/Controls/AccountManager.xaml b/FoxTube/Controls/AccountManager.xaml index d5b6908..8e7dcbf 100644 --- a/FoxTube/Controls/AccountManager.xaml +++ b/FoxTube/Controls/AccountManager.xaml @@ -1,83 +1,63 @@ - + xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls" + Style="{StaticResource AppBarButtonRevealStyle}"> - - - - - - - - + + + - - - - - - - - + + + + + + + - + - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FoxTube/Controls/AccountManager.xaml.cs b/FoxTube/Controls/AccountManager.xaml.cs index 2c0081f..d6a9c1e 100644 --- a/FoxTube/Controls/AccountManager.xaml.cs +++ b/FoxTube/Controls/AccountManager.xaml.cs @@ -1,11 +1,8 @@ -using Google.Apis.Oauth2.v2.Data; -using Microsoft.AppCenter.Analytics; -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; -using Windows.ApplicationModel.Resources; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; @@ -14,86 +11,17 @@ 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.Media.Imaging; using Windows.UI.Xaml.Navigation; // The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 namespace FoxTube.Controls { - public sealed partial class AccountManager : StackPanel + public sealed partial class AccountManager : AppBarButton { - readonly ResourceLoader resources = ResourceLoader.GetForCurrentView("Main"); - public AccountManager() { InitializeComponent(); - - Service.Purchased += (purchased, price) => - { - removeAds.Visibility = purchased ? Visibility.Collapsed : Visibility.Visible; - removeAds.Content = $"{resources.GetString("/Main/adsFree/Content")} ({price})"; - }; } - - void SignIn_Click(object sender, RoutedEventArgs e) => - UserManagement.CreateNew(); - - void Logout_Click(object sender, RoutedEventArgs e) - { - manager.ContextFlyout.Hide(); - UserManagement.Logout(); - } - - public async void Logged() => await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => - { - account.Visibility = Visibility.Collapsed; - - ToolTipService.SetToolTip(manager, $"{UserManagement.Current.UserInfo.Name} ({UserManagement.Current.UserInfo.Email})"); - name.Text = UserManagement.Current.UserInfo.Name; - email.Text = UserManagement.Current.UserInfo.Email; - banner.Source = new BitmapImage(UserManagement.Current.Channel.BrandingSettings.Image.BannerMobileLowImageUrl.ToUri()); - avatar.ProfilePicture = new BitmapImage(UserManagement.Current.UserInfo.Picture.ToUri()) { DecodePixelHeight = 65, DecodePixelWidth = 65 }; - icon.ProfilePicture = new BitmapImage(UserManagement.Current.UserInfo.Picture.ToUri()) { DecodePixelHeight = 25, DecodePixelWidth = 25 }; - - foreach (Userinfoplus user in UserManagement.UserInfos) - if (user != UserManagement.Current.UserInfo) - accountsList.Items.Add(user); - - manager.Visibility = Visibility.Visible; - }); - - public void Quit() - { - manager.Visibility = Visibility.Collapsed; - account.Visibility = Visibility.Visible; - } - - void Manager_Tapped(object sender, TappedRoutedEventArgs e) => - (sender as Microsoft.UI.Xaml.Controls.NavigationViewItem).ContextFlyout.ShowAt(sender as FrameworkElement); - - void Settings_Click(object sender, RoutedEventArgs e) => - Navigation.GoToSettings(); - - void Settings_Click(object sender, TappedRoutedEventArgs e) => - Navigation.GoToSettings(); - - void RemoveAds_Tapped(object sender, TappedRoutedEventArgs e) => - Service.GetPro(); - - void Upload_Tapped(object sender, TappedRoutedEventArgs e) => - Navigation.GoToUploadPage(); - - void MyChannel_Tapped(object sender, TappedRoutedEventArgs e) => - Navigation.GoToChannel(UserManagement.Current.AccountId); - - void AccountsList_ItemClick(object sender, ItemClickEventArgs e) => - UserManagement.ChangeAccount(e.ClickedItem as Userinfoplus); - - void AddAccount_Tapped(object sender, TappedRoutedEventArgs e) => - UserManagement.CreateNew(); - - void Logout_Tapped(object sender, TappedRoutedEventArgs e) => - UserManagement.Logout(); } } diff --git a/FoxTube/Controls/Cards/AdvertCard.xaml b/FoxTube/Controls/Cards/AdvertCard.xaml new file mode 100644 index 0000000..9567cf9 --- /dev/null +++ b/FoxTube/Controls/Cards/AdvertCard.xaml @@ -0,0 +1,59 @@ + + + + + + diff --git a/FoxTube/Controls/Cards/AdvertCard.xaml.cs b/FoxTube/Controls/Cards/AdvertCard.xaml.cs new file mode 100644 index 0000000..c861c4d --- /dev/null +++ b/FoxTube/Controls/Cards/AdvertCard.xaml.cs @@ -0,0 +1,14 @@ +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace FoxTube.Controls.Cards +{ + public sealed partial class AdvertCard : UserControl + { + public AdvertCard() => + InitializeComponent(); + + void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) => + Height = .75 * ActualWidth; + } +} diff --git a/FoxTube/Controls/Cards/ChannelCard.xaml b/FoxTube/Controls/Cards/ChannelCard.xaml new file mode 100644 index 0000000..a7dbe48 --- /dev/null +++ b/FoxTube/Controls/Cards/ChannelCard.xaml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FoxTube/Controls/Cards/ChannelCard.xaml.cs b/FoxTube/Controls/Cards/ChannelCard.xaml.cs new file mode 100644 index 0000000..877930b --- /dev/null +++ b/FoxTube/Controls/Cards/ChannelCard.xaml.cs @@ -0,0 +1,14 @@ +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace FoxTube.Controls.Cards +{ + public sealed partial class ChannelCard : UserControl + { + public ChannelCard() => + InitializeComponent(); + + void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) => + Height = .75 * ActualWidth; + } +} diff --git a/FoxTube/Controls/Cards/PlaylistCard.xaml b/FoxTube/Controls/Cards/PlaylistCard.xaml new file mode 100644 index 0000000..07aff01 --- /dev/null +++ b/FoxTube/Controls/Cards/PlaylistCard.xaml @@ -0,0 +1,69 @@ + + + + + + diff --git a/FoxTube/Controls/Cards/PlaylistCard.xaml.cs b/FoxTube/Controls/Cards/PlaylistCard.xaml.cs new file mode 100644 index 0000000..aff5e38 --- /dev/null +++ b/FoxTube/Controls/Cards/PlaylistCard.xaml.cs @@ -0,0 +1,14 @@ +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace FoxTube.Controls.Cards +{ + public sealed partial class PlaylistCard : UserControl + { + public PlaylistCard() => + InitializeComponent(); + + void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) => + Height = .75 * ActualWidth; + } +} diff --git a/FoxTube/Controls/Cards/VideoCard.xaml b/FoxTube/Controls/Cards/VideoCard.xaml new file mode 100644 index 0000000..1c71fd6 --- /dev/null +++ b/FoxTube/Controls/Cards/VideoCard.xaml @@ -0,0 +1,96 @@ + + + + + + diff --git a/FoxTube/Controls/Cards/VideoCard.xaml.cs b/FoxTube/Controls/Cards/VideoCard.xaml.cs new file mode 100644 index 0000000..abc82d0 --- /dev/null +++ b/FoxTube/Controls/Cards/VideoCard.xaml.cs @@ -0,0 +1,14 @@ +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace FoxTube.Controls.Cards +{ + public sealed partial class VideoCard : UserControl + { + public VideoCard() => + InitializeComponent(); + + void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) => + Height = .75 * ActualWidth; + } +} diff --git a/FoxTube/Controls/ContentFrame.xaml b/FoxTube/Controls/ContentFrame.xaml deleted file mode 100644 index 6b1eb67..0000000 --- a/FoxTube/Controls/ContentFrame.xaml +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -