From: Jordan Duabe <1442368+j4ckofalltrades@users.noreply.github.com> Date: Wed, 03 Mar 2021 20:50:25 +0530 Subject: Implement clearing of Twitch Chat config --- Implement clearing of Twitch Chat config --- Binary files 'a/PreBuiltPlugins/twitch-chat-connect.jar' and b/PreBuiltPlugins/twitch-chat-connect.jar differ Binary files 'a/PreBuiltPlugins/twitch-send-channel-msg.jar' and b/PreBuiltPlugins/twitch-send-channel-msg.jar differ --- 'a/twitch/send-channel-msg/src/main/java/sendchannelmsg/SendChannelMessageAction.java' +++ b/twitch/send-channel-msg/src/main/java/sendchannelmsg/SendChannelMessageAction.java @@ -9,6 +9,9 @@ import com.stream_pi.util.exception.Stre import com.stream_pi.util.version.Version; import connect.chat.TwitchChatCredentials; +import static connect.chat.TwitchChatCredentials.DEFAULT_TWITCH_NICKNAME; +import static connect.chat.TwitchChatCredentials.DEFAULT_TWITCH_TOKEN; + public class SendChannelMessageAction extends NormalAction { @@ -90,12 +93,12 @@ public class SendChannelMessageAction ex final String twitchNickname = credentials.getNickname(); boolean isNicknameInitialized = twitchNickname != null && !twitchNickname.isEmpty() && - !twitchNickname.equalsIgnoreCase("twitch_nickname"); + !twitchNickname.equalsIgnoreCase(DEFAULT_TWITCH_NICKNAME); final String twitchChatOauthToken = credentials.getOauthToken(); boolean isTokenInitialized = twitchChatOauthToken != null && !twitchChatOauthToken.isEmpty() && - !twitchChatOauthToken.equalsIgnoreCase("twitch_oauth_token"); + !twitchChatOauthToken.equalsIgnoreCase(DEFAULT_TWITCH_TOKEN); return isNicknameInitialized && isTokenInitialized; } --- 'a/twitch/twitch-chat-connect/src/main/java/connect/TwitchChatConnectAction.java' +++ b/twitch/twitch-chat-connect/src/main/java/connect/TwitchChatConnectAction.java @@ -16,7 +16,7 @@ public class TwitchChatConnectAction ext private static final String TWITCH_ACCESS_TOKEN_KEY = "twitch_access_token"; private static final String TWITCH_NICKNAME_KEY = "twitch_nickname"; - private final Button saveCredentialsBtn; + private final Button clearCredentialsBtn; public TwitchChatConnectAction() { @@ -27,61 +27,64 @@ public class TwitchChatConnectAction ext setVersion(new Version(1, 0, 0)); setHelpLink("https://github.com/Stream-Pi/essentialactions"); - saveCredentialsBtn = new Button("Save Twitch chat credentials"); - setButtonBar(saveCredentialsBtn); + clearCredentialsBtn = new Button("Clear Twitch chat credentials"); + onClearCredentials(); + setButtonBar(clearCredentialsBtn); } @Override - public void initProperties() throws Exception + public void initProperties() { Property twitchNicknameProp = new Property(TWITCH_NICKNAME_KEY, Type.STRING); twitchNicknameProp.setDisplayName("Twitch Username"); - twitchNicknameProp.setDefaultValueStr("twitch_nickname"); - twitchNicknameProp.setCanBeBlank(false); Property twitchAccessTokenProp = new Property(TWITCH_ACCESS_TOKEN_KEY, Type.STRING); twitchAccessTokenProp.setDisplayName("Access Token"); - twitchAccessTokenProp.setDefaultValueStr("twitch_oauth_token"); - twitchAccessTokenProp.setCanBeBlank(false); addServerProperties(twitchNicknameProp, twitchAccessTokenProp); } @Override - public void initAction() throws Exception + public void initAction() throws MinorException { - saveCredentialsBtn.setOnAction(action -> + clearCredentialsBtn.setDisable(isEmptyCredentials()); + + TwitchChatCredentials.setCredentials( + new TwitchChatCredentials.ChatCredentials() + .setOauthToken(getServerProperties().getSingleProperty(TWITCH_ACCESS_TOKEN_KEY).getStringValue()) + .setNickname(getServerProperties().getSingleProperty(TWITCH_NICKNAME_KEY).getStringValue())); + } + + private boolean isEmptyCredentials() throws MinorException { + final String twitchNickname = getServerProperties().getSingleProperty(TWITCH_NICKNAME_KEY).getStringValue(); + final String twitchChatOauthToken = getServerProperties().getSingleProperty(TWITCH_ACCESS_TOKEN_KEY).getStringValue(); + return (twitchNickname == null || twitchNickname.isEmpty()) && + (twitchChatOauthToken == null || twitchChatOauthToken.isEmpty()); + } + + private void onClearCredentials() + { + clearCredentialsBtn.setOnAction(action -> { try { - persistCredentials(); - + getServerProperties().getSingleProperty(TWITCH_ACCESS_TOKEN_KEY).setStringValue(""); + getServerProperties().getSingleProperty(TWITCH_NICKNAME_KEY).setStringValue(""); + saveServerProperties(); new StreamPiAlert( - "Twitch chat credentials saved", - "Chat credentials been saved, you can now start using Twitch chat integration actions.", + "Twitch chat credentials cleared", + "To revoke token access, disconnect \"Twitch Chat OAuth Token Generator\" from your Twitch settings (https://www.twitch.tv/settings/connections).", StreamPiAlertType.INFORMATION) .show(); } catch (Exception e) { new StreamPiAlert( "Failed to save chat credentials", - "An error has occurred while saving chat credentials, please try again.", + "An error has occurred while clearing chat credentials, please try again.", StreamPiAlertType.WARNING) .show(); } }); - - persistCredentials(); - } - - private void persistCredentials() throws MinorException - { - final String token = getServerProperties().getSingleProperty(TWITCH_ACCESS_TOKEN_KEY).getStringValue(); - final String nickname = getServerProperties().getSingleProperty(TWITCH_NICKNAME_KEY).getStringValue(); - TwitchChatCredentials.setCredentials( - new TwitchChatCredentials.ChatCredentials() - .setOauthToken(token) - .setNickname(nickname)); } @Override --- 'a/twitch/twitch-chat-connect/src/main/java/connect/chat/TwitchChatCredentials.java' +++ b/twitch/twitch-chat-connect/src/main/java/connect/chat/TwitchChatCredentials.java @@ -2,6 +2,8 @@ package connect.chat; public final class TwitchChatCredentials { + public static final String DEFAULT_TWITCH_NICKNAME = "twitch_username"; + public static final String DEFAULT_TWITCH_TOKEN = "twitch_token"; private static ChatCredentials credentials;