aboutsummaryrefslogtreecommitdiff
path: root/src/utils/misc.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/misc.tsx')
-rw-r--r--src/utils/misc.tsx24
1 files changed, 22 insertions, 2 deletions
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);
}