diff --git a/Gallery.iOS.OpenExtension/Gallery.iOS.OpenExtension.csproj b/Gallery.iOS.OpenExtension/Gallery.iOS.OpenExtension.csproj index 895f7c7..3ccbc93 100644 --- a/Gallery.iOS.OpenExtension/Gallery.iOS.OpenExtension.csproj +++ b/Gallery.iOS.OpenExtension/Gallery.iOS.OpenExtension.csproj @@ -18,7 +18,7 @@ DEBUG; prompt 4 - Apple Development: Li Chen (5559SN7Z38) + Apple Distribution: Li Chen (7HSM5CKPJ2) true true true @@ -28,6 +28,7 @@ NSUrlSessionHandler false + Gallery.Extensions.Ad-Hoc pdbonly @@ -68,7 +69,7 @@ DEBUG; prompt 4 - Apple Development: Li Chen (5559SN7Z38) + Apple Distribution: Li Chen (7HSM5CKPJ2) true true true @@ -80,6 +81,7 @@ ARM64 NSUrlSessionHandler + Gallery.Extensions.Ad-Hoc diff --git a/Gallery/Utils/IllustData.cs b/Gallery/Utils/IllustData.cs index 012d5f6..ee46534 100644 --- a/Gallery/Utils/IllustData.cs +++ b/Gallery/Utils/IllustData.cs @@ -32,6 +32,7 @@ namespace Gallery.Utils [JsonInclude] public string illustTitle; [JsonInclude] + [JsonConverter(typeof(StringConverter))] public string id; [JsonInclude] public string title; @@ -46,6 +47,7 @@ namespace Gallery.Utils [JsonInclude] public string[] tags; [JsonInclude] + [JsonConverter(typeof(StringConverter))] public string userId; [JsonInclude] public string userName; diff --git a/Gallery/Utils/IllustLegacy.cs b/Gallery/Utils/IllustLegacy.cs index 11b9349..7954474 100644 --- a/Gallery/Utils/IllustLegacy.cs +++ b/Gallery/Utils/IllustLegacy.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System.Collections.Generic; +using System.Linq; using System.Text.Json; using System.Text.Json.Serialization; using Gallery.Illust; @@ -239,6 +240,10 @@ namespace Gallery.Utils { return reader.GetString(); } + else if (reader.TokenType == JsonTokenType.Number) + { + return reader.GetInt64().ToString(); + } return null; } @@ -247,4 +252,118 @@ namespace Gallery.Utils throw new System.NotImplementedException(); } } + + public class FavoriteListConverter : JsonConverter + { + 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(); + 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(); + } + } } diff --git a/Gallery/Utils/Stores.cs b/Gallery/Utils/Stores.cs index 49bdf71..e869169 100644 --- a/Gallery/Utils/Stores.cs +++ b/Gallery/Utils/Stores.cs @@ -516,10 +516,20 @@ namespace Gallery.Utils null, string.Format(Configs.UrlFavoriteList, userId, offset, 48), string.Format(Configs.RefererFavorites, userId), +#if DEBUG + out string error); + + if (error != null) + { + App.DebugPrint($"error to deserialize json: {error}"); + } +#else out _); +#endif if (result == null || result.error) { App.DebugPrint($"error when load favorites data: {result?.message}"); + break; } else { @@ -534,7 +544,7 @@ namespace Gallery.Utils 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) @@ -684,120 +694,6 @@ namespace Gallery.Utils } } - public class FavoriteListConverter : JsonConverter - { - 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(); - 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 { None = 0,