c58d846057
Related Work Items: #416, #422, #423, #424
46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using Newtonsoft.Json;
|
|
using System.Threading.Tasks;
|
|
using System.Net.Http;
|
|
using Windows.UI.Xaml.Data;
|
|
using FoxTube.Services;
|
|
using FoxTube.Utils;
|
|
|
|
namespace FoxTube.Models.Collections
|
|
{
|
|
public class InboxCollection : ViewCollection<InboxItem>
|
|
{
|
|
private int _pageNumber = 0;
|
|
private HttpClient _httpClient = new HttpClient();
|
|
|
|
public override async Task<LoadMoreItemsResult> LoadItems()
|
|
{
|
|
// TODO: Add backend
|
|
HttpResponseMessage response = await _httpClient.GetAsync($"https://xfox111.net/API/FoxTube/Inbox?" +
|
|
$"lang={Storage.GetValue<string>(Storage.Settings.UILanguage)}&" +
|
|
$"currentVersion={Metrics.CurrentVersion}&" +
|
|
$"itemsCount={ItemsPerRequest}&" +
|
|
$"iteration={_pageNumber}");
|
|
|
|
if (!response.IsSuccessStatusCode || response.StatusCode == System.Net.HttpStatusCode.NoContent)
|
|
{
|
|
HasMoreItems = false;
|
|
return new LoadMoreItemsResult
|
|
{
|
|
Count = 0
|
|
};
|
|
}
|
|
|
|
InboxItem[] newItems = JsonConvert.DeserializeObject<InboxItem[]>(await response.Content.ReadAsStringAsync());
|
|
foreach (InboxItem item in newItems)
|
|
Items.Add(item);
|
|
|
|
_pageNumber++;
|
|
|
|
return new LoadMoreItemsResult
|
|
{
|
|
Count = (uint)newItems.Length
|
|
};
|
|
}
|
|
}
|
|
}
|