diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 9cddd3aa6..bb9e82c58 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,6 +4,6 @@ "EditorConfig.EditorConfig", "GregorBiswanger.json2ts", "stylelint.vscode-stylelint", - "thororen.equicord-companion" + "sadan.vencord-user-companion" ] } \ No newline at end of file diff --git a/package.json b/package.json index cfca43418..3bf1dadba 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "generateTypes": "tspc --emitDeclarationOnly --declaration --outDir packages/vencord-types --allowJs false", "inject": "node scripts/runInstaller.mjs -- --install", "uninject": "node scripts/runInstaller.mjs -- --uninstall", + "repair": "node scripts/runInstaller.mjs -- --repair", "lint": "eslint", "lint-styles": "stylelint \"src/**/*.css\" --ignore-pattern src/userplugins", "lint:fix": "pnpm lint --fix", diff --git a/src/components/settings/AddonCard.tsx b/src/components/settings/AddonCard.tsx index 6cdbfe8db..42e954c28 100644 --- a/src/components/settings/AddonCard.tsx +++ b/src/components/settings/AddonCard.tsx @@ -35,6 +35,7 @@ interface Props { setEnabled: (enabled: boolean) => void; disabled?: boolean; isNew?: boolean; + sourceBadge?: ReactNode; onMouseEnter?: MouseEventHandler; onMouseLeave?: MouseEventHandler; @@ -43,7 +44,7 @@ interface Props { author?: ReactNode; } -export function AddonCard({ disabled, isNew, name, infoButton, footer, author, enabled, setEnabled, description, onMouseEnter, onMouseLeave }: Props) { +export function AddonCard({ disabled, isNew, sourceBadge, name, infoButton, footer, author, enabled, setEnabled, description, onMouseEnter, onMouseLeave }: Props) { const titleRef = useRef(null); const titleContainerRef = useRef(null); const { truncated, containerRef } = useTruncatedText(description ? description.toString() : ""); @@ -72,6 +73,7 @@ export function AddonCard({ disabled, isNew, name, infoButton, footer, author, e {name} + {sourceBadge} {isNew && } diff --git a/src/components/settings/tabs/plugins/PluginCard.tsx b/src/components/settings/tabs/plugins/PluginCard.tsx index 05567ceab..2aa270fb8 100644 --- a/src/components/settings/tabs/plugins/PluginCard.tsx +++ b/src/components/settings/tabs/plugins/PluginCard.tsx @@ -16,6 +16,8 @@ import { findByPropsLazy } from "@webpack"; import { React, showToast, Toasts } from "@webpack/common"; import { Settings } from "Vencord"; +import { PluginMeta } from "~plugins"; + import { openPluginModal } from "./PluginModal"; const logger = new Logger("PluginCard"); @@ -35,6 +37,8 @@ interface PluginCardProps extends React.HTMLProps { export function PluginCard({ plugin, disabled, onRestartNeeded, onMouseEnter, onMouseLeave, isNew }: PluginCardProps) { const settings = Settings.plugins[plugin.name]; + const pluginMeta = PluginMeta[plugin.name]; + const isEquicordPlugin = pluginMeta?.folderName?.startsWith("src/equicordplugins/") ?? false; const isEnabled = () => isPluginEnabled(plugin.name); @@ -88,9 +92,36 @@ export function PluginCard({ plugin, disabled, onRestartNeeded, onMouseEnter, on settings.enabled = !wasEnabled; } + const sourceBadge = isEquicordPlugin ? ( + Equicord + ) : ( + Vencord + ); + return ( { const { status } = searchValue; const enabled = Vencord.Plugins.isPluginEnabled(plugin.name); + const pluginMeta = PluginMeta[plugin.name]; + const isEquicordPlugin = pluginMeta?.folderName?.startsWith("src/equicordplugins/") ?? false; + if (enabled && status === SearchStatus.DISABLED) return false; if (!enabled && status === SearchStatus.ENABLED) return false; if (status === SearchStatus.NEW && !newPlugins?.includes(plugin.name)) return false; + if (status === SearchStatus.EQUICORD && !isEquicordPlugin) return false; + if (status === SearchStatus.VENCORD && isEquicordPlugin) return false; if (!search.length) return true; return ( @@ -362,7 +369,9 @@ export default function PluginSettings() { { label: "Show All", value: SearchStatus.ALL, default: true }, { label: "Show Enabled", value: SearchStatus.ENABLED }, { label: "Show Disabled", value: SearchStatus.DISABLED }, - { label: "Show New", value: SearchStatus.NEW } + { label: "Show New", value: SearchStatus.NEW }, + { label: "Show Equicord", value: SearchStatus.EQUICORD }, + { label: "Show Vencord", value: SearchStatus.VENCORD } ]} serialize={String} select={onStatusChange} diff --git a/src/equicordplugins/equicordHelper/index.tsx b/src/equicordplugins/equicordHelper/index.tsx index 6edc80c39..0d068f6b3 100644 --- a/src/equicordplugins/equicordHelper/index.tsx +++ b/src/equicordplugins/equicordHelper/index.tsx @@ -6,7 +6,7 @@ import "@equicordplugins/_misc/styles.css"; -import { definePluginSettings, Settings } from "@api/Settings"; +import { definePluginSettings } from "@api/Settings"; import { Devs, EquicordDevs } from "@utils/constants"; import { Logger } from "@utils/Logger"; import { isEquicordGuild, isEquicordSupport } from "@utils/misc"; @@ -69,11 +69,6 @@ export default definePlugin({ predicate: () => settings.store.disableDMContextMenu }, ], - start() { - if (Settings.plugins?.PinDMs?.disableCreateDMButton) { - settings.store.disableCreateDMButton = true; - } - }, renderMessageAccessory(props) { return pluginToggleButtons(props); } diff --git a/src/equicordplugins/statusPresets/fixActionBar.css b/src/equicordplugins/statusPresets/fixActionBar.css new file mode 100644 index 000000000..75aa0360a --- /dev/null +++ b/src/equicordplugins/statusPresets/fixActionBar.css @@ -0,0 +1,3 @@ +[class*="outerContainer_"] [class*="container_"] [class*="actionBar_"] { + gap: 0; +} \ No newline at end of file diff --git a/src/equicordplugins/statusPresets/index.tsx b/src/equicordplugins/statusPresets/index.tsx index 26529976b..b10790794 100644 --- a/src/equicordplugins/statusPresets/index.tsx +++ b/src/equicordplugins/statusPresets/index.tsx @@ -28,8 +28,9 @@ import { openModalLazy } from "@utils/modal"; import { useForceUpdater } from "@utils/react"; import definePlugin, { OptionType, StartAt } from "@utils/types"; import { extractAndLoadChunksLazy, findByPropsLazy, findComponentByCodeLazy, findModuleId, wreq } from "@webpack"; -import { Button, Clickable, Menu, Toasts, UserStore, useState } from "@webpack/common"; +import { Clickable, Menu, Toasts, UserStore, useState } from "@webpack/common"; +import managedStyle from "./fixActionBar.css?managed"; const settings = definePluginSettings({ StatusPresets: { @@ -62,7 +63,7 @@ const EmojiComponent = findComponentByCodeLazy(/\.translateSurrogatesToInlineEmo const CustomStatusSettings = getUserSettingLazy("status", "customStatus")!; const StatusModule = proxyLazy(() => { - const id = findModuleId("this.renderCustomStatusInput()"); + const id = findModuleId(".customStatusInputTitle,"); return wreq(Number(id)); }); @@ -150,12 +151,13 @@ export default definePlugin({ authors: [EquicordDevs.iamme], settings: settings, dependencies: ["UserSettingsAPI"], + managedStyle, patches: [ { - find: "#{intl::CUSTOM_STATUS_SET_CUSTOM_STATUS}", + find: '"CustomStatusModalWithPreview"', replacement: { - match: /cancelButton,(children|text):\i\.\i\.string\(\i\.\i#{intl::CANCEL}\)\}\)/, - replace: "$&,$self.renderRememberButton(this.state)" + match: /(?<=(\i)\.state\).*?)\{text:\i\.\i\.\i\(\i\.\i\.R3BPHx\)/, + replace: "$self.renderRememberButton($1),$&" } }, { @@ -205,21 +207,19 @@ export default definePlugin({ ); }, - renderRememberButton(statue: DiscordStatus) { - return ; + } + }; }, startAt: StartAt.WebpackReady });