Example #1
0
 private void SetNextUnreadId(long currentId, TabClass tab)
 {
     // CurrentID:今既読にしたID(OldestIDの可能性あり)
     // 最古未読が設定されていて、既読の場合(1発言以上存在)
     try
     {
         // 次の未読探索
         var posts = tab.IsInnerStorageTabType ? tab.Posts : _statuses;
         if (tab.OldestUnreadId > -1 && posts.ContainsKey(tab.OldestUnreadId)
             && posts[tab.OldestUnreadId].IsRead && _sorter.Mode == IdComparerClass.ComparerMode.Id)
         {
             if (tab.UnreadCount == 0)
             {
                 // 未読数0→最古未読なし
                 tab.OldestUnreadId = -1;
             }
             else if (tab.OldestUnreadId == currentId && currentId > -1)
             {
                 // 最古IDを既読にしたタイミング→次のIDから続けて探索
                 int idx = tab.IndexOf(currentId);
                 if (idx > -1)
                 {
                     // 続きから探索
                     FindUnreadId(idx, tab);
                 }
                 else
                 {
                     // 頭から探索
                     FindUnreadId(-1, tab);
                 }
             }
             else
             {
                 // 頭から探索
                 FindUnreadId(-1, tab);
             }
         }
         else
         {
             // 頭から探索
             FindUnreadId(-1, tab);
         }
     }
     catch (KeyNotFoundException)
     {
         // 頭から探索
         FindUnreadId(-1, tab);
     }
 }