-
+
+ {((settings.store.indicatorMode & IndicatorMode.Avatars) === IndicatorMode.Avatars) && (
+
UserStore.getUser(id))}
+ guildId={guildId}
+ renderIcon={false}
+ max={3}
+ showDefaultAvatarsForNullUsers
+ showUserPopout
+ size={16}
+ className="vc-typing-indicator-avatars"
+ />
+ )}
+ {((settings.store.indicatorMode & IndicatorMode.Dots) === IndicatorMode.Dots) && (
+
+
+
+ )}
)}
@@ -119,13 +140,22 @@ const settings = definePluginSettings({
type: OptionType.BOOLEAN,
description: "Whether to show the typing indicator for blocked users.",
default: false
+ },
+ indicatorMode: {
+ type: OptionType.SELECT,
+ description: "How should the indicator be displayed?",
+ options: [
+ { label: "Avatars and animated dots", value: IndicatorMode.Dots | IndicatorMode.Avatars, default: true },
+ { label: "Animated dots", value: IndicatorMode.Dots },
+ { label: "Avatars", value: IndicatorMode.Avatars },
+ ],
}
});
export default definePlugin({
name: "TypingIndicator",
description: "Adds an indicator if someone is typing on a channel.",
- authors: [Devs.Nuckyz, Devs.fawn],
+ authors: [Devs.Nuckyz, Devs.fawn, Devs.Sqaaakoi],
settings,
patches: [
diff --git a/src/plugins/typingIndicator/style.css b/src/plugins/typingIndicator/style.css
new file mode 100644
index 00000000..d92ef0f1
--- /dev/null
+++ b/src/plugins/typingIndicator/style.css
@@ -0,0 +1,18 @@
+.vc-typing-indicator {
+ display: flex;
+ align-items: center;
+ height: 20px;
+}
+
+.vc-typing-indicator-avatars {
+ margin-left: 6px;
+}
+
+.vc-typing-indicator-dots {
+ margin-left: 6px;
+ height: 16px;
+ display: flex;
+ align-items: center;
+ z-index: 0;
+ cursor: pointer;
+}
diff --git a/src/utils/constants.ts b/src/utils/constants.ts
index 3bad423d..04a4f677 100644
--- a/src/utils/constants.ts
+++ b/src/utils/constants.ts
@@ -426,6 +426,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({
name: "newwares",
id: 421405303951851520n
},
+ Sqaaakoi: {
+ name: "Sqaaakoi",
+ id: 259558259491340288n
+ },
Byron: {
name: "byeoon",
id: 1167275288036655133n