/* eslint-disable simple-header/header */ /* * Vencord, a Discord client mod * Copyright (c) 2025 nin0dev * All rights reserved. */ import { definePluginSettings, useSettings } from "@api/Settings"; import { Devs } from "@utils/constants"; import definePlugin, { OptionType } from "@utils/types"; import { findByPropsLazy } from "@webpack"; import { Text, TextInput } from "@webpack/common"; const settings = definePluginSettings({ settings: { type: OptionType.COMPONENT, component: () => }, values: { type: OptionType.CUSTOM, default: [] as { name: string; id: string; }[] } }); const getDevices = findByPropsLazy("getInputDevices"); function RenameSettings() { const vcSettings = useSettings(["plugins.RenameVoiceDevices.values"]); return <> Input devices { (() => { const vcSettings = useSettings(["plugins.RenameVoiceDevices.values"]); const savedDevices = vcSettings.plugins.RenameVoiceDevices.values; const devices = Object.values(getDevices.getInputDevices()); return devices.map((device: any) => { if (device.id === "default") return; return
🎤 {device.id} v.id === device.id)?.name || ""} onChange={v => { const existingDevice = settings.store.values.find(vv => device.id === vv.id); if (existingDevice) { if (v === "") { settings.store.values.splice(settings.store.values.indexOf(existingDevice), 1); return; } existingDevice.name = v; } else { if (v === "") return; settings.store.values.push({ name: v, id: device.id }); } }} />
; }); })() } Output devices { (() => { const savedDevices = vcSettings.plugins.RenameVoiceDevices.values; const devices = Object.values(getDevices.getOutputDevices()); return devices.map((device: any) => { if (device.id === "default") return; return
🔊 {device.id} v.id === device.id)?.name || ""} onChange={v => { const existingDevice = settings.store.values.find(vv => device.id === vv.id); if (existingDevice) { if (v === "") { settings.store.values.splice(settings.store.values.indexOf(existingDevice), 1); return; } existingDevice.name = v; } else { if (v === "") return; settings.store.values.push({ name: v, id: device.id }); } }} />
; }); })() } ; } export default definePlugin({ name: "RenameVoiceDevices", description: "Rename voice input/output devices", authors: [Devs.nin0dev], settings, processDevices(devices: { [key: string]: { id: string; originalName?: string; name: string; }; }) { const frozenDevices = devices; for (const key in devices) { const potentialRenamedDevice = settings.store.values.find(vv => devices[key].id === vv.id); if (potentialRenamedDevice) devices[key].name = `${potentialRenamedDevice.name}`; } return devices; }, patches: [{ find: "getInputDevices(){return", replacement: [ { match: /getInputDevices\(\){return (\i)}/, replace: "getInputDevices(){return $self.processDevices($1)}" }, { match: /getOutputDevices\(\){return (\i)}/, replace: "getOutputDevices(){return $self.processDevices($1)}" } ] }] });