OSDN Git Service

userId, appId に対応するオブジェクトが存在するかチェックする
authorKimura Youichi <kim.upsilon@bucyou.net>
Sat, 18 Aug 2018 16:57:07 +0000 (01:57 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 18 Aug 2018 17:00:56 +0000 (02:00 +0900)
Fixes: 2c8e0d8f ("/direct_messages/events/list.json によるDMの取得に対応")

OpenTween/Twitter.cs

index 58c1c8f..e86b2b5 100644 (file)
@@ -1346,20 +1346,23 @@ namespace OpenTween
                         .ToArray();
 
                     //以下、ユーザー情報
-                    TwitterUser user;
+                    string userId;
                     if (eventItem.MessageCreate.SenderId != this.Api.CurrentUserId.ToString(CultureInfo.InvariantCulture))
                     {
-                        user = users[eventItem.MessageCreate.SenderId];
+                        userId = eventItem.MessageCreate.SenderId;
                         post.IsMe = false;
                         post.IsOwl = true;
                     }
                     else
                     {
-                        user = users[eventItem.MessageCreate.Target.RecipientId];
+                        userId = eventItem.MessageCreate.Target.RecipientId;
                         post.IsMe = true;
                         post.IsOwl = false;
                     }
 
+                    if (!users.TryGetValue(userId, out var user))
+                        continue;
+
                     post.UserId = user.Id;
                     post.ScreenName = user.ScreenName;
                     post.Nickname = user.Name.Trim();
@@ -1378,9 +1381,8 @@ namespace OpenTween
                     post.ImageUrl = string.Intern(post.ImageUrl);
 
                     var appId = eventItem.MessageCreate.SourceAppId;
-                    if (appId != null)
+                    if (appId != null && apps.TryGetValue(appId, out var app))
                     {
-                        var app = apps[appId];
                         post.Source = string.Intern(app.Name);
 
                         try