From 09e92773945a41761afe7ea0b7b7154d57a5b25c Mon Sep 17 00:00:00 2001 From: pimothyxd <29018740+pimothyxd@users.noreply.github.com> Date: Tue, 23 Dec 2025 22:14:57 +0100 Subject: [PATCH 1/7] feat(twitch/chat): add mod action reasons --- .../settings/SettingsConfigActionReasons.vue | 186 ++++++++++++++++++ src/common/Constant.ts | 1 + src/composable/chat/useChatProperties.ts | 2 + src/composable/useCosmetics.ts | 4 +- src/site/global/components/FormInput.vue | 1 + .../twitch.tv/modules/chat/ChatController.vue | 1 + .../twitch.tv/modules/chat/ChatModule.vue | 63 ++++++ .../chat/components/mod/ModActionReasons.vue | 106 ++++++++++ .../modules/chat/components/mod/ModIcons.vue | 84 +++++++- .../modules/custom-commands/Commands/Nuke.vue | 3 +- 10 files changed, 445 insertions(+), 6 deletions(-) create mode 100644 src/app/settings/SettingsConfigActionReasons.vue create mode 100644 src/site/twitch.tv/modules/chat/components/mod/ModActionReasons.vue diff --git a/src/app/settings/SettingsConfigActionReasons.vue b/src/app/settings/SettingsConfigActionReasons.vue new file mode 100644 index 00000000..38b4d344 --- /dev/null +++ b/src/app/settings/SettingsConfigActionReasons.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/src/common/Constant.ts b/src/common/Constant.ts index be82e12e..c039fd2d 100644 --- a/src/common/Constant.ts +++ b/src/common/Constant.ts @@ -21,6 +21,7 @@ export const UNICODE_TAG_0 = "\u{34f}"; export const UNICODE_TAG_0_REGEX = new RegExp(UNICODE_TAG_0, "g"); export const TWITCH_PROFILE_IMAGE_REGEX = /(\d+x\d+)(?=\.\w{3,4}$)/; +export const TWITCH_TIMEOUT_REGEX = new RegExp("^[0-9]+[dhms]$", "i"); export const HOSTNAME_SUPPORTED_REGEXP = /([a-z0-9]+[.])*(youtube|kick)[.]com/; export const SEVENTV_EMOTE_LINK = new RegExp( diff --git a/src/composable/chat/useChatProperties.ts b/src/composable/chat/useChatProperties.ts index a0f7f0c6..0b0bc217 100644 --- a/src/composable/chat/useChatProperties.ts +++ b/src/composable/chat/useChatProperties.ts @@ -14,6 +14,7 @@ interface ChatProperties { imageFormat: SevenTV.ImageFormat; twitchBadgeSets: Twitch.BadgeSets | null; blockedUsers: Set; + chatRules: string[]; } type ChatPauseReason = "MOUSEOVER" | "SCROLL" | "ALTKEY"; @@ -36,6 +37,7 @@ export function useChatProperties(ctx: ChannelContext) { twitchBadgeSets: {} as Twitch.BadgeSets | null, blockedUsers: new Set(), fontAprilFools: "unset", + chatRules: [], }); m.set(ctx, data); diff --git a/src/composable/useCosmetics.ts b/src/composable/useCosmetics.ts index 92027df7..e55473ef 100644 --- a/src/composable/useCosmetics.ts +++ b/src/composable/useCosmetics.ts @@ -324,12 +324,12 @@ db.ready().then(async () => { break; } - log.debug("", "Assigned", ents.length.toString(), "stored entitlements"); - if (assigned) { data.staticallyAssigned[ent.user_id] = {}; } } + + log.debug("", "Assigned", ents.length.toString(), "stored entitlements"); }) .then(flush); }); diff --git a/src/site/global/components/FormInput.vue b/src/site/global/components/FormInput.vue index 4215c3f0..282e7a74 100644 --- a/src/site/global/components/FormInput.vue +++ b/src/site/global/components/FormInput.vue @@ -44,6 +44,7 @@ const inputEl = ref(null); defineExpose({ focus: () => inputEl.value?.focus(), + value: () => inputEl.value?.value, }); onMounted(() => { diff --git a/src/site/twitch.tv/modules/chat/ChatController.vue b/src/site/twitch.tv/modules/chat/ChatController.vue index 90b7c204..fd7cf5b3 100644 --- a/src/site/twitch.tv/modules/chat/ChatController.vue +++ b/src/site/twitch.tv/modules/chat/ChatController.vue @@ -241,6 +241,7 @@ definePropertyHook(controller.value.component, "props", { // Keep track of chat props properties.isDarkTheme = v.theme; + properties.chatRules = v.chatRules ?? []; // Send presence upon message sent messages.sendMessage = v.chatConnectionAPI.sendMessage; diff --git a/src/site/twitch.tv/modules/chat/ChatModule.vue b/src/site/twitch.tv/modules/chat/ChatModule.vue index 87d9606c..113e7c97 100644 --- a/src/site/twitch.tv/modules/chat/ChatModule.vue +++ b/src/site/twitch.tv/modules/chat/ChatModule.vue @@ -128,8 +128,10 @@ defineExpose({ + + diff --git a/src/site/twitch.tv/modules/chat/components/mod/ModIcons.vue b/src/site/twitch.tv/modules/chat/components/mod/ModIcons.vue index f716b4f9..61da149c 100644 --- a/src/site/twitch.tv/modules/chat/components/mod/ModIcons.vue +++ b/src/site/twitch.tv/modules/chat/components/mod/ModIcons.vue @@ -1,9 +1,10 @@