142 lines
4.5 KiB
TypeScript
142 lines
4.5 KiB
TypeScript
/*
|
|
* Vencord, a modification for Discord's desktop app
|
|
* Copyright (c) 2023 Vendicated and contributors
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
import { Channel } from "discord-types/general";
|
|
|
|
import { FluxDispatcher, FluxEvents } from "./utils";
|
|
|
|
export class FluxStore {
|
|
constructor(dispatcher: FluxDispatcher, eventHandlers?: Partial<Record<FluxEvents, (data: any) => void>>);
|
|
|
|
emitChange(): void;
|
|
getDispatchToken(): string;
|
|
getName(): string;
|
|
initialize(): void;
|
|
initializeIfNeeded(): void;
|
|
__getLocalVars(): Record<string, any>;
|
|
}
|
|
|
|
export interface Flux {
|
|
Store: typeof FluxStore;
|
|
}
|
|
|
|
export class WindowStore extends FluxStore {
|
|
isElementFullScreen(): boolean;
|
|
isFocused(): boolean;
|
|
windowSize(): Record<"width" | "height", number>;
|
|
}
|
|
|
|
type Emoji = CustomEmoji | UnicodeEmoji;
|
|
export interface CustomEmoji {
|
|
allNamesString: string;
|
|
animated: boolean;
|
|
available: boolean;
|
|
guildId: string;
|
|
id: string;
|
|
managed: boolean;
|
|
name: string;
|
|
originalName?: string;
|
|
require_colons: boolean;
|
|
roles: string[];
|
|
url: string;
|
|
}
|
|
|
|
export interface UnicodeEmoji {
|
|
diversityChildren: Record<any, any>;
|
|
emojiObject: {
|
|
names: string[];
|
|
surrogates: string;
|
|
unicodeVersion: number;
|
|
};
|
|
index: number;
|
|
surrogates: string;
|
|
uniqueName: string;
|
|
useSpriteSheet: boolean;
|
|
get allNamesString(): string;
|
|
get animated(): boolean;
|
|
get defaultDiversityChild(): any;
|
|
get hasDiversity(): boolean | undefined;
|
|
get hasDiversityParent(): boolean | undefined;
|
|
get hasMultiDiversity(): boolean | undefined;
|
|
get hasMultiDiversityParent(): boolean | undefined;
|
|
get managed(): boolean;
|
|
get name(): string;
|
|
get names(): string[];
|
|
get optionallyDiverseSequence(): string | undefined;
|
|
get unicodeVersion(): number;
|
|
get url(): string;
|
|
}
|
|
|
|
export class EmojiStore extends FluxStore {
|
|
getCustomEmojiById(id?: string | null): CustomEmoji;
|
|
getUsableCustomEmojiById(id?: string | null): CustomEmoji;
|
|
getGuilds(): Record<string, {
|
|
id: string;
|
|
_emojiMap: Record<string, CustomEmoji>;
|
|
_emojis: CustomEmoji[];
|
|
get emojis(): CustomEmoji[];
|
|
get rawEmojis(): CustomEmoji[];
|
|
_usableEmojis: CustomEmoji[];
|
|
get usableEmojis(): CustomEmoji[];
|
|
_emoticons: any[];
|
|
get emoticons(): any[];
|
|
}>;
|
|
getGuildEmoji(guildId?: string | null): CustomEmoji[];
|
|
getNewlyAddedEmoji(guildId?: string | null): CustomEmoji[];
|
|
getTopEmoji(guildId?: string | null): CustomEmoji[];
|
|
getTopEmojisMetadata(guildId?: string | null): {
|
|
emojiIds: string[];
|
|
topEmojisTTL: number;
|
|
};
|
|
hasPendingUsage(): boolean;
|
|
hasUsableEmojiInAnyGuild(): boolean;
|
|
searchWithoutFetchingLatest(data: any): any;
|
|
getSearchResultsOrder(...args: any[]): any;
|
|
getState(): {
|
|
pendingUsages: { key: string, timestamp: number; }[];
|
|
};
|
|
searchWithoutFetchingLatest(data: {
|
|
channel: Channel,
|
|
query: string;
|
|
count?: number;
|
|
intention: number;
|
|
includeExternalGuilds?: boolean;
|
|
matchComparator?(name: string): boolean;
|
|
}): Record<"locked" | "unlocked", Emoji[]>;
|
|
|
|
getDisambiguatedEmojiContext(): {
|
|
backfillTopEmojis: Record<any, any>;
|
|
customEmojis: Record<string, CustomEmoji>;
|
|
emojisById: Record<string, CustomEmoji>;
|
|
emojisByName: Record<string, CustomEmoji>;
|
|
emoticonRegex: RegExp | null;
|
|
emoticonsByName: Record<string, any>;
|
|
escapedEmoticonNames: string;
|
|
favoriteNamesAndIds?: any;
|
|
favorites?: any;
|
|
frequentlyUsed?: any;
|
|
groupedCustomEmojis: Record<string, CustomEmoji[]>;
|
|
guildId?: string;
|
|
isFavoriteEmojiWithoutFetchingLatest(e: Emoji): boolean;
|
|
newlyAddedEmoji: Record<string, CustomEmoji[]>;
|
|
topEmojis?: any;
|
|
unicodeAliases: Record<string, string>;
|
|
get favoriteEmojisWithoutFetchingLatest(): Emoji[];
|
|
};
|
|
}
|