diff --git a/src/globals.d.ts b/src/globals.d.ts index 292fa96..8c5ee10 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -5,6 +5,7 @@ declare global { export var appSettings: { set(setting: string, v: any): void; }; + export var DiscordNative: any; interface Window { webpackChunkdiscord_app: { diff --git a/src/utils/discord.ts b/src/utils/discord.ts new file mode 100644 index 0000000..53206bb --- /dev/null +++ b/src/utils/discord.ts @@ -0,0 +1,10 @@ +import { Guild } from "discord-types/general"; +import { ChannelStore, SelectedChannelStore, GuildStore } from "../webpack/common"; + +export function getCurrentChannel() { + return ChannelStore.getChannel(SelectedChannelStore.getChannelId()); +} + +export function getCurrentGuild(): Guild | undefined { + return GuildStore.getGuild(getCurrentChannel()?.guild_id); +} diff --git a/src/utils/misc.tsx b/src/utils/misc.tsx index f2228f8..a7d781a 100644 --- a/src/utils/misc.tsx +++ b/src/utils/misc.tsx @@ -125,3 +125,7 @@ export function humanFriendlyJoin(elements: any[], mapper: (e: any) => string = export function classes(...classes: string[]) { return classes.join(" "); } + +export function sleep(ms: number): Promise { + return new Promise(r => setTimeout(r, ms)); +} diff --git a/src/webpack/common.tsx b/src/webpack/common.tsx index 1a15489..b795c06 100644 --- a/src/webpack/common.tsx +++ b/src/webpack/common.tsx @@ -8,7 +8,12 @@ export const Margins = lazyWebpack(filters.byProps(["marginTop20"])); export let FluxDispatcher: Other.FluxDispatcher; export let React: typeof import("react"); + +export let GuildStore: Stores.GuildStore; export let UserStore: Stores.UserStore; +export let SelectedChannelStore: Stores.SelectedChannelStore; +export let ChannelStore: Stores.ChannelStore; + export const Forms = {} as { FormTitle: Components.FormTitle; FormSection: any; @@ -86,7 +91,12 @@ waitFor(["dispatch", "subscribe"], m => { }; m.subscribe("CONNECTION_OPEN", cb); }); + waitFor(["getCurrentUser", "initialize"], m => UserStore = m); +waitFor("getSortedPrivateChannels", m => ChannelStore = m); +waitFor("getCurrentlySelectedChannelId", m => SelectedChannelStore = m); +waitFor("getGuildCount", m => GuildStore = m); + waitFor(["Hovers", "Looks", "Sizes"], m => Button = m); waitFor(filters.byCode("helpdeskArticleId"), m => Switch = m); waitFor(["Positions", "Colors"], m => Tooltip = m);