Anyway, I am the only one who reads this, right?
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
using FoxTube.Core.Models;
|
||||
using FoxTube.Core.Models.Inbox;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Data.Xml.Dom;
|
||||
using Windows.Storage;
|
||||
using Windows.UI.Notifications;
|
||||
|
||||
namespace FoxTube.Core.Helpers
|
||||
{
|
||||
public static class Inbox
|
||||
{
|
||||
static HttpClient client = new HttpClient();
|
||||
static ApplicationDataContainer storage = ApplicationData.Current.RoamingSettings;
|
||||
|
||||
public static async Task<List<InboxItem>>GetInbox()
|
||||
{
|
||||
List<InboxItem> list = new List<InboxItem>();
|
||||
list.AddRange(await GetMessages());
|
||||
list.AddRange(await GetChangelogs());
|
||||
list.OrderByDescending(i => i.TimeStamp);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public static async void PushNew()
|
||||
{
|
||||
try
|
||||
{
|
||||
// TODO: Add backend
|
||||
HttpResponseMessage response = await client.GetAsync("https://xfox111.net/FoxTube/Messages?toast=true&publishedAfter=" + storage.Values["Inbox.lastCheck"] + "&lang=" + Settings.Language);
|
||||
|
||||
if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
|
||||
return;
|
||||
|
||||
XmlDocument doc = new XmlDocument();
|
||||
doc.LoadXml(await response.Content.ReadAsStringAsync());
|
||||
foreach (IXmlNode toast in doc.LastChild.ChildNodes)
|
||||
ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toast.GetXml().ToXml()));
|
||||
|
||||
storage.Values["Inbox.lastCheck"] = DateTime.Now;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Metrics.AddEvent("Unable to retrieve developers' messages",
|
||||
("Exception", e.GetType().ToString()),
|
||||
("Message", e.Message),
|
||||
("App version", Metrics.CurrentVersion),
|
||||
("StackTrace", e.StackTrace));
|
||||
}
|
||||
}
|
||||
|
||||
static async Task<List<Changelog>>GetChangelogs()
|
||||
{
|
||||
List<Changelog> list = new List<Changelog>();
|
||||
try
|
||||
{
|
||||
// TODO: Add backend
|
||||
HttpResponseMessage response = await client.GetAsync("https://xfox111.net/FoxTube/Changelogs?lang=" + Settings.Language);
|
||||
|
||||
if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
|
||||
return list;
|
||||
|
||||
dynamic responseObj = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
|
||||
foreach (var item in responseObj)
|
||||
list.Add(new Changelog(item.Version, item.Content, item.Description, item.TimeStamp));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Metrics.AddEvent("Unable to retrieve changelogs",
|
||||
("Exception", e.GetType().ToString()),
|
||||
("Message", e.Message),
|
||||
("App version", Metrics.CurrentVersion),
|
||||
("StackTrace", e.StackTrace));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
static async Task<List<DeveloperMessage>>GetMessages()
|
||||
{
|
||||
List<DeveloperMessage> list = new List<DeveloperMessage>();
|
||||
try
|
||||
{
|
||||
// TODO: Add backend
|
||||
HttpResponseMessage response = await client.GetAsync("https://xfox111.net/FoxTube/Messages?lang=" + Settings.Language);
|
||||
|
||||
if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
|
||||
return list;
|
||||
|
||||
dynamic responseObj = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
|
||||
foreach (var item in responseObj)
|
||||
list.Add(new DeveloperMessage(item.Id, item.Title, item.Content, item.TimeStamp, item.Avatar));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Metrics.AddEvent("Unable to retrieve developers' messages",
|
||||
("Exception", e.GetType().ToString()),
|
||||
("Message", e.Message),
|
||||
("App version", Metrics.CurrentVersion),
|
||||
("StackTrace", e.StackTrace));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fires toast notification with the last changelog content
|
||||
/// </summary>
|
||||
public static async void PushChangelog()
|
||||
{
|
||||
try
|
||||
{
|
||||
// TODO: Add backend
|
||||
Settings.LastReviewedVersion = Metrics.CurrentVersion;
|
||||
|
||||
HttpResponseMessage response = await client.GetAsync("https://xfox111.net/FoxTube/Changelogs?toast=true&lang=" + Settings.Language + "&version=" + Metrics.CurrentVersion);
|
||||
|
||||
if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
|
||||
return;
|
||||
|
||||
ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification((await response.Content.ReadAsStringAsync()).ToXml()));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Metrics.AddEvent("Unable to retrieve changelog",
|
||||
("Exception", e.GetType().ToString()),
|
||||
("Message", e.Message),
|
||||
("App version", Metrics.CurrentVersion),
|
||||
("StackTrace", e.StackTrace));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user