Skip to content

Commit 738df09

Browse files
committed
Add convenience static getters for modes
1 parent 91d4cac commit 738df09

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

src/main/java/org/kitteh/irc/client/library/element/mode/ChannelMode.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
package org.kitteh.irc.client.library.element.mode;
2525

2626
import org.checkerframework.checker.nullness.qual.NonNull;
27+
import org.kitteh.irc.client.library.Client;
28+
29+
import java.util.Optional;
2730

2831
/**
2932
* A channel mode.
@@ -83,4 +86,15 @@ public boolean isParameterRequiredOnSetting() {
8386
* @return type
8487
*/
8588
@NonNull Type getType();
89+
90+
/**
91+
* Gets a channel mode by character for a given client.
92+
*
93+
* @param client client
94+
* @param mode mode to get
95+
* @return the mode, if present
96+
*/
97+
public static @NonNull Optional<ChannelMode> get(@NonNull Client client, char mode) {
98+
return client.getServerInfo().getChannelModes().stream().filter(m -> m.getChar() == mode).findFirst();
99+
}
86100
}

src/main/java/org/kitteh/irc/client/library/element/mode/ChannelUserMode.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
package org.kitteh.irc.client.library.element.mode;
2525

2626
import org.checkerframework.checker.nullness.qual.NonNull;
27+
import org.kitteh.irc.client.library.Client;
28+
29+
import java.util.Optional;
2730

2831
/**
2932
* Describes a channel mode that a user can have, such as op.
@@ -40,4 +43,15 @@ public interface ChannelUserMode extends ChannelMode {
4043
default @NonNull Type getType() {
4144
return Type.B_PARAMETER_ALWAYS;
4245
}
46+
47+
/**
48+
* Gets a channel user mode by character for a given client.
49+
*
50+
* @param client client
51+
* @param mode mode to get
52+
* @return the mode, if present
53+
*/
54+
public static @NonNull Optional<ChannelUserMode> get(@NonNull Client client, char mode) {
55+
return client.getServerInfo().getChannelUserModes().stream().filter(m -> m.getChar() == mode).findFirst();
56+
}
4357
}

src/main/java/org/kitteh/irc/client/library/element/mode/UserMode.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,23 @@
2323
*/
2424
package org.kitteh.irc.client.library.element.mode;
2525

26+
import org.checkerframework.checker.nullness.qual.NonNull;
27+
import org.kitteh.irc.client.library.Client;
28+
29+
import java.util.Optional;
30+
2631
/**
2732
* A user mode.
2833
*/
2934
public interface UserMode extends Mode {
35+
/**
36+
* Gets a user mode by character for a given client.
37+
*
38+
* @param client client
39+
* @param mode mode to get
40+
* @return the mode, if present
41+
*/
42+
public static @NonNull Optional<UserMode> get(@NonNull Client client, char mode) {
43+
return client.getServerInfo().getUserModes().stream().filter(m -> m.getChar() == mode).findFirst();
44+
}
3045
}

0 commit comments

Comments
 (0)