favorite issue fix.
This commit is contained in:
parent
a553b156f7
commit
c60e3a6445
@ -18,7 +18,7 @@
|
|||||||
<DefineConstants>DEBUG;</DefineConstants>
|
<DefineConstants>DEBUG;</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<CodesignKey>Apple Development: Li Chen (5559SN7Z38)</CodesignKey>
|
<CodesignKey>Apple Distribution: Li Chen (7HSM5CKPJ2)</CodesignKey>
|
||||||
<MtouchDebug>true</MtouchDebug>
|
<MtouchDebug>true</MtouchDebug>
|
||||||
<MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
|
<MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
|
||||||
<MtouchFastDev>true</MtouchFastDev>
|
<MtouchFastDev>true</MtouchFastDev>
|
||||||
@ -28,6 +28,7 @@
|
|||||||
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
|
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
|
||||||
<DeviceSpecificBuild>false</DeviceSpecificBuild>
|
<DeviceSpecificBuild>false</DeviceSpecificBuild>
|
||||||
<MtouchVerbosity></MtouchVerbosity>
|
<MtouchVerbosity></MtouchVerbosity>
|
||||||
|
<CodesignProvision>Gallery.Extensions.Ad-Hoc</CodesignProvision>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
@ -68,7 +69,7 @@
|
|||||||
<DefineConstants>DEBUG;</DefineConstants>
|
<DefineConstants>DEBUG;</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<CodesignKey>Apple Development: Li Chen (5559SN7Z38)</CodesignKey>
|
<CodesignKey>Apple Distribution: Li Chen (7HSM5CKPJ2)</CodesignKey>
|
||||||
<DeviceSpecificBuild>true</DeviceSpecificBuild>
|
<DeviceSpecificBuild>true</DeviceSpecificBuild>
|
||||||
<MtouchDebug>true</MtouchDebug>
|
<MtouchDebug>true</MtouchDebug>
|
||||||
<MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
|
<MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
|
||||||
@ -80,6 +81,7 @@
|
|||||||
<MtouchArch>ARM64</MtouchArch>
|
<MtouchArch>ARM64</MtouchArch>
|
||||||
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
|
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
|
||||||
<MtouchVerbosity></MtouchVerbosity>
|
<MtouchVerbosity></MtouchVerbosity>
|
||||||
|
<CodesignProvision>Gallery.Extensions.Ad-Hoc</CodesignProvision>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
@ -32,6 +32,7 @@ namespace Gallery.Utils
|
|||||||
[JsonInclude]
|
[JsonInclude]
|
||||||
public string illustTitle;
|
public string illustTitle;
|
||||||
[JsonInclude]
|
[JsonInclude]
|
||||||
|
[JsonConverter(typeof(StringConverter))]
|
||||||
public string id;
|
public string id;
|
||||||
[JsonInclude]
|
[JsonInclude]
|
||||||
public string title;
|
public string title;
|
||||||
@ -46,6 +47,7 @@ namespace Gallery.Utils
|
|||||||
[JsonInclude]
|
[JsonInclude]
|
||||||
public string[] tags;
|
public string[] tags;
|
||||||
[JsonInclude]
|
[JsonInclude]
|
||||||
|
[JsonConverter(typeof(StringConverter))]
|
||||||
public string userId;
|
public string userId;
|
||||||
[JsonInclude]
|
[JsonInclude]
|
||||||
public string userName;
|
public string userName;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System.Linq;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Gallery.Illust;
|
using Gallery.Illust;
|
||||||
@ -239,6 +240,10 @@ namespace Gallery.Utils
|
|||||||
{
|
{
|
||||||
return reader.GetString();
|
return reader.GetString();
|
||||||
}
|
}
|
||||||
|
else if (reader.TokenType == JsonTokenType.Number)
|
||||||
|
{
|
||||||
|
return reader.GetInt64().ToString();
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,4 +252,118 @@ namespace Gallery.Utils
|
|||||||
throw new System.NotImplementedException();
|
throw new System.NotImplementedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class FavoriteListConverter : JsonConverter<FavoriteList>
|
||||||
|
{
|
||||||
|
public override FavoriteList Read(ref Utf8JsonReader reader, System.Type typeToConvert, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
var list = new FavoriteList();
|
||||||
|
if (reader.TokenType != JsonTokenType.StartArray)
|
||||||
|
{
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
var item = new IllustItem();
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
if (reader.TokenType == JsonTokenType.EndArray)
|
||||||
|
{
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
if (reader.TokenType == JsonTokenType.EndObject)
|
||||||
|
{
|
||||||
|
list.Add(item);
|
||||||
|
item = new IllustItem();
|
||||||
|
}
|
||||||
|
else if (reader.TokenType == JsonTokenType.PropertyName)
|
||||||
|
{
|
||||||
|
var name = reader.GetString();
|
||||||
|
reader.Read();
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case nameof(IllustItem.Title): item.Title = reader.GetString(); break;
|
||||||
|
case nameof(IllustItem.Id): item.Id = reader.GetString(); break;
|
||||||
|
case nameof(IllustItem.BookmarkId): item.BookmarkId = reader.GetString(); break;
|
||||||
|
case nameof(IllustItem.FavoriteDateUtc): item.FavoriteDateUtc = reader.GetDateTime(); break;
|
||||||
|
case nameof(IllustItem.ImageUrl): item.ImageUrl = reader.GetString(); break;
|
||||||
|
case nameof(IllustItem.IsRestrict): item.IsRestrict = reader.GetBoolean(); break;
|
||||||
|
case nameof(IllustItem.Tags):
|
||||||
|
if (reader.TokenType == JsonTokenType.StartArray)
|
||||||
|
{
|
||||||
|
var tags = new List<string>();
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
if (reader.TokenType == JsonTokenType.EndArray)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (reader.TokenType == JsonTokenType.String)
|
||||||
|
{
|
||||||
|
tags.Add(reader.GetString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
item.Tags = tags.ToArray();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nameof(IllustItem.ProfileUrl): item.ProfileUrl = reader.GetString(); break;
|
||||||
|
case nameof(IllustItem.UserId): item.UserId = reader.GetString(); break;
|
||||||
|
case nameof(IllustItem.UserName): item.UserName = reader.GetString(); break;
|
||||||
|
case nameof(IllustItem.Width): item.Width = reader.GetInt32(); break;
|
||||||
|
case nameof(IllustItem.Height): item.Height = reader.GetInt32(); break;
|
||||||
|
case nameof(IllustItem.PageCount): item.PageCount = reader.GetInt32(); break;
|
||||||
|
case nameof(IllustItem.ImageHeightValue): item.ImageHeightValue = reader.GetDouble(); break;
|
||||||
|
case nameof(IllustItem.YesRank): item.YesRank = reader.GetInt32(); break;
|
||||||
|
case nameof(IllustItem.RatingCount): item.RatingCount = reader.GetInt32(); break;
|
||||||
|
case nameof(IllustItem.ViewCount): item.ViewCount = reader.GetInt32(); break;
|
||||||
|
case nameof(IllustItem.UploadTimestamp): item.UploadTimestamp = reader.GetInt64(); break;
|
||||||
|
case nameof(IllustItem.IllustType): item.IllustType = (IllustType)reader.GetInt32(); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new JsonException("unexpected favorite list ending");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Write(Utf8JsonWriter writer, FavoriteList value, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
writer.WriteStartArray();
|
||||||
|
if (value != null)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < value.Count; i++)
|
||||||
|
{
|
||||||
|
var item = value[i];
|
||||||
|
writer.WriteStartObject();
|
||||||
|
writer.WriteString(nameof(IllustItem.Title), item.Title);
|
||||||
|
writer.WriteString(nameof(IllustItem.Id), item.Id);
|
||||||
|
writer.WriteString(nameof(IllustItem.BookmarkId), item.BookmarkId);
|
||||||
|
writer.WriteString(nameof(IllustItem.FavoriteDateUtc), item.FavoriteDateUtc);
|
||||||
|
writer.WriteString(nameof(IllustItem.ImageUrl), item.ImageUrl);
|
||||||
|
writer.WriteBoolean(nameof(IllustItem.IsRestrict), item.IsRestrict);
|
||||||
|
if (item.Tags != null)
|
||||||
|
{
|
||||||
|
writer.WritePropertyName(nameof(IllustItem.Tags));
|
||||||
|
writer.WriteStartArray();
|
||||||
|
for (var n = 0; n < item.Tags.Length; n++)
|
||||||
|
{
|
||||||
|
writer.WriteStringValue(item.Tags[n]);
|
||||||
|
}
|
||||||
|
writer.WriteEndArray();
|
||||||
|
}
|
||||||
|
writer.WriteString(nameof(IllustItem.ProfileUrl), item.ProfileUrl);
|
||||||
|
writer.WriteString(nameof(IllustItem.UserId), item.UserId);
|
||||||
|
writer.WriteString(nameof(IllustItem.UserName), item.UserName);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.Width), item.Width);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.Height), item.Height);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.PageCount), item.PageCount);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.ImageHeightValue), item.ImageHeightValue);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.YesRank), item.YesRank);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.RatingCount), item.RatingCount);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.ViewCount), item.ViewCount);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.UploadTimestamp), item.UploadTimestamp);
|
||||||
|
writer.WriteNumber(nameof(IllustItem.IllustType), (int)item.IllustType);
|
||||||
|
writer.WriteEndObject();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
writer.WriteEndArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -516,10 +516,20 @@ namespace Gallery.Utils
|
|||||||
null,
|
null,
|
||||||
string.Format(Configs.UrlFavoriteList, userId, offset, 48),
|
string.Format(Configs.UrlFavoriteList, userId, offset, 48),
|
||||||
string.Format(Configs.RefererFavorites, userId),
|
string.Format(Configs.RefererFavorites, userId),
|
||||||
|
#if DEBUG
|
||||||
|
out string error);
|
||||||
|
|
||||||
|
if (error != null)
|
||||||
|
{
|
||||||
|
App.DebugPrint($"error to deserialize json: {error}");
|
||||||
|
}
|
||||||
|
#else
|
||||||
out _);
|
out _);
|
||||||
|
#endif
|
||||||
if (result == null || result.error)
|
if (result == null || result.error)
|
||||||
{
|
{
|
||||||
App.DebugPrint($"error when load favorites data: {result?.message}");
|
App.DebugPrint($"error when load favorites data: {result?.message}");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -534,7 +544,7 @@ namespace Gallery.Utils
|
|||||||
list.AddRange(result.body.works.Select(i => i.ConvertToItem()));
|
list.AddRange(result.body.works.Select(i => i.ConvertToItem()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list.Where(l => l != null).ToArray();
|
return list.Where(l => l != null && l.ProfileUrl != null).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ImageSource LoadIllustImage(string url)
|
public static ImageSource LoadIllustImage(string url)
|
||||||
@ -684,120 +694,6 @@ namespace Gallery.Utils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class FavoriteListConverter : JsonConverter<FavoriteList>
|
|
||||||
{
|
|
||||||
public override FavoriteList Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
|
||||||
{
|
|
||||||
var list = new FavoriteList();
|
|
||||||
if (reader.TokenType != JsonTokenType.StartArray)
|
|
||||||
{
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
var item = new IllustItem();
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
if (reader.TokenType == JsonTokenType.EndArray)
|
|
||||||
{
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
if (reader.TokenType == JsonTokenType.EndObject)
|
|
||||||
{
|
|
||||||
list.Add(item);
|
|
||||||
item = new IllustItem();
|
|
||||||
}
|
|
||||||
else if (reader.TokenType == JsonTokenType.PropertyName)
|
|
||||||
{
|
|
||||||
var name = reader.GetString();
|
|
||||||
reader.Read();
|
|
||||||
switch (name)
|
|
||||||
{
|
|
||||||
case nameof(IllustItem.Title): item.Title = reader.GetString(); break;
|
|
||||||
case nameof(IllustItem.Id): item.Id = reader.GetString(); break;
|
|
||||||
case nameof(IllustItem.BookmarkId): item.BookmarkId = reader.GetString(); break;
|
|
||||||
case nameof(IllustItem.FavoriteDateUtc): item.FavoriteDateUtc = reader.GetDateTime(); break;
|
|
||||||
case nameof(IllustItem.ImageUrl): item.ImageUrl = reader.GetString(); break;
|
|
||||||
case nameof(IllustItem.IsRestrict): item.IsRestrict = reader.GetBoolean(); break;
|
|
||||||
case nameof(IllustItem.Tags):
|
|
||||||
if (reader.TokenType == JsonTokenType.StartArray)
|
|
||||||
{
|
|
||||||
var tags = new List<string>();
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
if (reader.TokenType == JsonTokenType.EndArray)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (reader.TokenType == JsonTokenType.String)
|
|
||||||
{
|
|
||||||
tags.Add(reader.GetString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
item.Tags = tags.ToArray();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case nameof(IllustItem.ProfileUrl): item.ProfileUrl = reader.GetString(); break;
|
|
||||||
case nameof(IllustItem.UserId): item.UserId = reader.GetString(); break;
|
|
||||||
case nameof(IllustItem.UserName): item.UserName = reader.GetString(); break;
|
|
||||||
case nameof(IllustItem.Width): item.Width = reader.GetInt32(); break;
|
|
||||||
case nameof(IllustItem.Height): item.Height = reader.GetInt32(); break;
|
|
||||||
case nameof(IllustItem.PageCount): item.PageCount = reader.GetInt32(); break;
|
|
||||||
case nameof(IllustItem.ImageHeightValue): item.ImageHeightValue = reader.GetDouble(); break;
|
|
||||||
case nameof(IllustItem.YesRank): item.YesRank = reader.GetInt32(); break;
|
|
||||||
case nameof(IllustItem.RatingCount): item.RatingCount = reader.GetInt32(); break;
|
|
||||||
case nameof(IllustItem.ViewCount): item.ViewCount = reader.GetInt32(); break;
|
|
||||||
case nameof(IllustItem.UploadTimestamp): item.UploadTimestamp = reader.GetInt64(); break;
|
|
||||||
case nameof(IllustItem.IllustType): item.IllustType = (IllustType)reader.GetInt32(); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new JsonException("unexpected favorite list ending");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Write(Utf8JsonWriter writer, FavoriteList value, JsonSerializerOptions options)
|
|
||||||
{
|
|
||||||
writer.WriteStartArray();
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
for (var i = 0; i < value.Count; i++)
|
|
||||||
{
|
|
||||||
var item = value[i];
|
|
||||||
writer.WriteStartObject();
|
|
||||||
writer.WriteString(nameof(IllustItem.Title), item.Title);
|
|
||||||
writer.WriteString(nameof(IllustItem.Id), item.Id);
|
|
||||||
writer.WriteString(nameof(IllustItem.BookmarkId), item.BookmarkId);
|
|
||||||
writer.WriteString(nameof(IllustItem.FavoriteDateUtc), item.FavoriteDateUtc);
|
|
||||||
writer.WriteString(nameof(IllustItem.ImageUrl), item.ImageUrl);
|
|
||||||
writer.WriteBoolean(nameof(IllustItem.IsRestrict), item.IsRestrict);
|
|
||||||
if (item.Tags != null)
|
|
||||||
{
|
|
||||||
writer.WritePropertyName(nameof(IllustItem.Tags));
|
|
||||||
writer.WriteStartArray();
|
|
||||||
for (var n = 0; n < item.Tags.Length; n++)
|
|
||||||
{
|
|
||||||
writer.WriteStringValue(item.Tags[n]);
|
|
||||||
}
|
|
||||||
writer.WriteEndArray();
|
|
||||||
}
|
|
||||||
writer.WriteString(nameof(IllustItem.ProfileUrl), item.ProfileUrl);
|
|
||||||
writer.WriteString(nameof(IllustItem.UserId), item.UserId);
|
|
||||||
writer.WriteString(nameof(IllustItem.UserName), item.UserName);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.Width), item.Width);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.Height), item.Height);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.PageCount), item.PageCount);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.ImageHeightValue), item.ImageHeightValue);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.YesRank), item.YesRank);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.RatingCount), item.RatingCount);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.ViewCount), item.ViewCount);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.UploadTimestamp), item.UploadTimestamp);
|
|
||||||
writer.WriteNumber(nameof(IllustItem.IllustType), (int)item.IllustType);
|
|
||||||
writer.WriteEndObject();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
writer.WriteEndArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum SyncType
|
public enum SyncType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user