From 3b15dc1803cbd4fb608169bb1a91474be0c933f5 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Sun, 4 May 2025 16:46:45 +0700 Subject: [PATCH] fix(lib/discord/ui/settings)!: update apis --- lib/discord/src/ui/settings/_internal.ts | 8 ++++---- lib/discord/src/ui/settings/api.ts | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/discord/src/ui/settings/_internal.ts b/lib/discord/src/ui/settings/_internal.ts index ba71b3a..1879d03 100644 --- a/lib/discord/src/ui/settings/_internal.ts +++ b/lib/discord/src/ui/settings/_internal.ts @@ -1,11 +1,11 @@ import type { SettingsRowConfig, SettingsSection } from './api' export const _suiData = { - // Settings that are in the Overview screen + // Sections to splice in the SettingsOverviewScreen sections: {}, - // Settings that are not in the Overview screen (submenus, hidden, etc.) - settings: {}, + // SETTING_RENDERER_CONFIG settings + config: {}, } as { sections: Record - settings: Record + config: Record } diff --git a/lib/discord/src/ui/settings/api.ts b/lib/discord/src/ui/settings/api.ts index 0fe84f6..6a0f80b 100644 --- a/lib/discord/src/ui/settings/api.ts +++ b/lib/discord/src/ui/settings/api.ts @@ -1,26 +1,28 @@ import { _suiData } from './_internal' +import type { DiscordModules } from '../../../types' import type { ComponentType, ReactNode } from 'react' -export function addSettingsSection(key: string, section: SettingsSection) { +export function registerSettingsSection(key: string, section: SettingsSection) { _suiData.sections[key] = section return () => delete _suiData.sections[key] } -export function addSettingsRow(key: string, row: SettingsRowConfig) { - _suiData.settings[key] = row - return () => delete _suiData.settings[key] +export function registerSetting(key: string, row: SettingsRowConfig) { + _suiData.config[key] = row + return () => delete _suiData.config[key] } -export function addSettingsRowToSection(sectionKey: string, rowKey: string, row: SettingsRowConfig) { - if (!_suiData.sections[sectionKey]) throw new Error(`Section "${sectionKey}" does not exist`) - _suiData.sections[sectionKey].settings[rowKey] = row - return () => delete _suiData.sections[sectionKey].settings[rowKey] +export function addSettingToSection(section: string, row: string) { + if (!_suiData.sections[section]) throw new Error(`Section "${section}" does not exist`) + const newLength = _suiData.sections[section].settings.push(row) + + return () => delete _suiData.sections[section].settings[newLength - 1] } export interface SettingsSection { label: string - settings: Record + settings: string[] index?: number } @@ -28,6 +30,7 @@ interface BaseSettingsRowConfig { title: () => string parent: string | null unsearchable?: boolean + variant?: DiscordModules.Components.TableRowProps['variant'] IconComponent?: () => ReactNode usePredicate?: () => boolean useTrailing?: () => ReactNode