mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 20:38:27 +00:00
Discord: CV2! (#16364)
This commit is contained in:
45
src/discord/ui.ts
Normal file
45
src/discord/ui.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { Container } from "@buape/carbon";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { resolveDiscordAccount } from "./accounts.js";
|
||||
|
||||
const DEFAULT_DISCORD_ACCENT_COLOR = "#5865F2";
|
||||
|
||||
type DiscordContainerComponents = ConstructorParameters<typeof Container>[0];
|
||||
|
||||
type ResolveDiscordAccentColorParams = {
|
||||
cfg: OpenClawConfig;
|
||||
accountId?: string | null;
|
||||
};
|
||||
|
||||
export function normalizeDiscordAccentColor(raw?: string | null): string | null {
|
||||
const trimmed = (raw ?? "").trim();
|
||||
if (!trimmed) {
|
||||
return null;
|
||||
}
|
||||
const normalized = trimmed.startsWith("#") ? trimmed : `#${trimmed}`;
|
||||
if (!/^#[0-9a-fA-F]{6}$/.test(normalized)) {
|
||||
return null;
|
||||
}
|
||||
return normalized.toUpperCase();
|
||||
}
|
||||
|
||||
export function resolveDiscordAccentColor(params: ResolveDiscordAccentColorParams): string {
|
||||
const account = resolveDiscordAccount({ cfg: params.cfg, accountId: params.accountId });
|
||||
const configured = normalizeDiscordAccentColor(account.config.ui?.components?.accentColor);
|
||||
return configured ?? DEFAULT_DISCORD_ACCENT_COLOR;
|
||||
}
|
||||
|
||||
export class DiscordUiContainer extends Container {
|
||||
constructor(params: {
|
||||
cfg: OpenClawConfig;
|
||||
accountId?: string | null;
|
||||
components?: DiscordContainerComponents;
|
||||
accentColor?: string;
|
||||
spoiler?: boolean;
|
||||
}) {
|
||||
const accentOverride = normalizeDiscordAccentColor(params.accentColor);
|
||||
const accentColor =
|
||||
accentOverride ?? resolveDiscordAccentColor({ cfg: params.cfg, accountId: params.accountId });
|
||||
super(params.components, { accentColor, spoiler: params.spoiler });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user