From 506e3dcfd65f4fa742a546342da2f22f017ed25b Mon Sep 17 00:00:00 2001
From: thororen1234 <78185467+thororen1234@users.noreply.github.com>
Date: Wed, 16 Apr 2025 22:52:50 -0400
Subject: [PATCH] Clipboard Fixes
---
src/equicordplugins/commandPalette/commands.tsx | 7 ++++---
src/equicordplugins/copyProfileColors/index.tsx | 5 +++--
src/equicordplugins/copyUserMention/index.tsx | 5 +++--
src/equicordplugins/exportContacts/index.tsx | 5 +++--
src/equicordplugins/friendCodes/FriendCodesPanel.tsx | 5 +++--
src/equicordplugins/gifCollections/index.tsx | 5 +++--
src/equicordplugins/glide/index.tsx | 12 ++++--------
.../holyNotes/components/modals/RenderMessage.tsx | 9 +++++----
src/equicordplugins/iconViewer/rawModal.tsx | 5 ++---
src/equicordplugins/iconViewer/subComponents.tsx | 4 ++--
.../themeLibrary/components/ThemeInfoModal.tsx | 5 +++--
src/equicordplugins/themeLibrary/utils/settings.tsx | 5 +++--
12 files changed, 38 insertions(+), 34 deletions(-)
diff --git a/src/equicordplugins/commandPalette/commands.tsx b/src/equicordplugins/commandPalette/commands.tsx
index 3b78ec12..c324c90b 100644
--- a/src/equicordplugins/commandPalette/commands.tsx
+++ b/src/equicordplugins/commandPalette/commands.tsx
@@ -6,9 +6,10 @@
import { showNotification } from "@api/Notifications";
import { Settings } from "@api/Settings";
+import { copyToClipboard } from "@utils/clipboard";
import { relaunch, showItemInFolder } from "@utils/native";
import { checkForUpdates, getRepo } from "@utils/updater";
-import { Clipboard, GuildStore, NavigationRouter, SettingsRouter, Toasts } from "@webpack/common";
+import { GuildStore, NavigationRouter, SettingsRouter, Toasts } from "@webpack/common";
import gitHash from "~git-hash";
import gitRemote from "~git-remote";
@@ -89,7 +90,7 @@ export const actions: ButtonAction[] = [
const newUrl = url.replace(/(https?:\/\/)?([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+)/, "https://$2.$3");
const res = (await fetch(newUrl));
const text = await res.text();
- Clipboard.copy(text);
+ copyToClipboard(text);
Toasts.show({
message: "Copied response to clipboard!",
@@ -115,7 +116,7 @@ export const actions: ButtonAction[] = [
{
id: "copyGitInfo", label: "Copy Git Info", callback: async () => {
- Clipboard.copy(`gitHash: ${gitHash}\ngitRemote: ${gitRemote}`);
+ copyToClipboard(`gitHash: ${gitHash}\ngitRemote: ${gitRemote}`);
Toasts.show({
message: "Copied git info to clipboard!",
diff --git a/src/equicordplugins/copyProfileColors/index.tsx b/src/equicordplugins/copyProfileColors/index.tsx
index 216adacf..2a3ab604 100644
--- a/src/equicordplugins/copyProfileColors/index.tsx
+++ b/src/equicordplugins/copyProfileColors/index.tsx
@@ -5,9 +5,10 @@
*/
import { addContextMenuPatch, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu";
+import { copyToClipboard } from "@utils/clipboard";
import { EquicordDevs } from "@utils/constants";
import definePlugin from "@utils/types";
-import { Clipboard, Menu, Toasts, UserProfileStore } from "@webpack/common";
+import { Menu, Toasts, UserProfileStore } from "@webpack/common";
function getProfileColors(userId) {
try {
@@ -46,7 +47,7 @@ function copyProfileColors(userId) {
const formattedColors = `Primary-color #${primaryColor}, Secondary-Color #${secondaryColor}`;
try {
- Clipboard.copy(formattedColors);
+ copyToClipboard(formattedColors);
Toasts.show({
type: Toasts.Type.SUCCESS,
message: "Profile colors copied to clipboard!",
diff --git a/src/equicordplugins/copyUserMention/index.tsx b/src/equicordplugins/copyUserMention/index.tsx
index 81423265..c8e03d8e 100644
--- a/src/equicordplugins/copyUserMention/index.tsx
+++ b/src/equicordplugins/copyUserMention/index.tsx
@@ -5,9 +5,10 @@
*/
import { NavContextMenuPatchCallback } from "@api/ContextMenu";
+import { copyToClipboard } from "@utils/clipboard";
import { Devs, EquicordDevs } from "@utils/constants";
import definePlugin from "@utils/types";
-import { Clipboard, Menu } from "@webpack/common";
+import { Menu } from "@webpack/common";
import type { Channel, User } from "discord-types/general";
const MentionIcon = () => (
@@ -37,7 +38,7 @@ const UserContextMenuPatch: NavContextMenuPatchCallback = (children, { user }: U
Clipboard.copy(`<@${user.id}>`)}
+ action={() => copyToClipboard(`<@${user.id}>`)}
icon={MentionIcon}
/>
);
diff --git a/src/equicordplugins/exportContacts/index.tsx b/src/equicordplugins/exportContacts/index.tsx
index a454e432..6a5df39f 100644
--- a/src/equicordplugins/exportContacts/index.tsx
+++ b/src/equicordplugins/exportContacts/index.tsx
@@ -19,9 +19,10 @@
import "./styles.css";
import ErrorBoundary from "@components/ErrorBoundary";
+import { copyToClipboard } from "@utils/clipboard";
import { EquicordDevs } from "@utils/constants";
import definePlugin from "@utils/types";
-import { Clipboard, Toasts } from "@webpack/common";
+import { Toasts } from "@webpack/common";
interface User {
id: string;
@@ -97,7 +98,7 @@ export default definePlugin({
copyContactToClipboard() {
if (this.contactList) {
- Clipboard.copy(JSON.stringify(this.contactList));
+ copyToClipboard(JSON.stringify(this.contactList));
Toasts.show({
message: "Contacts copied to clipboard successfully.",
type: Toasts.Type.SUCCESS,
diff --git a/src/equicordplugins/friendCodes/FriendCodesPanel.tsx b/src/equicordplugins/friendCodes/FriendCodesPanel.tsx
index b1832579..10e071ab 100644
--- a/src/equicordplugins/friendCodes/FriendCodesPanel.tsx
+++ b/src/equicordplugins/friendCodes/FriendCodesPanel.tsx
@@ -6,8 +6,9 @@
import "./styles.css";
+import { copyToClipboard } from "@utils/clipboard";
import { findByPropsLazy } from "@webpack";
-import { Button, Clipboard, Flex, Forms, Parser, Text, useEffect, useState } from "@webpack/common";
+import { Button, Flex, Forms, Parser, Text, useEffect, useState } from "@webpack/common";
import { FriendInvite } from "./types";
@@ -51,7 +52,7 @@ function FriendInviteCard({ invite }: { invite: FriendInvite; }) {
Clipboard.copy(`https://discord.gg/${invite.code}`)}
+ onClick={() => copyToClipboard(`https://discord.gg/${invite.code}`)}
/>
diff --git a/src/equicordplugins/gifCollections/index.tsx b/src/equicordplugins/gifCollections/index.tsx
index 33fff6ac..c6a09822 100644
--- a/src/equicordplugins/gifCollections/index.tsx
+++ b/src/equicordplugins/gifCollections/index.tsx
@@ -10,10 +10,11 @@ import { findGroupChildrenByChildId, NavContextMenuPatchCallback } from "@api/Co
import { DataStore } from "@api/index";
import { definePluginSettings } from "@api/Settings";
import { Flex } from "@components/Flex";
+import { copyToClipboard } from "@utils/clipboard";
import { Devs, EquicordDevs } from "@utils/constants";
import { ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModal } from "@utils/modal";
import definePlugin, { OptionType } from "@utils/types";
-import { Alerts, Button, Clipboard, ContextMenuApi, FluxDispatcher, Forms, Menu, React, showToast, TextInput, Toasts, useCallback, useState } from "@webpack/common";
+import { Alerts, Button, ContextMenuApi, FluxDispatcher, Forms, Menu, React, showToast, TextInput, Toasts, useCallback, useState } from "@webpack/common";
import { addToCollection, cache_collections, createCollection, DATA_COLLECTION_NAME, deleteCollection, fixPrefix, getCollections, getGifById, getItemCollectionNameFromId, moveGifToCollection, refreshCacheCollection, removeFromCollection, renameCollection } from "./utils/collectionManager";
import { getFormat } from "./utils/getFormat";
@@ -526,7 +527,7 @@ const RemoveItemContextMenu = ({ type, nameOrId, instance }) => (
action={() => {
const gifInfo = getGifById(nameOrId);
if (!gifInfo) return;
- Clipboard.copy(gifInfo.url);
+ copyToClipboard(gifInfo.url);
showToast("URL copied to clipboard", Toasts.Type.SUCCESS);
}}
/>
diff --git a/src/equicordplugins/glide/index.tsx b/src/equicordplugins/glide/index.tsx
index 5547133a..70ca5d4c 100644
--- a/src/equicordplugins/glide/index.tsx
+++ b/src/equicordplugins/glide/index.tsx
@@ -5,10 +5,11 @@
*/
import { definePluginSettings, Settings } from "@api/Settings";
+import { copyToClipboard } from "@utils/clipboard";
import { Devs } from "@utils/constants";
import definePlugin, { OptionType, StartAt } from "@utils/types";
import { findComponentByCodeLazy } from "@webpack";
-import { Button, Clipboard, Forms, TextInput, Toasts, useState } from "@webpack/common";
+import { Button, Forms, TextInput, Toasts, useState } from "@webpack/common";
import { darkenColorHex, generateRandomColorHex, saturateColorHex } from "./generateTheme";
import { themes } from "./themeDefinitions";
@@ -58,10 +59,7 @@ function copyPreset(name: string) {
name: "${name}"
}
`;
- if (Clipboard.SUPPORTS_COPY) {
- Clipboard.copy(template);
- }
-
+ copyToClipboard(template);
}
function CopyPresetComponent() {
@@ -229,9 +227,7 @@ export function ColorPick({ propertyname }: { propertyname: string; }) {
function copyCSS() {
- if (Clipboard.SUPPORTS_COPY) {
- Clipboard.copy(getCSS(parseFontContent()));
- }
+ copyToClipboard(getCSS(parseFontContent()));
}
function parseFontContent() {
diff --git a/src/equicordplugins/holyNotes/components/modals/RenderMessage.tsx b/src/equicordplugins/holyNotes/components/modals/RenderMessage.tsx
index 2308ede3..45edbf7c 100644
--- a/src/equicordplugins/holyNotes/components/modals/RenderMessage.tsx
+++ b/src/equicordplugins/holyNotes/components/modals/RenderMessage.tsx
@@ -4,10 +4,11 @@
* SPDX-License-Identifier: GPL-3.0-or-later
*/
+import { copyToClipboard } from "@utils/clipboard";
import { classes } from "@utils/misc";
import { ModalProps } from "@utils/modal";
import { findByCode, findByCodeLazy, findByProps, findComponentByCodeLazy } from "@webpack";
-import { Clipboard, ContextMenuApi, FluxDispatcher, Menu, NavigationRouter, React } from "@webpack/common";
+import { ContextMenuApi, FluxDispatcher, Menu, NavigationRouter, React } from "@webpack/common";
import noteHandler from "../../NoteHandler";
import { HolyNotes } from "../../types";
@@ -139,13 +140,13 @@ const NoteContextMenu = (
Clipboard.copy(note.content)}
+ action={() => copyToClipboard(note.content)}
/>
{note?.attachments.length ? (
Clipboard.copy(note.attachments[0].url)}
+ action={() => copyToClipboard(note.attachments[0].url)}
/>) : null}
Clipboard.copy(note.id)}
+ action={() => copyToClipboard(note.id)}
/>
);
diff --git a/src/equicordplugins/iconViewer/rawModal.tsx b/src/equicordplugins/iconViewer/rawModal.tsx
index 7bcfa3af..f6092a19 100644
--- a/src/equicordplugins/iconViewer/rawModal.tsx
+++ b/src/equicordplugins/iconViewer/rawModal.tsx
@@ -5,6 +5,7 @@
*/
import { CodeBlock } from "@components/CodeBlock";
+import { copyToClipboard } from "@utils/clipboard";
import { Margins } from "@utils/margins";
import { classes } from "@utils/misc";
import {
@@ -41,9 +42,7 @@ function ModalComponent(props: { func: Function; iconName: string; color: number
color={Button.Colors.PRIMARY}
className={"vc-iv-raw-modal-copy-button"}
onClick={() => {
- // silly typescript
- // @ts-ignore
- Clipboard.copy(String(func));
+ copyToClipboard(String(func));
Toasts.show({
id: Toasts.genId(),
message: `Copied raw \`${iconName}\` to clipboard`,
diff --git a/src/equicordplugins/iconViewer/subComponents.tsx b/src/equicordplugins/iconViewer/subComponents.tsx
index abb655c9..4132df17 100644
--- a/src/equicordplugins/iconViewer/subComponents.tsx
+++ b/src/equicordplugins/iconViewer/subComponents.tsx
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later
*/
+import { copyToClipboard } from "@utils/clipboard";
import { getIntlMessage } from "@utils/discord";
import { Margins } from "@utils/margins";
import { classes } from "@utils/misc";
@@ -27,8 +28,7 @@ export type ClickableProps = Prop
export function IconTooltip({ children, copy, className, ...props }: ClickableProps & { children: string; copy: string; }) {
return
{
- // @ts-ignore
- Clipboard.copy(copy);
+ copyToClipboard(copy);
}} {...props}>{children}
;
}
diff --git a/src/equicordplugins/themeLibrary/components/ThemeInfoModal.tsx b/src/equicordplugins/themeLibrary/components/ThemeInfoModal.tsx
index 1cba1e18..5954c06e 100644
--- a/src/equicordplugins/themeLibrary/components/ThemeInfoModal.tsx
+++ b/src/equicordplugins/themeLibrary/components/ThemeInfoModal.tsx
@@ -6,13 +6,14 @@
import { CodeBlock } from "@components/CodeBlock";
import { Heart } from "@components/Heart";
+import { copyToClipboard } from "@utils/clipboard";
import { openInviteModal } from "@utils/discord";
import { Margins } from "@utils/margins";
import { classes } from "@utils/misc";
import { ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModal } from "@utils/modal";
import type { PluginNative } from "@utils/types";
import { findComponentByCodeLazy } from "@webpack";
-import { Button, Clipboard, Forms, Parser, React, showToast, Toasts } from "@webpack/common";
+import { Button, Forms, Parser, React, showToast, Toasts } from "@webpack/common";
import { Theme, ThemeInfoModalProps } from "../types";
import { ClockIcon, DownloadIcon, WarningIcon } from "../utils/Icons";
@@ -145,7 +146,7 @@ export const ThemeInfoModal: React.FC = ({ author, theme, .
diff --git a/src/equicordplugins/themeLibrary/utils/settings.tsx b/src/equicordplugins/themeLibrary/utils/settings.tsx
index a535ca5a..939d51dd 100644
--- a/src/equicordplugins/themeLibrary/utils/settings.tsx
+++ b/src/equicordplugins/themeLibrary/utils/settings.tsx
@@ -8,8 +8,9 @@ import * as DataStore from "@api/DataStore";
import { definePluginSettings } from "@api/Settings";
import { classNameFactory } from "@api/Styles";
import { OpenExternalIcon } from "@components/Icons";
+import { copyToClipboard } from "@utils/clipboard";
import { OptionType } from "@utils/types";
-import { Button, Clipboard, Forms, Toasts } from "@webpack/common";
+import { Button, Forms, Toasts } from "@webpack/common";
import { authorizeUser, deauthorizeUser } from "./auth";
@@ -39,7 +40,7 @@ export const settings = definePluginSettings({
}
});
- Clipboard.copy(token);
+ copyToClipboard(token);
Toasts.show({
message: "Copied to Clipboard!",