feature: login support for Android

feature: display profile information
This commit is contained in:
2020-05-18 13:29:51 +08:00
parent a13c1deca6
commit d743e5e393
25 changed files with 473 additions and 85 deletions

View File

@@ -73,9 +73,11 @@ namespace Pixiview.Illust
protected readonly Command<IllustItem> commandIllustImageTapped;
protected DateTime lastUpdated;
protected double topOffset;
protected string lastError;
private T illustData;
private ParallelTask task;
private bool isTrying;
public IllustCollectionPage()
{
@@ -530,15 +532,31 @@ namespace Pixiview.Illust
illustData = DoLoadIllustData(force);
if (illustData == null)
{
AppShell.Current.PushToLogin(()=>
if (isTrying)
{
StartLoad(true);
});
MainThread.BeginInvokeOnMainThread(() =>
{
DisplayAlert(ResourceHelper.Title,
ResourceHelper.FailedResponse + "\n" + lastError?.Substring(0, 40),
ResourceHelper.Ok);
});
isTrying = false;
}
else
{
isTrying = true;
AppShell.Current.PushToLogin(() =>
{
Task.Run(() => AppShell.Current.DoLoginInformation(true));
StartLoad(true);
});
}
//App.DebugError("illusts.load", "failed to load illusts data.");
IsLoading = false;
IsBottomLoading = false;
return;
}
isTrying = false;
if (force && IsFavoriteVisible)
{
var now = DateTime.Now;

View File

@@ -160,7 +160,7 @@ namespace Pixiview.Illust
protected override IllustRankingData DoLoadIllustData(bool force)
{
var data = Stores.LoadIllustRankingData(lastQueryKey, queryDate, currentPage, force);
var data = Stores.LoadIllustRankingData(lastQueryKey, queryDate, currentPage, out lastError, force);
if (data != null)
{
if (int.TryParse(data.next, out int next))

View File

@@ -331,16 +331,23 @@ namespace Pixiview.Illust
}
Illusts = items;
Task.Run(DoLoadImages);
Task.Run(() => DoLoadImages());
}
private void DoLoadImages()
private void DoLoadImages(bool force = false)
{
var illustItem = IllustItem;
var pages = Stores.LoadIllustPageData(illustItem.Id);
var pages = Stores.LoadIllustPageData(illustItem.Id, out string error, force);
if (pages == null)
{
App.DebugError("illustPage.load", $"failed to load illust page data, id: {illustItem.Id}");
if (error != null)
{
MainThread.BeginInvokeOnMainThread(() =>
{
DisplayAlert(ResourceHelper.Title, error, ResourceHelper.Ok);
});
}
return;
}
var items = Illusts;
@@ -385,9 +392,13 @@ namespace Pixiview.Illust
var count = illustItem.PageCount;
pageCount = count;
Title = illustItem.Title;
IsPageVisible = count > 1;
IsAnimateSliderVisible = illustItem.IsAnimeVisible;
ProgressVisible = count > 1;
if (count > 1)
{
IsPageVisible = true;
ProgressVisible = true;
PagePositionText = $"1/{count}";
}
});
if (preload.user.TryGetValue(illust.userId, out var user))
{
@@ -423,6 +434,12 @@ namespace Pixiview.Illust
private void DoLoadImage(int index, bool force = false)
{
var items = Illusts;
if (index == 0 && force)
{
// error, refresh all
Task.Run(() => DoLoadImages(true));
return;
}
if (index < 0 || index >= items.Length)
{
App.DebugPrint($"invalid index: {index}");