Archived
1
0
This repository has been archived on 2026-04-22. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
FoxTube/FoxTube/Pages/History.xaml.cs
T
2019-06-06 18:42:47 +03:00

170 lines
5.6 KiB
C#

using FoxTube.Controls;
using Microsoft.AppCenter.Analytics;
using System;
using System.Collections.Generic;
using Windows.ApplicationModel.Resources;
using Windows.System;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace FoxTube.Pages
{
/// <summary>
/// YouTube history page
/// </summary>
public sealed partial class History : Page, INavigationPage
{
public object Parameter { get; set; } = null;
int page = 1;
int webPage = 0;
public History()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
Parameter = e.Parameter;
Initialize();
Methods.MainPage.PageContent.LoadingPage.Close();
}
public async void Initialize()
{
Methods.MainPage.VideoContent.LoadingPage.Close();
try
{
loading.Refresh();
await Dispatcher.RunIdleAsync((command) =>
{
for (int k = 0; k < 25 && k < HistorySet.Items.Count; k++)
list.Add(new VideoCard(HistorySet.Items[k].Id, "HL"));
if (list.Count >= HistorySet.Items.Count)
more.Visibility = Visibility.Collapsed;
if (list.Count == 0)
clear.Visibility = Visibility.Collapsed;
});
loading.Close();
}
catch (Exception e)
{
loading.Error(e.GetType().ToString(), e.Message);
Analytics.TrackEvent("Local history loading error", new Dictionary<string, string>()
{
{ "Exception", e.GetType().ToString() },
{ "Message", e.Message },
{ "StackTrace", e.StackTrace }
});
}
}
private async void toBrowser_Click(object sender, RoutedEventArgs e)
{
await Launcher.LaunchUriAsync("https://www.youtube.com/feed/history".ToUri());
}
private void Refresh_Click(object sender, RoutedEventArgs e)
{
Methods.MainPage.VideoContent.Refresh();
}
private async void ShowMore_Clicked()
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
for (int k = 25 * page++; k < 25 * page && k < HistorySet.Items.Count; k++)
list.Add(new VideoCard(HistorySet.Items[k].Id, "HL"));
if (list.Count >= HistorySet.Items.Count)
more.Visibility = Visibility.Collapsed;
else
more.Complete();
});
}
private async void Clear_Click(object sender, RoutedEventArgs e)
{
ResourceLoader resources = ResourceLoader.GetForCurrentView("Playlist");
MessageDialog dialog = new MessageDialog(resources.GetString("/Playlist/historyClear/Body"), resources.GetString("/Playlist/historyClear/Header"));
dialog.Commands.Add(new UICommand(resources.GetString("/Playlist/no")));
dialog.Commands.Add(new UICommand(resources.GetString("/Playlist/yes"), (command) =>
{
HistorySet.Clear();
Refresh_Click(this, null);
}));
dialog.CancelCommandIndex = 0;
dialog.DefaultCommandIndex = 1;
await dialog.ShowAsync();
}
private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(webPage == 0)
{
webPage++;
LoadWeb();
}
}
async void LoadWeb()
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
{
try
{
websiteLoading.Refresh();
SecretsVault.History = await Methods.GetHistory();
for (int k = 0; k < 25 && k < SecretsVault.History.Count; k++)
websiteList.Add(new VideoCard(SecretsVault.History[k], "HL"));
if (websiteList.Count >= SecretsVault.History.Count)
websiteMore.Visibility = Visibility.Collapsed;
websiteLoading.Close();
}
catch (Exception e)
{
websiteLoading.Error(e.GetType().ToString(), e.Message);
Analytics.TrackEvent("History loading error", new Dictionary<string, string>()
{
{ "Exception", e.GetType().ToString() },
{ "Message", e.Message },
{ "StackTrace", e.StackTrace }
});
}
});
}
private async void WebsiteMore_Clicked()
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
for (int k = 25 * webPage++; k < 25 * webPage && k < SecretsVault.History.Count; k++)
websiteList.Add(new VideoCard(SecretsVault.History[k], "HL"));
if (websiteList.Count >= SecretsVault.History.Count)
websiteMore.Visibility = Visibility.Collapsed;
else
websiteMore.Complete();
});
}
public void Delete (VideoCard item)
{
list.DeleteItem(item);
}
}
}