OSDN Git Service

OpenTween v2.4.2 リリース
[opentween/open-tween.git] / OpenTween / ApiInfoDialog.cs
index b858f67..d722c7e 100644 (file)
@@ -19,6 +19,8 @@
 // the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
 // Boston, MA 02110-1301, USA.
 
+#nullable enable
+
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -35,9 +37,7 @@ namespace OpenTween
     public partial class ApiInfoDialog : OTBaseForm
     {
         public ApiInfoDialog()
-        {
-            InitializeComponent();
-        }
+            => this.InitializeComponent();
 
         private readonly List<string> _tlEndpoints = new List<string>
         {
@@ -46,6 +46,7 @@ namespace OpenTween
             "/statuses/show/:id",
             "/statuses/user_timeline",
             "/favorites/list",
+            "/direct_messages/events/list",
             "/direct_messages",
             "/direct_messages/sent",
             "/lists/statuses",
@@ -59,6 +60,9 @@ namespace OpenTween
             foreach (var endpoint in _tlEndpoints)
             {
                 var apiLimit = MyCommon.TwitterApiInfo.AccessLimit[endpoint];
+                if (apiLimit == null)
+                    continue;
+
                 AddListViewItem(endpoint, apiLimit, group);
             }
 
@@ -75,22 +79,26 @@ namespace OpenTween
 
         private void AddListViewItem(string endpoint, ApiLimit apiLimit, ListViewGroup group)
         {
-            var item = new ListViewItem(
-                new string[] {
-                    endpoint,
-                    apiLimit.AccessLimitRemain + "/" + apiLimit.AccessLimitCount,
-                    apiLimit.AccessLimitResetDate.ToLocalTimeString()
-                });
-            item.Group = group;
+            var subitems = new[]
+            {
+                endpoint,
+                apiLimit.AccessLimitRemain + "/" + apiLimit.AccessLimitCount,
+                apiLimit.AccessLimitResetDate.ToLocalTimeString(),
+            };
+            var item = new ListViewItem(subitems)
+            {
+                Group = group,
+            };
+
             this.ListViewApi.Items.Add(item);
         }
 
         private void UpdateEndpointLimit(string endpoint)
         {
-            var item = this.ListViewApi.Items.Cast<ListViewItem>().FirstOrDefault(x => x.SubItems[0].Text == endpoint);
-            if (item != null)
+            var apiLimit = MyCommon.TwitterApiInfo.AccessLimit[endpoint];
+            if (apiLimit != null)
             {
-                var apiLimit = MyCommon.TwitterApiInfo.AccessLimit[endpoint];
+                var item = this.ListViewApi.Items.Cast<ListViewItem>().Single(x => x.SubItems[0].Text == endpoint);
                 item.SubItems[1].Text = apiLimit.AccessLimitRemain + "/" + apiLimit.AccessLimitCount;
                 item.SubItems[2].Text = apiLimit.AccessLimitResetDate.ToLocalTimeString();
             }
@@ -106,8 +114,9 @@ namespace OpenTween
                 }
                 else
                 {
-                    var endpoint = (e as TwitterApiStatus.AccessLimitUpdatedEventArgs).EndpointName;
-                    UpdateEndpointLimit(endpoint);
+                    var endpoint = ((TwitterApiStatus.AccessLimitUpdatedEventArgs)e).EndpointName;
+                    if (endpoint != null)
+                        UpdateEndpointLimit(endpoint);
                 }
             }
             catch (ObjectDisposedException)
@@ -121,9 +130,7 @@ namespace OpenTween
         }
 
         private void ApiInfoDialog_FormClosing(object sender, FormClosingEventArgs e)
-        {
-            MyCommon.TwitterApiInfo.AccessLimitUpdated -= this.TwitterApiStatus_AccessLimitUpdated;
-        }
+            => MyCommon.TwitterApiInfo.AccessLimitUpdated -= this.TwitterApiStatus_AccessLimitUpdated;
 
         protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
         {
@@ -136,8 +143,6 @@ namespace OpenTween
     public class BufferedListView : ListView
     {
         public BufferedListView()
-        {
-            DoubleBuffered = true;
-        }
+            => this.DoubleBuffered = true;
     }
 }