OSDN Git Service

Twitter.GetTimelineApiメソッドをGetHomeTimelineApi, GetMentionsTimelineApiに分割
authorKimura Youichi <kim.upsilon@bucyou.net>
Tue, 17 May 2016 12:27:59 +0000 (21:27 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Fri, 20 May 2016 14:06:07 +0000 (23:06 +0900)
OpenTween/Models/HomeTabModel.cs
OpenTween/Models/MentionsTabModel.cs
OpenTween/Twitter.cs

index 2a8af33..4969124 100644 (file)
@@ -70,7 +70,7 @@ namespace OpenTween.Models
 
             progress.Report(string.Format(Properties.Resources.GetTimelineWorker_RunWorkerCompletedText5, backward ? -1 : 1));
 
-            await tw.GetTimelineApi(read, MyCommon.WORKERTYPE.Timeline, backward, startup)
+            await tw.GetHomeTimelineApi(read, this, backward, startup)
                 .ConfigureAwait(false);
 
             // 新着時未読クリア
index 525a99f..93bc7ab 100644 (file)
@@ -56,7 +56,7 @@ namespace OpenTween.Models
 
             progress.Report(string.Format(Properties.Resources.GetTimelineWorker_RunWorkerCompletedText4, backward ? -1 : 1));
 
-            await tw.GetTimelineApi(read, MyCommon.WORKERTYPE.Reply, backward, startup)
+            await tw.GetMentionsTimelineApi(read, this, backward, startup)
                 .ConfigureAwait(false);
 
             TabInformations.GetInstance().DistributePosts();
index 5d3ecdf..104e9b8 100644 (file)
@@ -162,8 +162,6 @@ namespace OpenTween
         private List<string> _hashList = new List<string>();
 
         //max_idで古い発言を取得するために保持(lists分は個別タブで管理)
-        private long minHomeTimeline = long.MaxValue;
-        private long minMentions = long.MaxValue;
         private long minDirectmessage = long.MaxValue;
         private long minDirectmessageSent = long.MaxValue;
 
@@ -778,49 +776,50 @@ namespace OpenTween
             return Math.Min(count, GetMaxApiResultCount(type));
         }
 
-        public async Task GetTimelineApi(bool read, MyCommon.WORKERTYPE gType, bool more, bool startup)
+        public async Task GetHomeTimelineApi(bool read, HomeTabModel tab, bool more, bool startup)
         {
             this.CheckAccountState();
 
-            var count = GetApiResultCount(gType, more, startup);
+            var count = GetApiResultCount(MyCommon.WORKERTYPE.Timeline, more, startup);
 
             TwitterStatus[] statuses;
-            if (gType == MyCommon.WORKERTYPE.Timeline)
+            if (more)
             {
-                if (more)
-                {
-                    statuses = await this.Api.StatusesHomeTimeline(count, maxId: this.minHomeTimeline)
-                        .ConfigureAwait(false);
-                }
-                else
-                {
-                    statuses = await this.Api.StatusesHomeTimeline(count)
-                        .ConfigureAwait(false);
-                }
+                statuses = await this.Api.StatusesHomeTimeline(count, maxId: tab.OldestId)
+                    .ConfigureAwait(false);
             }
             else
             {
-                if (more)
-                {
-                    statuses = await this.Api.StatusesMentionsTimeline(count, maxId: this.minMentions)
-                        .ConfigureAwait(false);
-                }
-                else
-                {
-                    statuses = await this.Api.StatusesMentionsTimeline(count)
-                        .ConfigureAwait(false);
-                }
+                statuses = await this.Api.StatusesHomeTimeline(count)
+                    .ConfigureAwait(false);
             }
 
-            var minimumId = CreatePostsFromJson(statuses, gType, null, read);
-
+            var minimumId = this.CreatePostsFromJson(statuses, MyCommon.WORKERTYPE.Timeline, tab, read);
             if (minimumId != null)
+                tab.OldestId = minimumId.Value;
+        }
+
+        public async Task GetMentionsTimelineApi(bool read, MentionsTabModel tab, bool more, bool startup)
+        {
+            this.CheckAccountState();
+
+            var count = GetApiResultCount(MyCommon.WORKERTYPE.Reply, more, startup);
+
+            TwitterStatus[] statuses;
+            if (more)
             {
-                if (gType == MyCommon.WORKERTYPE.Timeline)
-                    this.minHomeTimeline = minimumId.Value;
-                else
-                    this.minMentions = minimumId.Value;
+                statuses = await this.Api.StatusesMentionsTimeline(count, maxId: tab.OldestId)
+                    .ConfigureAwait(false);
             }
+            else
+            {
+                statuses = await this.Api.StatusesMentionsTimeline(count)
+                    .ConfigureAwait(false);
+            }
+
+            var minimumId = this.CreatePostsFromJson(statuses, MyCommon.WORKERTYPE.Reply, tab, read);
+            if (minimumId != null)
+                tab.OldestId = minimumId.Value;
         }
 
         public async Task GetUserTimelineApi(bool read, string userName, UserTimelineTabModel tab, bool more)