OSDN Git Service

FavoritesTabModel.OldestIdの型を PostId? に変更
authorKimura Youichi <kim.upsilon@bucyou.net>
Fri, 3 May 2024 18:28:10 +0000 (03:28 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Fri, 3 May 2024 18:47:42 +0000 (03:47 +0900)
OpenTween.Tests/Api/TwitterApiTest.cs
OpenTween/Api/TwitterApi.cs
OpenTween/Models/FavoritesTabModel.cs
OpenTween/Twitter.cs

index ed21171..58e754c 100644 (file)
@@ -884,7 +884,7 @@ namespace OpenTween.Api
             using var twitterApi = new TwitterApi();
             twitterApi.ApiConnection = mock.Object;
 
-            await twitterApi.FavoritesList(200, maxId: 900L, sinceId: 100L);
+            await twitterApi.FavoritesList(200, maxId: new("900"), sinceId: new("100"));
 
             mock.VerifyAll();
         }
index b8e46a7..0db253e 100644 (file)
@@ -724,7 +724,7 @@ namespace OpenTween.Api
             return response.ReadAsLazyJson<TwitterUser>();
         }
 
-        public async Task<TwitterStatus[]> FavoritesList(int? count = null, long? maxId = null, long? sinceId = null)
+        public async Task<TwitterStatus[]> FavoritesList(int? count = null, TwitterStatusId? maxId = null, TwitterStatusId? sinceId = null)
         {
             var param = new Dictionary<string, string>
             {
@@ -736,9 +736,9 @@ namespace OpenTween.Api
             if (count != null)
                 param["count"] = count.ToString();
             if (maxId != null)
-                param["max_id"] = maxId.ToString();
+                param["max_id"] = maxId.Id;
             if (sinceId != null)
-                param["since_id"] = sinceId.ToString();
+                param["since_id"] = sinceId.Id;
 
             var request = new GetRequest
             {
index 1f2020a..fc6d502 100644 (file)
@@ -43,7 +43,7 @@ namespace OpenTween.Models
         public override MyCommon.TabUsageType TabType
             => MyCommon.TabUsageType.Favorites;
 
-        public long OldestId { get; set; } = long.MaxValue;
+        public PostId? OldestId { get; set; }
 
         public string? CursorTop { get; set; }
 
index 378fd41..f9dbc5f 100644 (file)
@@ -909,20 +909,22 @@ namespace OpenTween
             return minimumId;
         }
 
-        private long? CreateFavoritePostsFromJson(TwitterStatus[] items, bool firstLoad)
+        private PostId? CreateFavoritePostsFromJson(TwitterStatus[] items, bool firstLoad)
         {
             var favTab = TabInformations.GetInstance().FavoriteTab;
-            long? minimumId = null;
+            PostId? minimumId = null;
 
             foreach (var status in items)
             {
-                if (minimumId == null || minimumId.Value > status.Id)
-                    minimumId = status.Id;
+                var statusId = new TwitterStatusId(status.IdStr);
+
+                if (minimumId == null || minimumId > statusId)
+                    minimumId = statusId;
 
                 // 二重取得回避
                 lock (this.lockObj)
                 {
-                    if (favTab.Contains(new TwitterStatusId(status.IdStr)))
+                    if (favTab.Contains(statusId))
                         continue;
                 }
 
@@ -1329,7 +1331,7 @@ namespace OpenTween
             {
                 if (backward)
                 {
-                    statuses = await this.Api.FavoritesList(count, maxId: tab.OldestId)
+                    statuses = await this.Api.FavoritesList(count, maxId: tab.OldestId as TwitterStatusId)
                         .ConfigureAwait(false);
                 }
                 else
@@ -1342,7 +1344,7 @@ namespace OpenTween
             var minimumId = this.CreateFavoritePostsFromJson(statuses, firstLoad);
 
             if (minimumId != null)
-                tab.OldestId = minimumId.Value;
+                tab.OldestId = minimumId;
         }
 
         /// <summary>