From 02ed954ce4f9a78478c9f93ff22fa7863917879f Mon Sep 17 00:00:00 2001 From: Vendicated Date: Wed, 28 Sep 2022 12:15:30 +0200 Subject: Add clickableRoleDot plugin, toasts --- src/webpack/common.tsx | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'src/webpack/common.tsx') diff --git a/src/webpack/common.tsx b/src/webpack/common.tsx index f3cb018..6e93e27 100644 --- a/src/webpack/common.tsx +++ b/src/webpack/common.tsx @@ -7,11 +7,50 @@ import type Other from "discord-types/other"; export let FluxDispatcher: Other.FluxDispatcher; export let React: typeof import("react"); export let UserStore: Stores.UserStore; -export let Forms: any = {}; +export const Forms: any = {}; export let Button: any; export let Switch: any; export let Tooltip: Components.Tooltip; +const ToastType = { + MESSAGE: 0, + SUCCESS: 1, + FAILURE: 2, + CUSTOM: 3 +}; +const ToastPosition = { + TOP: 0, + BOTTOM: 1 +}; + +export const Toasts = { + Type: ToastType, + Position: ToastPosition, + // what's less likely than getting 0 from Math.random()? Getting it twice in a row + genId: () => (Math.random() || Math.random()).toString(36).slice(2) +} as { + Type: typeof ToastType, + Position: typeof ToastPosition; + genId(): string; + show(data: { + message: string, + id: string, + /** + * Toasts.Type + */ + type: number, + options?: { + /** + * Toasts.Position + */ + position?: number; + component?: React.ReactNode, + duration?: number; + }; + }): void; + pop(): void; +}; + waitFor("useState", m => React = m); waitFor(["dispatch", "subscribe"], m => { FluxDispatcher = m; @@ -35,3 +74,7 @@ waitFor(m => { const s = m.toString(); return s.length < 200 && s.includes("divider"); }, m => Forms.FormDivider = m); + +// This is the same module but this is easier +waitFor(filters.byCode("currentToast?"), m => Toasts.show = m); +waitFor(filters.byCode("currentToast:null"), m => Toasts.pop = m); -- cgit