diff --git a/src/lib/app.svelte.ts b/src/lib/app.svelte.ts index b3f34fb1..5c8efd19 100644 --- a/src/lib/app.svelte.ts +++ b/src/lib/app.svelte.ts @@ -3,6 +3,7 @@ import { SvelteMap } from "svelte/reactivity"; import { handlers } from "./handlers"; import { History } from "./history.svelte"; import { log } from "./log"; +import { BadgeManager } from "./managers/badge-manager"; import { ChannelManager } from "./managers/channel-manager"; import { EmoteManager } from "./managers/emote-manager"; import { SplitLayout } from "./split-layout"; @@ -64,7 +65,7 @@ class App { /** * Provider-specific global badges. */ - public readonly badges = new Map(); + public readonly badges = new BadgeManager(); /** * 7TV paints. diff --git a/src/lib/commands/built-in/reload-badges.ts b/src/lib/commands/built-in/reload-badges.ts index 310f7b94..a7d74d36 100644 --- a/src/lib/commands/built-in/reload-badges.ts +++ b/src/lib/commands/built-in/reload-badges.ts @@ -1,21 +1,34 @@ -import { CommandError } from "$lib/errors/command-error"; -import { ErrorMessage } from "$lib/errors/messages"; -import { defineCommand, parseBool } from "../util"; +import { app } from "$lib/app.svelte"; +import { defineCommand } from "../util"; export default defineCommand({ provider: "Built-in", name: "reload-badges", - description: "Reload all badges for the channel and optionally global badges", - args: ["include-global"], + description: + "Reload all badges for the channel and optionally badges from a comma-separated list of providers", + args: ["providers"], async exec(args, channel) { - const includeGlobal = parseBool(args[0]); + const providers = args[0]?.split(",") ?? []; - if (includeGlobal === null) { - throw new CommandError(ErrorMessage.INVALID_BOOL_ARG); - } + if (providers.includes("all")) { + await app.badges.fetch(true); + } else { + const promises: Promise[] = [channel.fetchBadges(true)]; + + if (providers.includes("twitch")) { + promises.push(app.badges.fetchTwitch(true)); + } + + if (providers.includes("bttv")) { + promises.push(app.badges.fetchBttv(true)); + } - await channel.client.fetchBadges(includeGlobal); - await channel.fetchBadges(true); + if (providers.includes("chatterino")) { + promises.push(app.badges.fetchChatterino(true)); + } + + await Promise.all(promises); + } channel.chat.addSystemMessage("Reloaded badges."); }, diff --git a/src/lib/components/User.svelte b/src/lib/components/User.svelte index 29246b54..4acdf77f 100644 --- a/src/lib/components/User.svelte +++ b/src/lib/components/User.svelte @@ -182,12 +182,12 @@ : relationship.badges.slice(0, 10)}
- {#each badges as badge (`${badge.setID}:${badge.version}`)} + {#each badges as badge (badge.id)} {badge.title} {/each} diff --git a/src/lib/components/message/Message.svelte b/src/lib/components/message/Message.svelte index ac14cce6..6cc46bb3 100644 --- a/src/lib/components/message/Message.svelte +++ b/src/lib/components/message/Message.svelte @@ -1,6 +1,4 @@