Browse Source

Make Channel.getUser optional.

pull/291/head
Greg Holmes 9 years ago
parent
commit
e300bab3c5

+ 8
- 5
src/com/dmdirc/Channel.java View File

@@ -179,7 +179,7 @@ public class Channel extends MessageTarget implements GroupChat {
179 179
             return;
180 180
         }
181 181
 
182
-        final GroupChatUser me = getUser(server.getLocalUser());
182
+        final GroupChatUser me = getUser(server.getLocalUser()).get();
183 183
         final String[] details = getDetails(me);
184 184
 
185 185
         splitLine(line).stream().filter(part -> !part.isEmpty()).forEach(part -> {
@@ -209,7 +209,7 @@ public class Channel extends MessageTarget implements GroupChat {
209 209
         }
210 210
 
211 211
 
212
-        final GroupChatUser me = getUser(server.getLocalUser());
212
+        final GroupChatUser me = getUser(server.getLocalUser()).get();
213 213
         final String[] details = getDetails(me);
214 214
 
215 215
         if (server.getParser().get().getMaxLength("PRIVMSG", getChannelInfo().getName())
@@ -544,9 +544,12 @@ public class Channel extends MessageTarget implements GroupChat {
544 544
     }
545 545
 
546 546
     @Override
547
-    public GroupChatUser getUser(final User user) {
548
-        return groupChatUserFactory.getGroupChatUser(user, this,
549
-                channelInfo.getChannelClient(((Client) user).getClientInfo()));
547
+    public Optional<GroupChatUser> getUser(final User user) {
548
+        final ChannelClientInfo ci = channelInfo.getChannelClient(((Client) user).getClientInfo());
549
+        if (ci == null) {
550
+            return Optional.empty();
551
+        }
552
+        return Optional.of(groupChatUserFactory.getGroupChatUser(user, this, ci));
550 553
     }
551 554
 
552 555
     public Collection<GroupChatUser> getUsers() {

+ 1
- 1
src/com/dmdirc/ChannelEventHandler.java View File

@@ -161,7 +161,7 @@ public class ChannelEventHandler extends EventHandler implements
161 161
         checkParser(parser);
162 162
 
163 163
         final Topic topic = new Topic(channel.getTopic(),
164
-                owner.getUser(getConnection().getUser(channel.getTopicSetter())),
164
+                owner.getUser(getConnection().getUser(channel.getTopicSetter())).orElse(null),
165 165
                 channel.getTopicTime());
166 166
 
167 167
         if (isJoinTopic) {

+ 9
- 1
src/com/dmdirc/interfaces/GroupChat.java View File

@@ -92,6 +92,14 @@ public interface GroupChat extends Chat {
92 92
      */
93 93
     void setTopic(final String topic);
94 94
 
95
-    GroupChatUser getUser(final User user);
95
+    /**
96
+     * Tries to retrieve a {@link GroupChatUser} from the current {@link GroupChat} for the
97
+     * specified {@link User}.
98
+     *
99
+     * @param user User to finf
100
+     *
101
+     * @return User on channel, or empty if the user is not on the channel
102
+     */
103
+    Optional<GroupChatUser> getUser(final User user);
96 104
 
97 105
 }

Loading…
Cancel
Save