From 4760af7f0ee275caa1eee440f4945032057d2b56 Mon Sep 17 00:00:00 2001
From: 12944qwerty <qwerty12944qwerty@gmail.com>
Date: Fri, 2 Dec 2022 09:38:52 -0600
Subject: add ViewRaw plugin & MiniPopover API (#275)

Co-authored-by: Vendicated <vendicated@riseup.net>
---
 src/utils/misc.tsx | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

(limited to 'src/utils/misc.tsx')

diff --git a/src/utils/misc.tsx b/src/utils/misc.tsx
index 4ae3fd5..d9164a0 100644
--- a/src/utils/misc.tsx
+++ b/src/utils/misc.tsx
@@ -16,7 +16,7 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
 
-import { React } from "@webpack/common";
+import { Clipboard, React, Toasts } from "@webpack/common";
 
 /**
  * Makes a lazy function. On first call, the value is computed.
@@ -175,5 +175,25 @@ export function suppressErrors<F extends Function>(name: string, func: F, thisOb
  */
 export function makeCodeblock(text: string, language?: string) {
     const chars = "```";
-    return `${chars}${language || ""}\n${text}\n${chars}`;
+    return `${chars}${language || ""}\n${text.replaceAll("```", "\\`\\`\\`")}\n${chars}`;
+}
+
+export function copyWithToast(text: string, toastMessage = "Copied to clipboard!") {
+    if (Clipboard.SUPPORTS_COPY) {
+        Clipboard.copy(text);
+    } else {
+        toastMessage = "Your browser does not support copying to clipboard";
+    }
+    Toasts.show({
+        message: toastMessage,
+        id: Toasts.genId(),
+        type: Toasts.Type.SUCCESS
+    });
+}
+
+/**
+ * Check if obj is a true object: of type "object" and not null or array
+ */
+export function isObject(obj: unknown): obj is object {
+    return typeof obj === "object" && obj !== null && !Array.isArray(obj);
 }
-- 
cgit 

