Fixes
This commit is contained in:
parent
cfec48401b
commit
e68a69641c
82 changed files with 403 additions and 785 deletions
|
|
@ -19,7 +19,8 @@ import { HashLink } from "@components/settings/tabs/updater/Components";
|
|||
import { Margins } from "@utils/margins";
|
||||
import { useAwaiter } from "@utils/react";
|
||||
import { getRepo, UpdateLogger } from "@utils/updater";
|
||||
import { Alerts, React, Toasts } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { Alerts, React, showToast } from "@webpack/common";
|
||||
|
||||
import gitHash from "~git-hash";
|
||||
|
||||
|
|
@ -352,13 +353,8 @@ function ChangelogContent() {
|
|||
const logged = await ensureLocalUpdateLogged();
|
||||
if (!logged) {
|
||||
setChangelog([]);
|
||||
Toasts.show({
|
||||
message: "Already up to date with repository",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.MESSAGE,
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM,
|
||||
},
|
||||
showToast("Already up to date with repository", "message", {
|
||||
position: ToastPosition.BOTTOM,
|
||||
});
|
||||
}
|
||||
return;
|
||||
|
|
@ -384,26 +380,16 @@ function ChangelogContent() {
|
|||
await loadChangelogHistory();
|
||||
setRecentlyChecked(true);
|
||||
|
||||
Toasts.show({
|
||||
message: `Found ${updates.value.length} commit${updates.value.length === 1 ? "" : "s"} from repository`,
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM,
|
||||
},
|
||||
showToast(`Found ${updates.value.length} commit${updates.value.length === 1 ? "" : "s"} from repository`, "success", {
|
||||
position: ToastPosition.BOTTOM,
|
||||
});
|
||||
} else {
|
||||
const logged = await ensureLocalUpdateLogged();
|
||||
setRecentlyChecked(true);
|
||||
Toasts.show({
|
||||
message: logged
|
||||
showToast(logged
|
||||
? "Logged commits from your latest update"
|
||||
: "Repository is up to date with your local copy",
|
||||
id: Toasts.genId(),
|
||||
type: logged ? Toasts.Type.SUCCESS : Toasts.Type.MESSAGE,
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM,
|
||||
},
|
||||
: "Repository is up to date with your local copy", logged ? "success" : "message", {
|
||||
position: ToastPosition.BOTTOM,
|
||||
});
|
||||
if (!logged) {
|
||||
setChangelog([]);
|
||||
|
|
@ -422,13 +408,8 @@ function ChangelogContent() {
|
|||
setError(errorMessage);
|
||||
|
||||
// funny little error toast hopefully doesn't happen!
|
||||
Toasts.show({
|
||||
message: "Could not fetch commits from repository",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.FAILURE,
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM,
|
||||
},
|
||||
showToast("Could not fetch commits from repository", "failure", {
|
||||
position: ToastPosition.BOTTOM,
|
||||
});
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
|
|
@ -520,13 +501,8 @@ function ChangelogContent() {
|
|||
await clearChangelogHistory();
|
||||
await loadChangelogHistory();
|
||||
setShowHistory(false);
|
||||
Toasts.show({
|
||||
message: "All logs have been cleared",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM,
|
||||
},
|
||||
showToast("All logs have been cleared", "success", {
|
||||
position: ToastPosition.BOTTOM,
|
||||
});
|
||||
},
|
||||
});
|
||||
|
|
@ -659,13 +635,8 @@ function ChangelogContent() {
|
|||
Array.from(expandedLogs).filter(id => id !== logId),
|
||||
),
|
||||
);
|
||||
Toasts.show({
|
||||
message: "Log has been cleared",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM,
|
||||
},
|
||||
showToast("Log has been cleared", "success", {
|
||||
position: ToastPosition.BOTTOM,
|
||||
});
|
||||
},
|
||||
});
|
||||
|
|
|
|||
|
|
@ -34,8 +34,9 @@ import { Margins } from "@utils/margins";
|
|||
import { classes, isObjectEmpty } from "@utils/misc";
|
||||
import { OptionType, Plugin, PluginTag } from "@utils/types";
|
||||
import { RenderModalProps, User } from "@vencord/discord-types";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { findComponentByCodeLazy, findCssClassesLazy } from "@webpack";
|
||||
import { Clickable, FluxDispatcher, Modal, openModal, React, Text, Toasts, Tooltip, useEffect, useMemo, UserStore, UserSummaryItem, UserUtils, useState } from "@webpack/common";
|
||||
import { Clickable, FluxDispatcher, Modal, openModal, React, showToast,Text, Tooltip, useEffect, useMemo, UserStore, UserSummaryItem, UserUtils, useState } from "@webpack/common";
|
||||
import { Constructor } from "type-fest";
|
||||
|
||||
import { PluginMeta } from "~plugins";
|
||||
|
|
@ -324,13 +325,8 @@ function resetSettings(plugin: Plugin, onRestartNeeded?: (pluginName: string) =>
|
|||
onRestartNeeded?.(plugin.name);
|
||||
}
|
||||
|
||||
Toasts.show({
|
||||
message: `Settings for ${pluginName} have been reset.`,
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
position: Toasts.Position.TOP
|
||||
}
|
||||
showToast(`Settings for ${pluginName} have been reset.`, "success", {
|
||||
position: ToastPosition.TOP
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ import { classes } from "@utils/misc";
|
|||
import { PluginTarget } from "@utils/pluginTargets";
|
||||
import { useAwaiter, useCleanupEffect, useIntersection } from "@utils/react";
|
||||
import { PluginTag, PluginTags } from "@utils/types";
|
||||
import { Alerts, ConfirmModal, lodash, openModal, Parser, React, SearchableSelect, Select, TextInput, Toasts, Tooltip, useCallback, useMemo, useRef, useState } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { Alerts, ConfirmModal, lodash, openModal, Parser, React, SearchableSelect, Select, showToast,TextInput, Tooltip, useCallback, useMemo, useRef, useState } from "@webpack/common";
|
||||
import { JSX } from "react";
|
||||
|
||||
import Plugins, { ExcludedPlugins, PluginMeta } from "~plugins";
|
||||
|
|
@ -52,13 +53,8 @@ export const cl = classNameFactory("vc-plugins-");
|
|||
export const logger = new Logger("PluginSettings", "#a6d189");
|
||||
|
||||
function showErrorToast(message: string) {
|
||||
Toasts.show({
|
||||
message,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast(message, "failure", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ import { copyWithToast } from "@utils/discord";
|
|||
import { Margins } from "@utils/margins";
|
||||
import { classes } from "@utils/misc";
|
||||
import { getStylusWebStoreUrl } from "@utils/web";
|
||||
import { React, Select, showToast, TextInput, Toasts, useEffect, useMemo, useRef, useState } from "@webpack/common";
|
||||
import { React, Select, showToast, TextInput, useEffect, useMemo, useRef, useState } from "@webpack/common";
|
||||
import { SyntheticEvent } from "react";
|
||||
|
||||
import { OnlineThemesSection } from "./OnlineThemes";
|
||||
|
|
@ -263,9 +263,9 @@ function ThemesTab() {
|
|||
setOnlineThemes(prev =>
|
||||
prev?.map(t => t.link === link ? updatedTheme : t) ?? null
|
||||
);
|
||||
showToast("Theme refreshed!", Toasts.Type.SUCCESS);
|
||||
showToast("Theme refreshed!", "success");
|
||||
} catch {
|
||||
showToast("Failed to refresh theme", Toasts.Type.FAILURE);
|
||||
showToast("Failed to refresh theme", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -288,7 +288,7 @@ function ThemesTab() {
|
|||
URL.revokeObjectURL(url);
|
||||
}
|
||||
} catch {
|
||||
showToast("Failed to download theme", Toasts.Type.FAILURE);
|
||||
showToast("Failed to download theme", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import { Margins } from "@utils/margins";
|
|||
import { relaunch } from "@utils/native";
|
||||
import { changes, checkForUpdates, update, updateError } from "@utils/updater";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { ConfirmModal, openModal, React, showToast, Toasts, useState } from "@webpack/common";
|
||||
import { ConfirmModal, openModal, React, showToast, useState } from "@webpack/common";
|
||||
|
||||
import { runWithDispatch } from "./runWithDispatch";
|
||||
|
||||
|
|
@ -91,13 +91,8 @@ export function Updatable(props: CommonProps) {
|
|||
} else {
|
||||
setUpdates([]);
|
||||
|
||||
Toasts.show({
|
||||
message: "No updates found!",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.MESSAGE,
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast("No updates found!", "message", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
})}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import { definePluginSettings } from "@api/Settings";
|
|||
import { EquicordDevs } from "@utils/constants";
|
||||
import { classNameFactory } from "@utils/css";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { ColorUtils, React, showToast, Toasts } from "@webpack/common";
|
||||
import { ColorUtils, React, showToast } from "@webpack/common";
|
||||
|
||||
const cl = classNameFactory("vc-better-audio-player-");
|
||||
const CORS_PROXY = "https://cors.keiran0.workers.dev?url=";
|
||||
|
|
@ -39,7 +39,7 @@ function validateColor(value: string, key: string, fallback: string) {
|
|||
}
|
||||
} catch { /* invalid hex */ }
|
||||
|
||||
showToast(`Invalid color format for ${key}, use "R, G, B" or "#RRGGBB"`, Toasts.Type.FAILURE);
|
||||
showToast(`Invalid color format for ${key}, use "R, G, B" or "#RRGGBB"`, "failure");
|
||||
settings.store[key] = fallback;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { Logger } from "@utils/Logger";
|
|||
import { classes, pluralise } from "@utils/misc";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { chooseFile, saveFile } from "@utils/web";
|
||||
import { Alerts, Button, React, showToast, Toasts, useCallback, useEffect, useRef, useState } from "@webpack/common";
|
||||
import { Alerts, Button, React, showToast, useCallback, useEffect, useRef, useState } from "@webpack/common";
|
||||
|
||||
import { cl, croppedLabel, Shelf } from "./components/Shelf";
|
||||
import { add, clear, CropState, currentApplied, Entry, exportAll, forget, forgetCrops, getFile, getThumbs, Group, importAll, Kind, previousApplied, readIndex, recordApplied, saveCrop, toDataUrl, togglePin, touch } from "./library";
|
||||
|
|
@ -86,7 +86,7 @@ const settings = definePluginSettings({
|
|||
onConfirm: () => forgetCrops()
|
||||
.then(count => showToast(
|
||||
count ? `Forgot the framing on ${pluralise(count, "picture")}` : "Nothing was framed",
|
||||
Toasts.Type.SUCCESS
|
||||
"success"
|
||||
))
|
||||
.catch(err => logger.error("could not forget the remembered crops", err))
|
||||
})}
|
||||
|
|
@ -165,7 +165,7 @@ async function exportLibrary() {
|
|||
else saveFile(new File([data], FILENAME, { type: "application/json" }));
|
||||
} catch (err) {
|
||||
logger.error("could not export the library", err);
|
||||
showToast("Could not export your pictures", Toasts.Type.FAILURE);
|
||||
showToast("Could not export your pictures", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -186,11 +186,11 @@ async function importLibrary() {
|
|||
const added = await importAll(json, settings.store.librarySize);
|
||||
showToast(
|
||||
added ? `Added ${pluralise(added, "picture")}` : "Nothing new in that file",
|
||||
Toasts.Type.SUCCESS
|
||||
"success"
|
||||
);
|
||||
} catch (err) {
|
||||
logger.error("could not import the library", err);
|
||||
showToast("Could not read that file", Toasts.Type.FAILURE);
|
||||
showToast("Could not read that file", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -324,7 +324,7 @@ function PickerShelf({ kind, open, complete, maxSize }: {
|
|||
|
||||
const onPick = useCallback(async (entry: Entry) => {
|
||||
const blob = await getFile(entry.id);
|
||||
if (!blob) return showToast("That picture is missing", Toasts.Type.FAILURE);
|
||||
if (!blob) return showToast("That picture is missing", "failure");
|
||||
|
||||
const file = new File([blob], entry.name, { type: blob.type });
|
||||
await touch(entry.id);
|
||||
|
|
@ -344,7 +344,7 @@ function PickerShelf({ kind, open, complete, maxSize }: {
|
|||
}, [bump]);
|
||||
|
||||
const accept = useCallback(async (file: File) => {
|
||||
if (maxSize && file.size > maxSize) return showToast("That picture is too big for Discord", Toasts.Type.FAILURE);
|
||||
if (maxSize && file.size > maxSize) return showToast("That picture is too big for Discord", "failure");
|
||||
|
||||
try {
|
||||
const entry = await add(file, kind, "original", settings.store.librarySize);
|
||||
|
|
@ -352,7 +352,7 @@ function PickerShelf({ kind, open, complete, maxSize }: {
|
|||
await hand(entry.id, file, settings.store.rememberCrop ? entry.crop ?? null : null);
|
||||
} catch (err) {
|
||||
logger.error("could not take that picture", err);
|
||||
showToast("Could not use that picture", Toasts.Type.FAILURE);
|
||||
showToast("Could not use that picture", "failure");
|
||||
}
|
||||
}, [kind, hand, bump, maxSize]);
|
||||
|
||||
|
|
@ -432,7 +432,7 @@ function EditorShelf({ Original, ownProps }: { Original: React.ComponentType<Edi
|
|||
await show(entry.id, file, settings.store.rememberCrop ? entry.crop ?? null : null);
|
||||
} catch (err) {
|
||||
logger.error("could not take that picture", err);
|
||||
showToast("Could not use that picture", Toasts.Type.FAILURE);
|
||||
showToast("Could not use that picture", "failure");
|
||||
}
|
||||
}, [kind, show, bump, setGroup]);
|
||||
|
||||
|
|
@ -440,7 +440,7 @@ function EditorShelf({ Original, ownProps }: { Original: React.ComponentType<Edi
|
|||
|
||||
const onPick = useCallback(async (entry: Entry) => {
|
||||
const blob = await getFile(entry.id);
|
||||
if (!blob) return showToast("That picture is missing", Toasts.Type.FAILURE);
|
||||
if (!blob) return showToast("That picture is missing", "failure");
|
||||
|
||||
await touch(entry.id);
|
||||
bump();
|
||||
|
|
@ -464,7 +464,7 @@ function EditorShelf({ Original, ownProps }: { Original: React.ComponentType<Edi
|
|||
};
|
||||
const run = () => save().catch(err => {
|
||||
logger.error("could not keep the cropped copy", err);
|
||||
showToast("Could not keep the cropped copy", Toasts.Type.FAILURE);
|
||||
showToast("Could not keep the cropped copy", "failure");
|
||||
});
|
||||
|
||||
if (!settings.store.askBeforeSavingCropped) return void run();
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import { DataStore } from "@api/index";
|
||||
import { isPluginEnabled } from "@api/PluginManager";
|
||||
import { classNameFactory } from "@utils/css";
|
||||
import { NavigationRouter, SelectedChannelStore, SelectedGuildStore, showToast, Toasts, useEffect, useRef, useState } from "@webpack/common";
|
||||
import { NavigationRouter, SelectedChannelStore, SelectedGuildStore, showToast, useEffect, useRef, useState } from "@webpack/common";
|
||||
import { JSX } from "react";
|
||||
|
||||
import { logger, settings } from "./constants";
|
||||
|
|
@ -418,7 +418,7 @@ export async function openStartupTabs(props: BasicChannelTabsProps & { userId: s
|
|||
savedTabs = persistedTabs?.[userId];
|
||||
} catch (error) {
|
||||
logger.error("Failed to load persisted tabs from DataStore", error);
|
||||
showToast("Failed to load saved tabs", Toasts.Type.FAILURE);
|
||||
showToast("Failed to load saved tabs", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -430,14 +430,14 @@ export async function openStartupTabs(props: BasicChannelTabsProps & { userId: s
|
|||
|
||||
if (keepCurrentChannel) {
|
||||
hydratedUserId = undefined;
|
||||
showToast("Not restoring tabs as KeepCurrentChannel is enabled", Toasts.Type.FAILURE);
|
||||
showToast("Not restoring tabs as KeepCurrentChannel is enabled", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (settings.store.onStartup) {
|
||||
case "remember": {
|
||||
if (!savedTabs?.openTabs.length) {
|
||||
showToast("Failed to restore tabs", Toasts.Type.FAILURE);
|
||||
showToast("Failed to restore tabs", "failure");
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import { Flex } from "@components/Flex";
|
|||
import { Heading } from "@components/Heading";
|
||||
import { Paragraph } from "@components/Paragraph";
|
||||
import type { RenderModalProps } from "@vencord/discord-types";
|
||||
import { Checkbox, FluxDispatcher, MessageActions, Modal, openModal, PendingReplyStore, showToast, Toasts, useEffect, useState } from "@webpack/common";
|
||||
import { Checkbox, FluxDispatcher, MessageActions, Modal, openModal, PendingReplyStore, showToast, useEffect, useState } from "@webpack/common";
|
||||
|
||||
import { ApplicationField, BooleanField, DateTimeField, getDateTimeLocalValue, ParticipantField, TextField } from "./fields";
|
||||
import { abortActiveClipUploads, type ClipMetadata, getClipCreatedAt, getClipTitleFromName, getDefaultClipTitle, getDefaultFileName, getErrorMessage, getParticipantIds, getString, isValidDate, pickClipFile, uploadClipFile } from "./upload";
|
||||
|
|
@ -52,7 +52,7 @@ function UploadClipFileModal({ modalProps, channelId, clip }: { modalProps: Rend
|
|||
result = await pickClipFile(parseMetadata);
|
||||
if (!result) return;
|
||||
} catch (error) {
|
||||
showToast(getErrorMessage(error), Toasts.Type.FAILURE);
|
||||
showToast(getErrorMessage(error), "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { Logger } from "@utils/Logger";
|
|||
import { isObject } from "@utils/misc";
|
||||
import type { PluginNative } from "@utils/types";
|
||||
import type { User } from "@vencord/discord-types";
|
||||
import { Constants, MediaEngineStore, RestAPI, showToast, SnowflakeUtils, Toasts } from "@webpack/common";
|
||||
import { Constants, MediaEngineStore, RestAPI, showToast, SnowflakeUtils } from "@webpack/common";
|
||||
|
||||
import { convertClipToMp4 } from "./ffmpeg";
|
||||
const logger = new Logger("ClipUpload");
|
||||
|
|
@ -329,7 +329,7 @@ function shouldRetryWithFFmpeg(error: unknown) {
|
|||
|
||||
export async function uploadClipFile(file: File, options: ClipUploadOptions) {
|
||||
try {
|
||||
showToast("Checking clip file.", Toasts.Type.MESSAGE);
|
||||
showToast("Checking clip file.", "message");
|
||||
|
||||
const uploadFile = await prepareClipFile(file, options.fileName);
|
||||
|
||||
|
|
@ -338,15 +338,15 @@ export async function uploadClipFile(file: File, options: ClipUploadOptions) {
|
|||
} catch (error) {
|
||||
if (!shouldRetryWithFFmpeg(error)) throw error;
|
||||
|
||||
showToast("Converting clip file.", Toasts.Type.MESSAGE);
|
||||
showToast("Converting clip file.", "message");
|
||||
await sendClipUpload(await stampVideoFile(await convertClipToMp4(file, options.fileName), options.fileName), options);
|
||||
}
|
||||
|
||||
showToast("Clip uploaded.", Toasts.Type.SUCCESS);
|
||||
showToast("Clip uploaded.", "success");
|
||||
return true;
|
||||
} catch (error) {
|
||||
logger.error(error);
|
||||
showToast(getErrorMessage(error), Toasts.Type.FAILURE);
|
||||
showToast(getErrorMessage(error), "failure");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { insertTextIntoChatInputBox } from "@utils/discord";
|
||||
import { parseUrl } from "@utils/misc";
|
||||
import { showToast, Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
import { registerCommands } from "../api/registry";
|
||||
import type { FormPageSpec, PageEntry, PaletteAction, PaletteCommand } from "../api/types";
|
||||
|
|
@ -109,7 +109,7 @@ function commandForm(existing: CustomCommandData | null): PageEntry {
|
|||
: [...store.get(), next]);
|
||||
registerCustomCommands();
|
||||
|
||||
showToast(existing ? "Command saved." : "Command created.", Toasts.Type.SUCCESS);
|
||||
showToast(existing ? "Command saved." : "Command created.", "success");
|
||||
ctx.pop();
|
||||
}
|
||||
};
|
||||
|
|
@ -138,7 +138,7 @@ function toCommand(data: CustomCommandData): PaletteCommand {
|
|||
run() {
|
||||
store.set(store.get().filter(entry => entry.id !== data.id));
|
||||
registerCustomCommands();
|
||||
showToast("Command deleted.", Toasts.Type.SUCCESS);
|
||||
showToast("Command deleted.", "success");
|
||||
}
|
||||
}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import { getUserSettingLazy } from "@api/UserSettings";
|
||||
import type { Theme } from "@vencord/discord-types";
|
||||
import { findByCodeLazy } from "@webpack";
|
||||
import { showToast, ThemeStore, Toasts, VoiceActions } from "@webpack/common";
|
||||
import { showToast, ThemeStore, VoiceActions } from "@webpack/common";
|
||||
|
||||
import type { PaletteCommand } from "../api/types";
|
||||
import { CircleIcon, HeadphonesIcon, MicIcon, MoonIcon } from "../ui/icons";
|
||||
|
|
@ -78,7 +78,7 @@ export const discordCommands: PaletteCommand[] = [
|
|||
label: `Set ${status.label}`,
|
||||
run() {
|
||||
StatusSetting?.updateSetting(status.value);
|
||||
showToast(`Status set to ${status.label}.`, Toasts.Type.SUCCESS);
|
||||
showToast(`Status set to ${status.label}.`, "success");
|
||||
}
|
||||
}]
|
||||
}))
|
||||
|
|
@ -98,7 +98,7 @@ export const discordCommands: PaletteCommand[] = [
|
|||
const currentIdx = THEMES.findIndex(theme => theme.value === ThemeStore.theme);
|
||||
const next = THEMES[(currentIdx + 1) % THEMES.length];
|
||||
updateDiscordTheme({ theme: next.value });
|
||||
showToast(`Theme set to ${next.label}.`, Toasts.Type.SUCCESS);
|
||||
showToast(`Theme set to ${next.label}.`, "success");
|
||||
}
|
||||
}]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { Logger } from "@utils/Logger";
|
||||
import { SettingsRouter, showToast, Toasts } from "@webpack/common";
|
||||
import { SettingsRouter, showToast } from "@webpack/common";
|
||||
|
||||
export interface SettingsRoute {
|
||||
route: string;
|
||||
|
|
@ -110,7 +110,7 @@ const logger = new Logger("CommandPalette");
|
|||
export async function openSettingsPage(route: string, label?: string) {
|
||||
const candidates = resolveRouteCandidates(route);
|
||||
if (candidates.length === 0) {
|
||||
showToast("No settings page was provided.", Toasts.Type.FAILURE);
|
||||
showToast("No settings page was provided.", "failure");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -124,6 +124,6 @@ export async function openSettingsPage(route: string, label?: string) {
|
|||
}
|
||||
}
|
||||
|
||||
showToast(`Unable to open ${label ?? "that settings page"}.`, Toasts.Type.FAILURE);
|
||||
showToast(`Unable to open ${label ?? "that settings page"}.`, "failure");
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { isPluginEnabled, pluginRequiresRestart, plugins, startDependenciesRecur
|
|||
import { Settings } from "@api/Settings";
|
||||
import { openPluginModal } from "@components/settings/tabs/plugins/PluginModal";
|
||||
import type { Plugin } from "@utils/types";
|
||||
import { showToast, Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
import type { PaletteCommand, PaletteListItem } from "../api/types";
|
||||
import { GearIcon, PlugIcon } from "../ui/icons";
|
||||
|
|
@ -20,37 +20,37 @@ function togglePlugin(plugin: Plugin) {
|
|||
if (!wasEnabled) {
|
||||
const { restartNeeded, failures } = startDependenciesRecursive(plugin);
|
||||
if (failures.length) {
|
||||
showToast(`Failed to start dependencies: ${failures.join(", ")}`, Toasts.Type.FAILURE);
|
||||
showToast(`Failed to start dependencies: ${failures.join(", ")}`, "failure");
|
||||
return;
|
||||
}
|
||||
if (restartNeeded) {
|
||||
pluginSettings.enabled = true;
|
||||
showToast(`${plugin.name} enabled. Restart to apply.`, Toasts.Type.MESSAGE);
|
||||
showToast(`${plugin.name} enabled. Restart to apply.`, "message");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (pluginRequiresRestart(plugin)) {
|
||||
pluginSettings.enabled = !wasEnabled;
|
||||
showToast(`${plugin.name} ${wasEnabled ? "disabled" : "enabled"}. Restart to apply.`, Toasts.Type.MESSAGE);
|
||||
showToast(`${plugin.name} ${wasEnabled ? "disabled" : "enabled"}. Restart to apply.`, "message");
|
||||
return;
|
||||
}
|
||||
|
||||
if (wasEnabled && !plugin.started) {
|
||||
pluginSettings.enabled = false;
|
||||
showToast(`${plugin.name} disabled.`, Toasts.Type.SUCCESS);
|
||||
showToast(`${plugin.name} disabled.`, "success");
|
||||
return;
|
||||
}
|
||||
|
||||
const result = wasEnabled ? stopPlugin(plugin) : startPlugin(plugin);
|
||||
if (!result) {
|
||||
pluginSettings.enabled = false;
|
||||
showToast(`Error while ${wasEnabled ? "stopping" : "starting"} ${plugin.name}.`, Toasts.Type.FAILURE);
|
||||
showToast(`Error while ${wasEnabled ? "stopping" : "starting"} ${plugin.name}.`, "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
pluginSettings.enabled = !wasEnabled;
|
||||
showToast(`${plugin.name} ${wasEnabled ? "disabled" : "enabled"}.`, Toasts.Type.SUCCESS);
|
||||
showToast(`${plugin.name} ${wasEnabled ? "disabled" : "enabled"}.`, "success");
|
||||
}
|
||||
|
||||
function pluginItems(): PaletteListItem[] {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import { openPrivateChannel, sendMessage } from "@utils/discord";
|
||||
import { sleep } from "@utils/misc";
|
||||
import { CloudUploadPlatform } from "@vencord/discord-types/enums";
|
||||
import { ChannelStore, CloudUploader, IconUtils, RelationshipStore, showToast, Toasts, UserStore } from "@webpack/common";
|
||||
import { ChannelStore, CloudUploader, IconUtils, RelationshipStore, showToast, UserStore } from "@webpack/common";
|
||||
|
||||
import type { FormFieldOption, FormSubmitExtras, PaletteCommand } from "../api/types";
|
||||
import { fuzzyScore } from "../search/ranker";
|
||||
|
|
@ -82,7 +82,7 @@ export const sendDmCommand: PaletteCommand = {
|
|||
});
|
||||
|
||||
const user = UserStore.getUser(values.recipient);
|
||||
showToast(`Message sent to ${user.globalName || user.username}.`, Toasts.Type.SUCCESS);
|
||||
showToast(`Message sent to ${user.globalName || user.username}.`, "success");
|
||||
ctx.close();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import { EquicordDevs } from "@utils/constants";
|
|||
import { Logger } from "@utils/Logger";
|
||||
import definePlugin from "@utils/types";
|
||||
import { User } from "@vencord/discord-types";
|
||||
import { Menu, SelectedGuildStore, Toasts, UserProfileStore } from "@webpack/common";
|
||||
import { Menu, SelectedGuildStore, showToast,UserProfileStore } from "@webpack/common";
|
||||
|
||||
const logger = new Logger("CopyProfileColors");
|
||||
|
||||
|
|
@ -38,11 +38,7 @@ function copyProfileColors(userId: string, guildId?: string) {
|
|||
const colors = getProfileColors(userId, guildId);
|
||||
|
||||
if (!colors) {
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "No profile colors found!",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("No profile colors found!", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -53,18 +49,10 @@ function copyProfileColors(userId: string, guildId?: string) {
|
|||
|
||||
try {
|
||||
copyToClipboard(formattedColors);
|
||||
Toasts.show({
|
||||
type: Toasts.Type.SUCCESS,
|
||||
message: "Profile colors copied to clipboard!",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Profile colors copied to clipboard!", "success");
|
||||
} catch (e) {
|
||||
logger.error("Failed to copy to clipboard:", e);
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "Error copying profile colors!",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Error copying profile colors!", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,8 +8,9 @@ import { copyToClipboard } from "@utils/clipboard";
|
|||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { User } from "@vencord/discord-types";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { findByCodeLazy } from "@webpack";
|
||||
import { Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
interface MakeContextMenuProps {
|
||||
user: User,
|
||||
|
|
@ -44,23 +45,13 @@ export default definePlugin({
|
|||
throw new Error("button_urls does not contain index");
|
||||
}
|
||||
copyToClipboard(button_urls[index]);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Copied URL",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
position: Toasts.Position.TOP
|
||||
}
|
||||
showToast("Copied URL", "success", {
|
||||
position: ToastPosition.TOP
|
||||
});
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Error copying URL, check console for more info",
|
||||
type: Toasts.Type.FAILURE,
|
||||
options: {
|
||||
position: Toasts.Position.TOP
|
||||
}
|
||||
showToast("Error copying URL, check console for more info", "failure", {
|
||||
position: ToastPosition.TOP
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import { Logger } from "@utils/Logger";
|
|||
import { pluralize } from "@utils/misc";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Message, MessageAttachment } from "@vencord/discord-types";
|
||||
import { ChannelStore, showToast, Toasts } from "@webpack/common";
|
||||
import { ChannelStore, showToast } from "@webpack/common";
|
||||
|
||||
const logger = new Logger("DownloadAllAttachments");
|
||||
|
||||
|
|
@ -71,9 +71,9 @@ async function downloadAll(attachments: MessageAttachment[]) {
|
|||
const succeeded = attachments.length - failed;
|
||||
|
||||
if (failed === 0)
|
||||
showToast(`Downloaded ${pluralize(succeeded, "attachment")}.`, Toasts.Type.SUCCESS);
|
||||
showToast(`Downloaded ${pluralize(succeeded, "attachment")}.`, "success");
|
||||
else
|
||||
showToast(`Downloaded ${succeeded} of ${attachments.length} attachments. ${failed} failed.`, Toasts.Type.FAILURE);
|
||||
showToast(`Downloaded ${succeeded} of ${attachments.length} attachments. ${failed} failed.`, "failure");
|
||||
}
|
||||
|
||||
export default definePlugin({
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { Logger } from "@utils/Logger";
|
|||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import type { Channel } from "@vencord/discord-types";
|
||||
import { ChannelType } from "@vencord/discord-types/enums";
|
||||
import { ChannelStore, GuildStore, IconUtils, RelationshipStore, SelectedChannelStore, showToast, Toasts, UserStore } from "@webpack/common";
|
||||
import { ChannelStore, GuildStore, IconUtils, RelationshipStore, SelectedChannelStore, showToast, UserStore } from "@webpack/common";
|
||||
|
||||
import { beginDrag as beginSessionDrag, clearDragState, getLastDropAt, hasActiveDrag, isGuildDragActive, isInputDragSource, isUserDragActive, markDrop, markInputDragSource, scheduleGuildCleanup, shouldIgnoreDrop, startDragWatchdog, stopDragState, touchDrag } from "./dragState";
|
||||
import { type GhostState, hideGhost as hideDragGhost, isGhostVisible, mountGhost as mountDragGhost, scheduleGhostPosition as scheduleDragGhostPosition, showGhost as showDragGhost, unmountGhost as unmountDragGhost } from "./ghost";
|
||||
|
|
@ -293,7 +293,7 @@ export default definePlugin({
|
|||
} catch (error) {
|
||||
clearDragState();
|
||||
logger.error("Failed handling drop", error);
|
||||
showToast("Dragify failed to handle drop.", Toasts.Type.FAILURE);
|
||||
showToast("Dragify failed to handle drop.", "failure");
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import { Logger } from "@utils/Logger";
|
||||
import type { Channel } from "@vencord/discord-types";
|
||||
import { ChannelType } from "@vencord/discord-types/enums";
|
||||
import { ChannelStore, GuildChannelStore, GuildStore, PermissionsBits, PermissionStore, RestAPI, showToast, Toasts } from "@webpack/common";
|
||||
import { ChannelStore, GuildChannelStore, GuildStore, PermissionsBits, PermissionStore, RestAPI, showToast } from "@webpack/common";
|
||||
|
||||
const logger = new Logger("Dragify");
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ function getInviteUrl(code: string) {
|
|||
export async function createInvite(guildId: string, currentChannel: Channel, settings: InviteSettings): Promise<string | null> {
|
||||
const inviteChannel = resolveInviteChannel(guildId, currentChannel);
|
||||
if (!inviteChannel) {
|
||||
showToast("No channel available for invites.", Toasts.Type.FAILURE);
|
||||
showToast("No channel available for invites.", "failure");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ export async function createInvite(guildId: string, currentChannel: Channel, set
|
|||
reused.reason === "missing"
|
||||
? "No reusable invite available."
|
||||
: "Unable to reuse invite.",
|
||||
Toasts.Type.FAILURE,
|
||||
"failure",
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
|
@ -174,11 +174,11 @@ export async function createInvite(guildId: string, currentChannel: Channel, set
|
|||
maxUses: maxUses === 0 ? null : maxUses,
|
||||
uses: 0,
|
||||
});
|
||||
showToast("Invite created.", Toasts.Type.SUCCESS);
|
||||
showToast("Invite created.", "success");
|
||||
return getInviteUrl(code);
|
||||
} catch (error) {
|
||||
logger.error("Failed to create invite", error);
|
||||
showToast("Unable to create invite.", Toasts.Type.FAILURE);
|
||||
showToast("Unable to create invite.", "failure");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -314,7 +314,7 @@ export default definePlugin({
|
|||
match: /case \i\.\i\.WINDOWS:/,
|
||||
replace: 'case "WEB":'
|
||||
},
|
||||
predicate: () => Settings.winNativeTitleBar,
|
||||
predicate: () => Settings.nativeTitleBar,
|
||||
},
|
||||
{
|
||||
find: '"refresh-title-bar-small"',
|
||||
|
|
@ -328,7 +328,7 @@ export default definePlugin({
|
|||
replace: "true"
|
||||
}
|
||||
],
|
||||
predicate: () => Settings.winNativeTitleBar,
|
||||
predicate: () => Settings.nativeTitleBar,
|
||||
},
|
||||
{
|
||||
find: "DirectMessage: getSpringConfigs()",
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import ErrorBoundary from "@components/ErrorBoundary";
|
|||
import { Logger } from "@utils/Logger";
|
||||
import { isEquicordGuild, isEquicordSupport } from "@utils/misc";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { Button, showToast, Toasts } from "@webpack/common";
|
||||
import { Button, showToast } from "@webpack/common";
|
||||
import { JSX } from "react";
|
||||
|
||||
import { toggleEnabled } from "./utils";
|
||||
|
|
@ -50,10 +50,10 @@ export const PluginButtons = ErrorBoundary.wrap(function PluginCards({ message }
|
|||
onClick={async () => {
|
||||
try {
|
||||
const success = await toggleEnabled(matchedPlugin);
|
||||
if (success) showToast(`${label}`, Toasts.Type.SUCCESS);
|
||||
if (success) showToast(`${label}`, "success");
|
||||
} catch (e) {
|
||||
new Logger("EquicordHelper").error("Error while toggling:", e);
|
||||
showToast(`Failed to ${label.toLowerCase()}`, Toasts.Type.FAILURE);
|
||||
showToast(`Failed to ${label.toLowerCase()}`, "failure");
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
|
|
|||
|
|
@ -7,16 +7,12 @@
|
|||
import { showNotice } from "@api/Notices";
|
||||
import { plugins, startDependenciesRecursive, startPlugin, stopPlugin } from "@api/PluginManager";
|
||||
import { Settings } from "@api/Settings";
|
||||
import { Alerts, Toasts } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { Alerts, showToast } from "@webpack/common";
|
||||
|
||||
function showErrorToast(message: string) {
|
||||
Toasts.show({
|
||||
message,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast(message, "failure", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import { Devs } from "@utils/constants";
|
|||
import { classNameFactory } from "@utils/css";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { findComponentByCodeLazy } from "@webpack";
|
||||
import { Constants, GuildStore, IconUtils, MediaEngineStore, Menu, RestAPI, SearchableSelect, SelectedChannelStore, TextInput, Toasts } from "@webpack/common";
|
||||
import { Constants, GuildStore, IconUtils, MediaEngineStore, Menu, RestAPI, SearchableSelect, SelectedChannelStore, showToast,TextInput } from "@webpack/common";
|
||||
|
||||
const cl = classNameFactory("vc-exitsounds-");
|
||||
|
||||
|
|
@ -134,11 +134,7 @@ export default definePlugin({
|
|||
}
|
||||
});
|
||||
} catch {
|
||||
Toasts.show({
|
||||
message: "Oops! Something went wrong.",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("Oops! Something went wrong.", "failure");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -15,7 +15,8 @@ import { showItemInFolder } from "@utils/native";
|
|||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { saveFile } from "@utils/web";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { Menu, Toasts } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { Menu, showToast } from "@webpack/common";
|
||||
|
||||
import { ContactsList } from "./types";
|
||||
|
||||
|
|
@ -175,28 +176,18 @@ export default definePlugin({
|
|||
copyContactToClipboard() {
|
||||
if (this.contactList) {
|
||||
copyToClipboard(JSON.stringify(this.contactList));
|
||||
Toasts.show({
|
||||
message: "Contacts copied to clipboard successfully.",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Contacts copied to clipboard successfully.", "success", {
|
||||
duration: 3000,
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
return;
|
||||
}
|
||||
// reason why you need to click the all tab is because the data is extracted during
|
||||
// the request itself when you fetch all your friends. this is done to avoid sending a
|
||||
// manual request to discord, which may raise suspicion and might even get you terminated.
|
||||
Toasts.show({
|
||||
message: "Contact list is undefined. Click on the \"All\" tab before exporting.",
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Contact list is undefined. Click on the \"All\" tab before exporting.", "failure", {
|
||||
duration: 3000,
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import { useForceUpdater } from "@utils/react";
|
|||
import { PluginNative } from "@utils/types";
|
||||
import { Channel, MessageAttachment } from "@vencord/discord-types";
|
||||
import { findByCodeLazy, findByPropsLazy } from "@webpack";
|
||||
import { Constants, createRoot, DraftType, FluxDispatcher, Humanize, MessageActions, PendingReplyStore, PermissionStore, ReactDOM, RestAPI, Toasts, UploadAttachmentStore, UploadHandler, UploadManager, useCallback, useEffect, useRef, UserSettingsActionCreators, UserSettingsProtoStore, useStateFromStores } from "@webpack/common";
|
||||
import { Constants, createRoot, DraftType, FluxDispatcher, Humanize, MessageActions, PendingReplyStore, PermissionStore, ReactDOM, RestAPI, showToast,UploadAttachmentStore, UploadHandler, UploadManager, useCallback, useEffect, useRef, UserSettingsActionCreators, UserSettingsProtoStore, useStateFromStores } from "@webpack/common";
|
||||
import { deflateSync, inflateSync } from "fflate";
|
||||
import { Key, ReactNode } from "react";
|
||||
import { JsonValue } from "type-fest";
|
||||
|
|
@ -189,13 +189,13 @@ async function fetchAttachment(attachment: MessageAttachment): Promise<File> {
|
|||
export async function sendAttachment(attachment: MessageAttachment, channel: Channel) {
|
||||
const { filename, title, description } = attachment;
|
||||
const file = await fetchAttachment(attachment).catch(() =>
|
||||
Toasts.show({ message: `Couldn't fetch ${filename}`, id: Toasts.genId(), type: Toasts.Type.FAILURE })
|
||||
showToast(`Couldn't fetch ${filename}`, "failure")
|
||||
);
|
||||
if (!file) return;
|
||||
|
||||
// Using promptToUpload instead of addFiles directly since it has file size checks with error popups
|
||||
await UploadHandler.promptToUpload([file], channel, DraftType.ChannelMessage).catch(() =>
|
||||
Toasts.show({ message: `Couldn't upload ${filename}`, id: Toasts.genId(), type: Toasts.Type.FAILURE })
|
||||
showToast(`Couldn't upload ${filename}`, "failure")
|
||||
);
|
||||
|
||||
const uploads = [...UploadAttachmentStore.getUploads(channel.id, DraftType.ChannelMessage)];
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import { classNameFactory } from "@utils/css";
|
|||
import definePlugin from "@utils/types";
|
||||
import { CloudUpload } from "@vencord/discord-types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { DraftType, FluxDispatcher, Menu, PermissionsBits, PermissionStore, React, showToast, Toasts, UploadAttachmentStore, useEffect, UserStore, useState } from "@webpack/common";
|
||||
import { DraftType, FluxDispatcher, Menu, PermissionsBits, PermissionStore, React, showToast, UploadAttachmentStore, useEffect, UserStore, useState } from "@webpack/common";
|
||||
|
||||
import { settings } from "./settings";
|
||||
import { serviceLabels, ServiceType } from "./types";
|
||||
|
|
@ -233,12 +233,12 @@ async function handleUploadFileFromDraft(upload: CloudUpload) {
|
|||
if (!file) return;
|
||||
|
||||
if (!isFileTypeAllowed(file)) {
|
||||
showToast("File type not allowed by current filter", Toasts.Type.FAILURE);
|
||||
showToast("File type not allowed by current filter", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isConfigured()) {
|
||||
showToast("Please configure FileUpload settings first", Toasts.Type.FAILURE);
|
||||
showToast("Please configure FileUpload settings first", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import { Switch } from "@components/Switch";
|
|||
import { classNameFactory } from "@utils/css";
|
||||
import { useForceUpdater } from "@utils/react";
|
||||
import { OptionType } from "@utils/types";
|
||||
import { React, Select, showToast, TextArea, TextInput, Toasts } from "@webpack/common";
|
||||
import { React, Select, showToast, TextArea, TextInput } from "@webpack/common";
|
||||
|
||||
import { CORS_PROXY } from "./constants";
|
||||
import { fallbackServiceOrder, serviceLabels, ServiceType } from "./types";
|
||||
|
|
@ -520,10 +520,10 @@ export function SettingsComponent() {
|
|||
const validateShareXConfig = () => {
|
||||
try {
|
||||
parseShareXConfig(settings.store.sharexConfig || "");
|
||||
showToast("ShareX config is valid", Toasts.Type.SUCCESS);
|
||||
showToast("ShareX config is valid", "success");
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : "Invalid ShareX config";
|
||||
showToast(message, Toasts.Type.FAILURE);
|
||||
showToast(message, "failure");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -542,10 +542,10 @@ export function SettingsComponent() {
|
|||
const parsed = parseShareXConfig(content);
|
||||
settings.store.sharexConfig = JSON.stringify(parsed, null, 2);
|
||||
update();
|
||||
showToast("Imported ShareX config", Toasts.Type.SUCCESS);
|
||||
showToast("Imported ShareX config", "success");
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : "Failed to import ShareX config";
|
||||
showToast(message, Toasts.Type.FAILURE);
|
||||
showToast(message, "failure");
|
||||
}
|
||||
};
|
||||
reader.readAsText(file);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import { insertTextIntoChatInputBox } from "@utils/discord";
|
|||
import { Logger } from "@utils/Logger";
|
||||
import { PluginNative } from "@utils/types";
|
||||
import { chooseFile } from "@utils/web";
|
||||
import { showToast, Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
import { convertApngToGif } from "./apngToGif";
|
||||
import { getExtensionFromBytes, getExtensionFromMime, getMimeFromExtension, getUrlExtension } from "./getMediaUrl";
|
||||
|
|
@ -1304,19 +1304,19 @@ function getFilenameExtension(filename: string): string | undefined {
|
|||
async function notifyUploadSuccess(finalUrl: string, forceSend?: boolean): Promise<void> {
|
||||
if (settings.store.autoCopy) {
|
||||
if (!finalUrl || !finalUrl.trim()) {
|
||||
showToast("Upload successful, but no URL was available to copy", Toasts.Type.MESSAGE);
|
||||
showToast("Upload successful, but no URL was available to copy", "message");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await copyToClipboard(finalUrl);
|
||||
showToast("Upload successful, URL copied to clipboard", Toasts.Type.SUCCESS);
|
||||
showToast("Upload successful, URL copied to clipboard", "success");
|
||||
} catch (error) {
|
||||
logger.warn("Upload succeeded but clipboard copy failed", error);
|
||||
showToast("Upload successful, but failed to copy URL", Toasts.Type.MESSAGE);
|
||||
showToast("Upload successful, but failed to copy URL", "message");
|
||||
}
|
||||
} else {
|
||||
showToast("Upload successful", Toasts.Type.SUCCESS);
|
||||
showToast("Upload successful", "success");
|
||||
}
|
||||
|
||||
const autoSend = forceSend || Boolean((settings.store as { autoSend?: boolean; }).autoSend);
|
||||
|
|
@ -1366,7 +1366,7 @@ async function uploadWithFallbacks(fileBlob: Blob, filename: string, primary: Se
|
|||
try {
|
||||
const uploadedUrl = await uploadToService(service, fileBlob, filename);
|
||||
if (attempted.length) {
|
||||
showToast(`Upload succeeded with ${serviceLabels[service]} after fallback`, Toasts.Type.SUCCESS);
|
||||
showToast(`Upload succeeded with ${serviceLabels[service]} after fallback`, "success");
|
||||
}
|
||||
|
||||
setUploadState({
|
||||
|
|
@ -1433,7 +1433,7 @@ async function normalizeUploadBlob(blob: Blob, sourceUrl?: string): Promise<{ bl
|
|||
blob = gifBlob;
|
||||
ext = "gif";
|
||||
} else {
|
||||
showToast("APNG to GIF conversion failed, uploading as APNG", Toasts.Type.FAILURE);
|
||||
showToast("APNG to GIF conversion failed, uploading as APNG", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1463,12 +1463,12 @@ async function uploadPreparedBlob(blob: Blob, sourceUrl?: string, forceSend?: bo
|
|||
|
||||
export async function uploadFile(url: string): Promise<void> {
|
||||
if (isUploading) {
|
||||
showToast("Upload already in progress", Toasts.Type.MESSAGE);
|
||||
showToast("Upload already in progress", "message");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isConfigured()) {
|
||||
showToast("Please configure FileUpload settings first", Toasts.Type.FAILURE);
|
||||
showToast("Please configure FileUpload settings first", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1527,10 +1527,10 @@ export async function uploadFile(url: string): Promise<void> {
|
|||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : "Unknown error";
|
||||
if (isUploadCancelledError(error)) {
|
||||
showToast("Upload cancelled", Toasts.Type.MESSAGE);
|
||||
showToast("Upload cancelled", "message");
|
||||
setUploadState({ phase: "cancelled", status: "Upload cancelled.", canCancel: false, percent: 0 });
|
||||
} else {
|
||||
showToast(`Upload failed: ${message}`, Toasts.Type.FAILURE);
|
||||
showToast(`Upload failed: ${message}`, "failure");
|
||||
logger.error("Upload error", error);
|
||||
setUploadState({ phase: "failed", status: `Upload failed: ${message}`, canCancel: false, percent: 0 });
|
||||
}
|
||||
|
|
@ -1547,7 +1547,7 @@ export async function uploadPickedFile(): Promise<void> {
|
|||
if (!file) return;
|
||||
|
||||
if (!isFileTypeAllowed(file)) {
|
||||
showToast("File type not allowed by current filter", Toasts.Type.FAILURE);
|
||||
showToast("File type not allowed by current filter", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1556,12 +1556,12 @@ export async function uploadPickedFile(): Promise<void> {
|
|||
|
||||
export async function uploadProvidedFiles(files: readonly File[], forceSend?: boolean): Promise<void> {
|
||||
if (isUploading) {
|
||||
showToast("Upload already in progress", Toasts.Type.MESSAGE);
|
||||
showToast("Upload already in progress", "message");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isConfigured()) {
|
||||
showToast("Please configure FileUpload settings first", Toasts.Type.FAILURE);
|
||||
showToast("Please configure FileUpload settings first", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1596,10 +1596,10 @@ export async function uploadProvidedFiles(files: readonly File[], forceSend?: bo
|
|||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : "Unknown error";
|
||||
if (isUploadCancelledError(error)) {
|
||||
showToast("Upload cancelled", Toasts.Type.MESSAGE);
|
||||
showToast("Upload cancelled", "message");
|
||||
setUploadState({ phase: "cancelled", status: "Upload cancelled.", canCancel: false, percent: 0 });
|
||||
} else {
|
||||
showToast(`Upload failed: ${message}`, Toasts.Type.FAILURE);
|
||||
showToast(`Upload failed: ${message}`, "failure");
|
||||
logger.error("Manual upload error", error);
|
||||
setUploadState({ phase: "failed", status: `Upload failed: ${message}`, canCancel: false, percent: 0 });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import { Devs } from "@utils/constants";
|
|||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { ChannelStore, createRoot, MessageStore, Toasts } from "@webpack/common";
|
||||
import { ChannelStore, createRoot, MessageStore, showToast } from "@webpack/common";
|
||||
import { Root } from "react-dom/client";
|
||||
|
||||
import ReplyNavigator from "./ReplyNavigator";
|
||||
|
|
@ -115,18 +115,10 @@ export default definePlugin({
|
|||
jumpType: "INSTANT"
|
||||
});
|
||||
if (replies.length > 1) {
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Use the bottom panel to navigate between replies.",
|
||||
type: Toasts.Type.MESSAGE
|
||||
});
|
||||
showToast("Use the bottom panel to navigate between replies.", "message");
|
||||
const container = document.querySelector("[class*=channelBottomBarArea_]");
|
||||
if (!container) {
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Couldn't find the container element.",
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("Couldn't find the container element.", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -139,11 +131,7 @@ export default definePlugin({
|
|||
root!.render(<ReplyNavigator replies={replies} />);
|
||||
}
|
||||
} else {
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Couldn't find a reply.",
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("Couldn't find a reply.", "failure");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import { findGroupChildrenByChildId, NavContextMenuPatchCallback } from "@api/ContextMenu";
|
||||
import { FolderIcon, InfoIcon, LinkIcon, PencilIcon, PlusIcon, RemixIcon, TrashIcon } from "@components/Icons";
|
||||
import { copyToClipboard } from "@utils/clipboard";
|
||||
import { Alerts, Button, FluxDispatcher, Menu, showToast, Toasts } from "@webpack/common";
|
||||
import { Alerts, Button, FluxDispatcher, Menu, showToast } from "@webpack/common";
|
||||
|
||||
import { settings } from "../settings";
|
||||
import { Gif } from "../types";
|
||||
|
|
@ -71,7 +71,7 @@ export const addCollectionContextMenuPatch: NavContextMenuPatchCallback = (child
|
|||
leadingAccessory={{ type: "icon", icon: LinkIcon }}
|
||||
action={() => {
|
||||
copyToClipboard(gif.url);
|
||||
showToast("Image link copied to clipboard", Toasts.Type.SUCCESS);
|
||||
showToast("Image link copied to clipboard", "success");
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
|
@ -131,7 +131,7 @@ export function RemoveItemContextMenuItems({ type, nameOrId }: { type: "collecti
|
|||
const gif = getGifById(nameOrId);
|
||||
if (!gif) return;
|
||||
copyToClipboard(gif.url);
|
||||
showToast("URL copied to clipboard", Toasts.Type.SUCCESS);
|
||||
showToast("URL copied to clipboard", "success");
|
||||
}}
|
||||
/>
|
||||
<Menu.MenuItem
|
||||
|
|
@ -198,7 +198,7 @@ export function GifPickerContextMenu({ gif }: { gif: Gif; }) {
|
|||
leadingAccessory={{ type: "icon", icon: LinkIcon }}
|
||||
action={() => {
|
||||
copyToClipboard(gif.url);
|
||||
showToast("Image link copied to clipboard", Toasts.Type.SUCCESS);
|
||||
showToast("Image link copied to clipboard", "success");
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
|
|
@ -220,7 +220,7 @@ export function getGifPickerContextMenuItems(src: string, url: string, height: n
|
|||
leadingAccessory={{ type: "icon", icon: LinkIcon }}
|
||||
action={() => {
|
||||
copyToClipboard(url);
|
||||
showToast("Image link copied to clipboard", Toasts.Type.SUCCESS);
|
||||
showToast("Image link copied to clipboard", "success");
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@
|
|||
*/
|
||||
|
||||
import { DataStore } from "@api/index";
|
||||
import { Toasts } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
import { settings } from "../settings";
|
||||
import { Collection, Gif } from "../types";
|
||||
|
|
@ -32,7 +33,7 @@ export async function createCollection(name: string, gifs: Gif[]): Promise<void>
|
|||
const fullName = `${settings.store.collectionPrefix}${name}`;
|
||||
|
||||
if (collections.some(c => c.name === fullName)) {
|
||||
Toasts.show({ message: "That collection already exists", type: Toasts.Type.FAILURE, id: Toasts.genId(), options: { duration: 3000, position: Toasts.Position.BOTTOM } });
|
||||
showToast("That collection already exists", "failure", { duration: 3000, position: ToastPosition.BOTTOM });
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -56,7 +57,7 @@ export async function addToCollection(name: string, gif: Gif): Promise<void> {
|
|||
if (!collection) return void logger.warn("Collection not found");
|
||||
|
||||
if (settings.store.preventDuplicates && collection.gifs.some(g => g.url === gif.url)) {
|
||||
Toasts.show({ message: "This GIF is already in the collection", type: Toasts.Type.FAILURE, id: Toasts.genId(), options: { duration: 3000, position: Toasts.Position.BOTTOM } });
|
||||
showToast("This GIF is already in the collection", "failure", { duration: 3000, position: ToastPosition.BOTTOM });
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { DataStore } from "@api/index";
|
||||
import { chooseFile, saveFile } from "@utils/web";
|
||||
import { Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
import { DATA_COLLECTION_NAME, getCollections, refreshCacheCollection } from "./collectionManager";
|
||||
import { logger } from "./misc";
|
||||
|
|
@ -70,14 +70,6 @@ export async function uploadGifCollections(showToast = true): Promise<void> {
|
|||
}
|
||||
}
|
||||
|
||||
const toastSuccess = () => Toasts.show({
|
||||
type: Toasts.Type.SUCCESS,
|
||||
message: "Collections imported successfully.",
|
||||
id: Toasts.genId(),
|
||||
});
|
||||
const toastSuccess = () => showToast("Collections imported successfully.", "success");
|
||||
|
||||
const toastFailure = (err: unknown) => Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: `Failed to import collections: ${String(err)}`,
|
||||
id: Toasts.genId(),
|
||||
});
|
||||
const toastFailure = (err: unknown) => showToast(`Failed to import collections: ${String(err)}`, "failure");
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import { BadgeContextMenu } from "@plugins/_api/badges";
|
|||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import { openInviteModal } from "@utils/discord";
|
||||
import definePlugin from "@utils/types";
|
||||
import { ContextMenuApi, React, Toasts } from "@webpack/common";
|
||||
import { ContextMenuApi, React, showToast } from "@webpack/common";
|
||||
|
||||
import { settings } from "./settings";
|
||||
import { cl, GlobalBadges, INVITE_LINK, loadBadges } from "./utils";
|
||||
|
|
@ -47,11 +47,7 @@ export default definePlugin({
|
|||
toolboxActions: {
|
||||
async "Refetch Global Badges"() {
|
||||
await loadBadges();
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Successfully refetched global badges!",
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
showToast("Successfully refetched global badges!", "success");
|
||||
}
|
||||
},
|
||||
get GlobalBadges() {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import { Devs, EquicordDevs } from "@utils/constants";
|
|||
import definePlugin from "@utils/types";
|
||||
import { VoiceState } from "@vencord/discord-types";
|
||||
import { findByCodeLazy } from "@webpack";
|
||||
import { ApplicationStreamingSettingsStore, ChannelStore, MediaEngineStore, PermissionsBits, PermissionStore, SelectedChannelStore, showToast, Toasts, UserStore, VoiceActions, WindowStore } from "@webpack/common";
|
||||
import { ApplicationStreamingSettingsStore, ChannelStore, MediaEngineStore, PermissionsBits, PermissionStore, SelectedChannelStore, showToast, UserStore, VoiceActions, WindowStore } from "@webpack/common";
|
||||
|
||||
import { getCurrentMedia, settings } from "./utils";
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ export default definePlugin({
|
|||
toolboxActions: {
|
||||
"Instant Screenshare"() {
|
||||
settings.store.toolboxManagement = !settings.store.toolboxManagement;
|
||||
showToast(`Instant Screenshare ${settings.store.toolboxManagement ? "Enabled" : "Disabled"}`, Toasts.Type.SUCCESS);
|
||||
showToast(`Instant Screenshare ${settings.store.toolboxManagement ? "Enabled" : "Disabled"}`, "success");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { NavContextMenuPatchCallback } from "@api/ContextMenu";
|
|||
import { Devs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Channel, Message, User } from "@vencord/discord-types";
|
||||
import { ChannelStore, Constants, Menu, NavigationRouter, RestAPI, SelectedChannelStore, SelectedGuildStore, Toasts } from "@webpack/common";
|
||||
import { ChannelStore, Constants, Menu, NavigationRouter, RestAPI, SelectedChannelStore, SelectedGuildStore, showToast } from "@webpack/common";
|
||||
|
||||
function jumpToFirstMessage(channelId: string, guildId?: string | null) {
|
||||
NavigationRouter.transitionTo(`/channels/${guildId ?? "@me"}/${channelId}/0`);
|
||||
|
|
@ -38,21 +38,13 @@ async function jumpToUserMessage(channelId: string, guildId: string, userId: str
|
|||
|
||||
const messageId = res.body?.messages?.[0]?.[0]?.id;
|
||||
if (!messageId) {
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "No messages found from this user in this channel.",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("No messages found from this user in this channel.", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
NavigationRouter.transitionTo(`/channels/${guildId}/${channelId}/${messageId}`);
|
||||
} catch (e) {
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "Failed to search for messages.",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Failed to search for messages.", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ import { gitHashShort } from "@shared/vencordUserAgent";
|
|||
import { copyToClipboard } from "@utils/clipboard";
|
||||
import { relaunch, showItemInFolder } from "@utils/native";
|
||||
import { checkForUpdates, getRepo } from "@utils/updater";
|
||||
import { GuildStore, NavigationRouter, SettingsRouter, Toasts } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { GuildStore, NavigationRouter, SettingsRouter, showToast } from "@webpack/common";
|
||||
|
||||
import gitRemote from "~git-remote";
|
||||
import Plugins from "~plugins";
|
||||
|
|
@ -46,13 +47,8 @@ export const actions: ButtonAction[] = [
|
|||
new URL(newUrl); // Throws if invalid
|
||||
VencordNative.native.openExternal(newUrl);
|
||||
} catch {
|
||||
Toasts.show({
|
||||
message: "Invalid URL",
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast("Invalid URL", "failure", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
}, registrar: "Equicord"
|
||||
|
|
@ -92,23 +88,13 @@ export const actions: ButtonAction[] = [
|
|||
const text = await res.text();
|
||||
copyToClipboard(text);
|
||||
|
||||
Toasts.show({
|
||||
message: "Copied response to clipboard!",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast("Copied response to clipboard!", "success", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
|
||||
} catch (e) {
|
||||
Toasts.show({
|
||||
message: "Issue fetching URL",
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast("Issue fetching URL", "failure", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
}, registrar: "Equicord"
|
||||
|
|
@ -118,13 +104,8 @@ export const actions: ButtonAction[] = [
|
|||
id: "copyGitInfo", label: "Copy Git Info", callback: async () => {
|
||||
copyToClipboard(`gitHash: ${gitHashShort}\ngitRemote: ${gitRemote}`);
|
||||
|
||||
Toasts.show({
|
||||
message: "Copied git info to clipboard!",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast("Copied git info to clipboard!", "success", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}, registrar: "Equicord"
|
||||
},
|
||||
|
|
@ -144,13 +125,8 @@ export const actions: ButtonAction[] = [
|
|||
}
|
||||
}), 10_000);
|
||||
} else {
|
||||
Toasts.show({
|
||||
message: "No updates available",
|
||||
type: Toasts.Type.MESSAGE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast("No updates available", "message", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
}, registrar: "Equicord"
|
||||
|
|
@ -181,13 +157,8 @@ function togglePlugin(plugin: ButtonAction, enabled: boolean) {
|
|||
|
||||
Settings.plugins[plugin.id].enabled = enabled;
|
||||
|
||||
Toasts.show({
|
||||
message: `Successfully ${enabled ? "enabled" : "disabled"} ${plugin.id}`,
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast(`Successfully ${enabled ? "enabled" : "disabled"} ${plugin.id}`, "success", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { NavContextMenuPatchCallback } from "@api/ContextMenu";
|
|||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Channel } from "@vencord/discord-types";
|
||||
import { Menu, NavigationRouter, RestAPI, Toasts, UserStore } from "@webpack/common";
|
||||
import { Menu, NavigationRouter, RestAPI, showToast,UserStore } from "@webpack/common";
|
||||
|
||||
async function findLastMessageFromUser(guildId: string, channelId: string, userId: string) {
|
||||
try {
|
||||
|
|
@ -33,29 +33,17 @@ async function findLastMessageFromUser(guildId: string, channelId: string, userI
|
|||
if (messageId) return messageId;
|
||||
} catch (error) {
|
||||
console.error("Error finding last message:", error);
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "Failed to find messages. Check console for details.",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Failed to find messages. Check console for details.", "failure");
|
||||
return null;
|
||||
}
|
||||
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "Couldn't find any recent messages from this user.",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Couldn't find any recent messages from this user.", "failure");
|
||||
return null;
|
||||
}
|
||||
|
||||
async function jumpToLastActive(channel: Channel, targetUserId?: string) {
|
||||
if (!channel) {
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "Channel information not available.",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Channel information not available.", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -69,11 +57,7 @@ async function jumpToLastActive(channel: Channel, targetUserId?: string) {
|
|||
}
|
||||
} catch (error) {
|
||||
console.error("Error in jumpToLastActive:", error);
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "Failed to jump to message. Check console for details.",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Failed to jump to message. Check console for details.", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { Button } from "@components/Button";
|
||||
import { Alerts, Toasts, useState } from "@webpack/common";
|
||||
import { Alerts, showToast,useState } from "@webpack/common";
|
||||
|
||||
import { clearMessagesIDB } from "../db";
|
||||
import { Flogger } from "../index";
|
||||
|
|
@ -33,18 +33,10 @@ export function ClearLogsButton({ label = "Clear Logs", onCleared }: ClearLogsBu
|
|||
try {
|
||||
await clearMessagesIDB();
|
||||
onCleared?.();
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Cleared Logs",
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
showToast("Cleared Logs", "success");
|
||||
} catch (err) {
|
||||
Flogger.error("Failed to clear logs", err);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Failed to clear logs",
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("Failed to clear logs", "failure");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import { DEFAULT_IMAGE_CACHE_DIR } from "@equicordplugins/messageLoggerEnhanced/
|
|||
import { copyWithToast } from "@utils/discord";
|
||||
import { classes } from "@utils/misc";
|
||||
import { findCssClassesLazy } from "@webpack";
|
||||
import { Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
const inputClasses = findCssClassesLazy("input", "inputWrapper", "editable") as Record<string, string>;
|
||||
|
||||
|
|
@ -65,17 +65,9 @@ export function SelectFolderInput({ settingsKey, successMessage }: Props) {
|
|||
const res = await Native.chooseDir(settingsKey);
|
||||
settings.store[settingsKey] = res;
|
||||
|
||||
return Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
message: successMessage
|
||||
});
|
||||
return showToast(successMessage, "success");
|
||||
} catch (err) {
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "Failed to update directory"
|
||||
});
|
||||
showToast("Failed to update directory", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { ChannelStore, Toasts } from "@webpack/common";
|
||||
import { ChannelStore, showToast } from "@webpack/common";
|
||||
import { DBSchema, IDBPDatabase, openDB } from "idb";
|
||||
|
||||
import { LoggedMessageJSON } from "./types";
|
||||
|
|
@ -256,7 +256,7 @@ export async function deleteMessagesBulkIDB(message_ids: string[]) {
|
|||
message_ids.forEach(id => cachedMessages.delete(id));
|
||||
}
|
||||
|
||||
export async function clearMessagesIDB(showToast = true) {
|
||||
export async function clearMessagesIDB(toast = true) {
|
||||
cachedMessages.clear();
|
||||
|
||||
const deleted = await new Promise<boolean>(resolve => {
|
||||
|
|
@ -271,13 +271,9 @@ export async function clearMessagesIDB(showToast = true) {
|
|||
|
||||
cachedMessages.clear();
|
||||
|
||||
if (!showToast) return;
|
||||
if (!toast) return;
|
||||
|
||||
Toasts.show({
|
||||
type: Toasts.Type.MESSAGE,
|
||||
message: "Cleared message log database and cache.",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Cleared message log database and cache.", "message");
|
||||
}
|
||||
|
||||
// faster than db.clear on large dbs
|
||||
|
|
|
|||
|
|
@ -41,8 +41,8 @@ let didClearLogsOnStartup = false;
|
|||
|
||||
const cacheThing = findByPropsLazy("commit", "getOrCreate");
|
||||
|
||||
export async function clearLogs(showToast = true) {
|
||||
await idb.clearMessagesIDB(showToast);
|
||||
export async function clearLogs(toast = true) {
|
||||
await idb.clearMessagesIDB(toast);
|
||||
cacheSentMessages.clear();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { addContextMenuPatch, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu";
|
||||
import { updateMessage } from "@api/MessageUpdater";
|
||||
import { FluxDispatcher, Menu, MessageActions, React, SortedGuildStore, Toasts, UserStore } from "@webpack/common";
|
||||
import { FluxDispatcher, Menu, MessageActions, React, showToast,SortedGuildStore, UserStore } from "@webpack/common";
|
||||
|
||||
import { openLogModal } from "../components/LogsModal";
|
||||
import { deleteMessageIDB } from "../db";
|
||||
|
|
@ -80,11 +80,7 @@ const removeMessageAction = async (props: any) => {
|
|||
}
|
||||
} catch (e) {
|
||||
console.error("Failed to remove message", e);
|
||||
Toasts.show({
|
||||
type: Toasts.Type.FAILURE,
|
||||
message: "Failed to remove message. Check console for details.",
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Failed to remove message. Check console for details.", "failure");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
import JSONParser from "@streamparser/json/jsonparser.js";
|
||||
import { chooseFile as chooseFileWeb } from "@utils/web";
|
||||
import { Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
import { showSaveFilePicker } from "native-file-system-adapter";
|
||||
|
||||
import { clearLogs,Native } from "..";
|
||||
|
|
@ -60,27 +60,15 @@ export async function importLogs() {
|
|||
}
|
||||
|
||||
if (count === 0) {
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "No messages found in log file",
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("No messages found in log file", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: `Successfully imported ${count} logs`,
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
showToast(`Successfully imported ${count} logs`, "success");
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Error importing logs. Check the console for more information",
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("Error importing logs. Check the console for more information", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -106,11 +94,7 @@ export async function exportLogs() {
|
|||
await Native.writeNativeLogChunk(streamId, "\n ]\n}");
|
||||
await Native.finishNativeLogExport(streamId);
|
||||
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Successfully exported logs",
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
showToast("Successfully exported logs", "success");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -143,20 +127,12 @@ export async function exportLogs() {
|
|||
await writer.write(encoder.encode("\n ]\n}"));
|
||||
await writer.close();
|
||||
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: `Successfully exported ${count} logs`,
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
showToast(`Successfully exported ${count} logs`, "success");
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Error exporting logs. Check the console for more information",
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("Error exporting logs. Check the console for more information", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import { isV1, migrate } from "@equicordplugins/moreStickers/migrate-v1";
|
|||
import { deleteStickerPack, getStickerPack, getStickerPackMetas, saveStickerPack } from "@equicordplugins/moreStickers/stickers";
|
||||
import { SettingsTabsKey, Sticker, StickerPack, StickerPackMeta } from "@equicordplugins/moreStickers/types";
|
||||
import { cl, clPicker, Mutex } from "@equicordplugins/moreStickers/utils";
|
||||
import { Button, React, TabBar, TextArea, Toasts } from "@webpack/common";
|
||||
import { Button, React, showToast,TabBar, TextArea } from "@webpack/common";
|
||||
import { JSX } from "react";
|
||||
|
||||
const mutex = new Mutex();
|
||||
|
|
@ -58,23 +58,13 @@ const StickerPackMetadata = ({ meta, hoveredStickerPackId, setHoveredStickerPack
|
|||
onClick={async () => {
|
||||
try {
|
||||
await deleteStickerPack(meta.id);
|
||||
Toasts.show({
|
||||
message: "Sticker Pack deleted",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Sticker Pack deleted", "success", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
await refreshStickerPackMetas();
|
||||
} catch (e: any) {
|
||||
Toasts.show({
|
||||
message: e.message,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast(e.message, "failure", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
}
|
||||
}}
|
||||
|
|
@ -210,22 +200,12 @@ export const Packs = () => {
|
|||
refreshStickerPackMetas();
|
||||
|
||||
if (errorMessage) {
|
||||
Toasts.show({
|
||||
message: errorMessage,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast(errorMessage, "failure", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Toasts.show({
|
||||
message: "Sticker Pack added",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Sticker Pack added", "success", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -288,22 +268,12 @@ export const Packs = () => {
|
|||
refreshStickerPackMetas();
|
||||
|
||||
if (errorMessage) {
|
||||
Toasts.show({
|
||||
message: errorMessage,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast(errorMessage, "failure", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Toasts.show({
|
||||
message: "Sticker Pack added",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Sticker Pack added", "success", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
}
|
||||
}}
|
||||
|
|
@ -340,23 +310,13 @@ export const Packs = () => {
|
|||
await saveStickerPack(stickerPack);
|
||||
}
|
||||
|
||||
Toasts.show({
|
||||
message: "Sticker Packs added",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Sticker Packs added", "success", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
Toasts.show({
|
||||
message: e.message,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast(e.message, "failure", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
@ -395,13 +355,8 @@ export const Packs = () => {
|
|||
a.click();
|
||||
setTimeout(() => URL.revokeObjectURL(objectUrl), 1000);
|
||||
|
||||
Toasts.show({
|
||||
message: "Sticker Packs exported",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Sticker Packs exported", "success", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
}}
|
||||
>Export Sticker Packs</Button>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { DataStore } from "@api/index";
|
||||
import { Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
import { getRecentStickers, setRecentStickers } from "./components/misc";
|
||||
import { deleteStickerPack, getStickerPack, getStickerPackMetas, saveStickerPack } from "./stickers";
|
||||
|
|
@ -74,26 +74,16 @@ export async function isV1() {
|
|||
export async function migrate() {
|
||||
const newPackMetas = await getStickerPackMetas(PACKS_KEY);
|
||||
if (newPackMetas.length > 0) {
|
||||
Toasts.show({
|
||||
message: "New sticker packs already exist, migration not needed",
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("New sticker packs already exist, migration not needed", "failure", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
let oldPackMetas = await getStickerPackMetas(PACKS_KEY_OLD);
|
||||
if (oldPackMetas.length === 0) {
|
||||
Toasts.show({
|
||||
message: "Old sticker packs not found, nothing to migrate",
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Old sticker packs not found, nothing to migrate", "failure", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
|
@ -112,13 +102,8 @@ export async function migrate() {
|
|||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
Toasts.show({
|
||||
message: `Migration failed: ${oldStickerPackMeta.title} (${oldStickerPackMeta.id})`,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast(`Migration failed: ${oldStickerPackMeta.title} (${oldStickerPackMeta.id})`, "failure", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -136,12 +121,7 @@ export async function migrate() {
|
|||
}
|
||||
|
||||
console.log("Migration complete");
|
||||
Toasts.show({
|
||||
message: "Sticker Pack Migration Complete",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast("Sticker Pack Migration Complete", "success", {
|
||||
duration: 1000
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { getMimeFromExtension } from "@equicordplugins/fileUpload/utils/getMedia
|
|||
import { FFmpeg } from "@ffmpeg/ffmpeg";
|
||||
import { insertTextIntoChatInputBox, MessageOptions } from "@utils/discord";
|
||||
import { CloudUploadPlatform } from "@vencord/discord-types/enums";
|
||||
import { ChannelStore, CloudUploader, Constants, DraftStore, FluxDispatcher, MessageActions, PendingReplyStore, RestAPI, showToast, SnowflakeUtils, Toasts, UploadHandler } from "@webpack/common";
|
||||
import { ChannelStore, CloudUploader, Constants, DraftStore, FluxDispatcher, MessageActions, PendingReplyStore, RestAPI, showToast, SnowflakeUtils, UploadHandler } from "@webpack/common";
|
||||
|
||||
import { settings } from ".";
|
||||
import { FFmpegState, Sticker } from "./types";
|
||||
|
|
@ -169,7 +169,7 @@ export async function sendSticker({ channelId, sticker, ctrlKey, shiftKey, ffmpe
|
|||
});
|
||||
});
|
||||
|
||||
upload.on("error", () => showToast("Failed to upload sticker", Toasts.Type.FAILURE));
|
||||
upload.on("error", () => showToast("Failed to upload sticker", "failure"));
|
||||
|
||||
upload.upload();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import { HeadingSecondary } from "@components/Heading";
|
|||
import { Paragraph } from "@components/Paragraph";
|
||||
import { SettingsSection } from "@components/settings/tabs/plugins/components/Common";
|
||||
import { makeRange, OptionType } from "@utils/types";
|
||||
import { MaskedLink, Select, showToast, TextInput, Toasts } from "@webpack/common";
|
||||
import { MaskedLink, Select, showToast, TextInput } from "@webpack/common";
|
||||
|
||||
import hoverOnlyStyle from "./hoverOnly.css?managed";
|
||||
import { clearLyricsCache, removeTranslations } from "./spotify/lyrics/api";
|
||||
|
|
@ -66,7 +66,7 @@ function LyricsProviderSettings() {
|
|||
onChange={v => {
|
||||
settings.store.spotifyLyricsApiUrl = v;
|
||||
void clearLyricsCache();
|
||||
showToast("Lyrics cache purged", Toasts.Type.SUCCESS);
|
||||
showToast("Lyrics cache purged", "success");
|
||||
}}
|
||||
placeholder="https://spotify-lyrics-api-pi.vercel.app"
|
||||
maxLength={null}
|
||||
|
|
@ -113,7 +113,7 @@ export const settings = definePluginSettings({
|
|||
default: "https://spotify-lyrics-api-pi.vercel.app",
|
||||
onChange: async () => {
|
||||
await clearLyricsCache();
|
||||
showToast("Lyrics cache purged", Toasts.Type.SUCCESS);
|
||||
showToast("Lyrics cache purged", "success");
|
||||
}
|
||||
},
|
||||
lyricsProviderSettings: {
|
||||
|
|
@ -126,7 +126,7 @@ export const settings = definePluginSettings({
|
|||
options: languages,
|
||||
onChange: async () => {
|
||||
await removeTranslations();
|
||||
showToast("Translations cleared", Toasts.Type.SUCCESS);
|
||||
showToast("Translations cleared", "success");
|
||||
}
|
||||
},
|
||||
lyricsConversion: {
|
||||
|
|
@ -162,7 +162,7 @@ export const settings = definePluginSettings({
|
|||
color={ButtonCompat.Colors.RED}
|
||||
onClick={() => {
|
||||
clearLyricsCache();
|
||||
showToast("Lyrics cache purged", Toasts.Type.SUCCESS);
|
||||
showToast("Lyrics cache purged", "success");
|
||||
}}
|
||||
>
|
||||
Purge Cache
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import { definePluginSettings } from "@api/Settings";
|
||||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { ChannelStore, FluxDispatcher, GuildMemberStore, StreamerModeStore, Toasts, UserStore, VoiceStateStore } from "@webpack/common";
|
||||
import { ChannelStore, FluxDispatcher, GuildMemberStore, showToast,StreamerModeStore, UserStore, VoiceStateStore } from "@webpack/common";
|
||||
|
||||
interface ChannelState {
|
||||
userId: string;
|
||||
|
|
@ -211,11 +211,7 @@ const createWebsocket = () => {
|
|||
|
||||
setTimeout(() => {
|
||||
if (ws?.readyState !== WebSocket.OPEN) {
|
||||
Toasts.show({
|
||||
message: "Orbolay websocket could not connect. Is it running?",
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
});
|
||||
showToast("Orbolay websocket could not connect. Is it running?", "failure");
|
||||
ws = null;
|
||||
return;
|
||||
}
|
||||
|
|
@ -235,11 +231,7 @@ const createWebsocket = () => {
|
|||
ws = null;
|
||||
};
|
||||
ws.onopen = async () => {
|
||||
Toasts.show({
|
||||
message: "Connected to Orbolay server",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId(),
|
||||
});
|
||||
showToast("Connected to Orbolay server", "success");
|
||||
|
||||
const userId = await waitForPopulate(() => UserStore.getCurrentUser().id);
|
||||
if (!userId) return;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { isNonNullish } from "@utils/guards";
|
||||
import { ProfilePreset } from "@vencord/discord-types";
|
||||
import { showToast, Toasts, UserProfileSettingsStore } from "@webpack/common";
|
||||
import { showToast, UserProfileSettingsStore } from "@webpack/common";
|
||||
|
||||
import { getCurrentProfile } from "./profile";
|
||||
import { addPreset, movePresetInArray, presets, PresetSection, type ProfilePresetEx, removePreset, replaceAllPresets, savePresetsData, updatePreset } from "./storage";
|
||||
|
|
@ -133,7 +133,7 @@ export async function importPresets(
|
|||
await savePresetsData(section);
|
||||
forceUpdate();
|
||||
} catch {
|
||||
showToast("Failed to import presets. The file might be invalid.", Toasts.Type.FAILURE);
|
||||
showToast("Failed to import presets. The file might be invalid.", "failure");
|
||||
}
|
||||
};
|
||||
input.click();
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import type { PluginNative } from "@utils/types";
|
|||
import type { Quest, User } from "@vencord/discord-types";
|
||||
import { QuestTargetedContent, QuestTaskType } from "@vencord/discord-types/enums";
|
||||
import { findByCodeLazy, findLazy } from "@webpack";
|
||||
import { AuthorizedAppsStore, FluxDispatcher, QuestStore, RestAPI, showToast, Toasts, UserStore } from "@webpack/common";
|
||||
import { AuthorizedAppsStore, FluxDispatcher, QuestStore, RestAPI, showToast, UserStore } from "@webpack/common";
|
||||
|
||||
import { getCurrentUserId, getQuestifySettings } from "../settings/access";
|
||||
import { autoCompleteQuestTaskTypes, isDesktopCompatible } from "../settings/def";
|
||||
|
|
@ -251,7 +251,7 @@ function showBrokenAutoCompleteToast(): void {
|
|||
}
|
||||
|
||||
didShowBrokenAutoCompleteToast = true;
|
||||
showToast("AutoComplete is broken. A fix will be implemented shortly.", Toasts.Type.FAILURE);
|
||||
showToast("AutoComplete is broken. A fix will be implemented shortly.", "failure");
|
||||
}
|
||||
|
||||
export function hasEnabledAutoCompleteQuestTypes(): boolean {
|
||||
|
|
@ -613,7 +613,7 @@ function blockQuestEnrollmentForRetryAfter(retryAfter: number | null): void {
|
|||
function showQuestEnrollmentFailureToast(quest: Quest, result: Exclude<QuestEnrollmentResult, { type: "success"; }>): void {
|
||||
const rateLimitSuffix = result.type === "rate_limited" ? " due to rate limits" : "";
|
||||
|
||||
showToast(`Enrollment in ${normalizeQuestName(quest)} Quest failed${rateLimitSuffix}.`, Toasts.Type.FAILURE);
|
||||
showToast(`Enrollment in ${normalizeQuestName(quest)} Quest failed${rateLimitSuffix}.`, "failure");
|
||||
}
|
||||
|
||||
export async function enrollInQuestManually(quest: Quest): Promise<QuestManualEnrollResult> {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import { Paragraph } from "@components/Paragraph";
|
|||
import { debounce } from "@shared/debounce";
|
||||
import { Devs, IS_MAC } from "@utils/constants";
|
||||
import definePlugin, { OptionType, StartAt } from "@utils/types";
|
||||
import { showToast, Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
const { VencordNative } = window;
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ const refreshThemeList = async (silent = false) => {
|
|||
const diff = themeList.length - oldCount;
|
||||
const action = diff > 0 ? "Added" : "Removed";
|
||||
const count = Math.abs(diff);
|
||||
showToast(`${action} ${count} theme${count > 1 ? "s" : ""}`, Toasts.Type.SUCCESS);
|
||||
showToast(`${action} ${count} theme${count > 1 ? "s" : ""}`, "success");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -186,7 +186,7 @@ function toggleCurrentTheme(enable: boolean) {
|
|||
|
||||
async function reloadThemes() {
|
||||
await refreshThemeList(true);
|
||||
showToast(`Reloaded ${themeList.length} themes`, Toasts.Type.SUCCESS);
|
||||
showToast(`Reloaded ${themeList.length} themes`, "success");
|
||||
}
|
||||
|
||||
async function watchForLocalThemeChanges() {
|
||||
|
|
@ -204,7 +204,7 @@ async function watchForLocalThemeChanges() {
|
|||
if (settings.store.showNotifications) {
|
||||
const action = diff > 0 ? "Added" : "Removed";
|
||||
const count = Math.abs(diff);
|
||||
showToast(`${action} ${count} local theme${count > 1 ? "s" : ""}`, Toasts.Type.SUCCESS);
|
||||
showToast(`${action} ${count} local theme${count > 1 ? "s" : ""}`, "success");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,9 +15,10 @@ import { debounce } from "@shared/debounce";
|
|||
import { Devs, EquicordDevs, IS_MAC } from "@utils/constants";
|
||||
import { classNameFactory } from "@utils/css";
|
||||
import definePlugin, { makeRange, OptionType } from "@utils/types";
|
||||
import type { Channel, VoiceState } from "@vencord/discord-types";
|
||||
import type { Channel, ToastType, VoiceState } from "@vencord/discord-types";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { findByCodeLazy } from "@webpack";
|
||||
import { ChannelActions, ChannelRouter, ChannelStore, ContextMenuApi, FluxDispatcher, GuildStore, MediaEngineStore, Menu, PermissionsBits, PermissionStore, React, RelationshipStore, SelectedChannelStore, Toasts, useEffect, UserStore, useState, VoiceActions, VoiceStateStore } from "@webpack/common";
|
||||
import { ChannelActions, ChannelRouter, ChannelStore, ContextMenuApi, FluxDispatcher, GuildStore, MediaEngineStore, Menu, PermissionsBits, PermissionStore, React, RelationshipStore, SelectedChannelStore, showToast as originalShowToast, useEffect, UserStore, useState, VoiceActions, VoiceStateStore } from "@webpack/common";
|
||||
|
||||
const startStream = findByCodeLazy('type:"STREAM_START"');
|
||||
const getDesktopSources = findByCodeLazy("desktop sources");
|
||||
|
|
@ -372,13 +373,8 @@ const settings = definePluginSettings({
|
|||
},
|
||||
});
|
||||
|
||||
function showToast(message: string, type: (typeof Toasts.Type)[keyof typeof Toasts.Type]) {
|
||||
Toasts.show({
|
||||
message,
|
||||
type,
|
||||
id: Toasts.genId(),
|
||||
options: { position: Toasts.Position.BOTTOM },
|
||||
});
|
||||
function showToast(message: string, type: ToastType) {
|
||||
originalShowToast(message, type, { position: ToastPosition.BOTTOM });
|
||||
}
|
||||
|
||||
function RandomVoiceIcon({ className }: { className?: string; }) {
|
||||
|
|
@ -594,13 +590,13 @@ function runAfterVoiceJoin(channelId: string, callbacks: PostJoinAction[]) {
|
|||
async function joinRandomVoice() {
|
||||
const channelId = pickRandomChannel();
|
||||
if (!channelId) {
|
||||
showToast("Failed to find a voice channel.", Toasts.Type.MESSAGE);
|
||||
showToast("Failed to find a voice channel.", "message");
|
||||
return;
|
||||
}
|
||||
|
||||
const channel = ChannelStore.getChannel(channelId);
|
||||
if (!channel) {
|
||||
showToast("Voice channel is unavailable.", Toasts.Type.FAILURE);
|
||||
showToast("Voice channel is unavailable.", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ import { definePluginSettings } from "@api/Settings";
|
|||
import { EquicordDevs, IS_MAC } from "@utils/constants";
|
||||
import { classNameFactory } from "@utils/css";
|
||||
import definePlugin, { makeRange, OptionType } from "@utils/types";
|
||||
import { Button, ChannelRouter, ChannelStore, closeModal, IconUtils, openModal,React, RelationshipStore, SelectedChannelStore, Toasts, UserStore } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { Button, ChannelRouter, ChannelStore, closeModal, IconUtils, openModal, React, RelationshipStore, SelectedChannelStore, showToast,UserStore } from "@webpack/common";
|
||||
|
||||
const STORAGE_KEY = "RDMSwitch_history";
|
||||
|
||||
|
|
@ -76,7 +77,7 @@ const settings = definePluginSettings({
|
|||
cycleSnapshot = [];
|
||||
cycleIndex = -1;
|
||||
await DataStore.set(STORAGE_KEY, []);
|
||||
Toasts.show({ id: Toasts.genId(), type: Toasts.Type.SUCCESS, message: "Cleared RDMS history" });
|
||||
showToast("Cleared RDMS history", "success");
|
||||
}}>
|
||||
"Clear RDMS History
|
||||
</Button>
|
||||
|
|
@ -84,7 +85,6 @@ const settings = definePluginSettings({
|
|||
}
|
||||
});
|
||||
|
||||
let activeToastId: string | null = null;
|
||||
let overlayModalKey: string | null = null;
|
||||
let overlayRerender: (() => void) | null = null;
|
||||
|
||||
|
|
@ -164,7 +164,6 @@ function endCycleSession() {
|
|||
|
||||
cycleSnapshot = [];
|
||||
cycleIndex = -1;
|
||||
activeToastId = null;
|
||||
|
||||
const visEnd = (settings as any).store?.visualStyle;
|
||||
if (visEnd === "overlay") unmountOverlay();
|
||||
|
|
@ -319,13 +318,7 @@ function showCycleToast() {
|
|||
const id = cycleSnapshot[cycleIndex];
|
||||
if (!id) return;
|
||||
const { name } = getDisplayForChannel(id);
|
||||
if (!activeToastId) activeToastId = Toasts.genId();
|
||||
Toasts.show({
|
||||
id: activeToastId,
|
||||
message: `Switching to: ${name}`,
|
||||
type: Toasts.Type.MESSAGE,
|
||||
options: { position: Toasts.Position.BOTTOM, duration: settings.store.toastDurationMs }
|
||||
});
|
||||
showToast(`Switching to: ${name}`, "message", { position: ToastPosition.BOTTOM, duration: settings.store.toastDurationMs });
|
||||
}
|
||||
|
||||
export default definePlugin({
|
||||
|
|
@ -369,7 +362,6 @@ export default definePlugin({
|
|||
suppressRdmsWhileCycling = false;
|
||||
cycleSnapshot = [];
|
||||
cycleIndex = -1;
|
||||
activeToastId = null;
|
||||
|
||||
const visEnd = (settings as any).store?.visualStyle;
|
||||
if (visEnd === "overlay") unmountOverlay();
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import { Heading } from "@components/Heading";
|
|||
import { classNameFactory } from "@utils/css";
|
||||
import { RenderModalProps } from "@vencord/discord-types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { ChannelStore, closeModal, DraftType, Modal, openModal, showToast, TextInput, Toasts, UploadManager, useState } from "@webpack/common";
|
||||
import { ChannelStore, closeModal, DraftType, Modal, openModal, showToast, TextInput, UploadManager, useState } from "@webpack/common";
|
||||
|
||||
import { ScheduledAttachment } from "../types";
|
||||
import { addScheduledMessage, getChannelDisplayInfo } from "../utils";
|
||||
|
|
@ -61,7 +61,7 @@ function ScheduleTimeModalInner({ channelId, content, attachments, rootProps, cl
|
|||
if (result.success) {
|
||||
ComponentDispatch.dispatchToLastSubscribed("CLEAR_TEXT");
|
||||
UploadManager.clearAll(channelId, DraftType.ChannelMessage);
|
||||
showToast("Message scheduled!", Toasts.Type.SUCCESS);
|
||||
showToast("Message scheduled!", "success");
|
||||
close();
|
||||
} else {
|
||||
setError(result.error ?? "Failed to schedule message");
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { Button } from "@components/Button";
|
|||
import ErrorBoundary from "@components/ErrorBoundary";
|
||||
import { classNameFactory } from "@utils/css";
|
||||
import { RenderModalProps } from "@vencord/discord-types";
|
||||
import { ChannelStore, closeModal, Modal, openModal, showToast, Toasts, useState } from "@webpack/common";
|
||||
import { ChannelStore, closeModal, Modal, openModal, showToast, useState } from "@webpack/common";
|
||||
|
||||
import { clearAllScheduledMessages, getChannelDisplayInfo, getScheduledMessages, removeScheduledMessage } from "../utils";
|
||||
import { CalendarIcon, TimerIcon } from "./Icons";
|
||||
|
|
@ -26,13 +26,13 @@ function ViewScheduledModalInner({ rootProps, close }: ViewScheduledModalProps)
|
|||
const handleDelete = async (id: string) => {
|
||||
await removeScheduledMessage(id);
|
||||
setMessages(getScheduledMessages());
|
||||
showToast("Scheduled message removed", Toasts.Type.SUCCESS);
|
||||
showToast("Scheduled message removed", "success");
|
||||
};
|
||||
|
||||
const handleClearAll = async () => {
|
||||
await clearAllScheduledMessages();
|
||||
setMessages([]);
|
||||
showToast("All scheduled messages cleared", Toasts.Type.SUCCESS);
|
||||
showToast("All scheduled messages cleared", "success");
|
||||
};
|
||||
|
||||
const actions = [
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import * as DataStore from "@api/DataStore";
|
|||
import { Logger } from "@utils/Logger";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { CloudUploadPlatform } from "@vencord/discord-types/enums";
|
||||
import { ChannelStore, CloudUploader, Constants, FluxDispatcher, GuildStore, IconUtils, MessageActions, MessageStore, RestAPI, showToast, SnowflakeUtils, Toasts, UserStore } from "@webpack/common";
|
||||
import { ChannelStore, CloudUploader, Constants, FluxDispatcher, GuildStore, IconUtils, MessageActions, MessageStore, RestAPI, showToast, SnowflakeUtils, UserStore } from "@webpack/common";
|
||||
|
||||
import { settings } from ".";
|
||||
import { PhantomMessageData, ScheduledAttachment, ScheduledMessage, ScheduledReaction } from "./types";
|
||||
|
|
@ -374,11 +374,11 @@ async function sendScheduledMessage(msg: ScheduledMessage): Promise<boolean> {
|
|||
}
|
||||
|
||||
if (settings.store.showNotifications) {
|
||||
showToast(`Scheduled message sent to ${getChannelDisplayInfo(msg.channelId).name}`, Toasts.Type.SUCCESS);
|
||||
showToast(`Scheduled message sent to ${getChannelDisplayInfo(msg.channelId).name}`, "success");
|
||||
}
|
||||
return true;
|
||||
} catch {
|
||||
if (settings.store.showNotifications) showToast("Failed to send scheduled message", Toasts.Type.FAILURE);
|
||||
if (settings.store.showNotifications) showToast("Failed to send scheduled message", "failure");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,8 +12,9 @@ import { Logger } from "@utils/Logger";
|
|||
import { parseUrl } from "@utils/misc";
|
||||
import definePlugin from "@utils/types";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { findByCodeLazy } from "@webpack";
|
||||
import { ChannelStore, Constants, Menu, MessageStore, React, RestAPI, showToast, Toasts } from "@webpack/common";
|
||||
import { ChannelStore, Constants, Menu, MessageStore, React, RestAPI, showToast } from "@webpack/common";
|
||||
|
||||
const logger = new Logger("ShowMessageEmbeds");
|
||||
|
||||
|
|
@ -189,7 +190,7 @@ function removeEmbed(url: string, message: Message) {
|
|||
}
|
||||
|
||||
function showFailureToast(message: string) {
|
||||
showToast(message, Toasts.Type.FAILURE, { position: Toasts.Position.BOTTOM });
|
||||
showToast(message, "failure", { position: ToastPosition.BOTTOM });
|
||||
}
|
||||
|
||||
export default definePlugin({
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import type { UserData } from "@song-spotlight/api/structs";
|
||||
import { showToast, Toasts, UserStore } from "@webpack/common";
|
||||
import { showToast, UserStore } from "@webpack/common";
|
||||
|
||||
import { useAuthorizationStore } from "./stores/AuthorizationStore";
|
||||
import { useSongStore } from "./stores/SongStore";
|
||||
|
|
@ -65,20 +65,20 @@ export async function authFetch(url: string | URL, options?: RequestInit, retrie
|
|||
if (retry) return await authFetch(url, options, true);
|
||||
else {
|
||||
useAuthorizationStore.getState().deleteTokens();
|
||||
showToast("You have been signed out from Song Spotlight. Please sign in again.", Toasts.Type.FAILURE);
|
||||
showToast("You have been signed out from Song Spotlight. Please sign in again.", "failure");
|
||||
}
|
||||
} else {
|
||||
showToast(
|
||||
!text.includes("<body>") && res.status >= 400 && res.status <= 599
|
||||
? `Song Spotlight: ${text}`
|
||||
: `Song Spotlight fetch error at ${url.pathname}`,
|
||||
Toasts.Type.FAILURE,
|
||||
"failure",
|
||||
);
|
||||
}
|
||||
|
||||
throw new Error(text);
|
||||
} catch (error) {
|
||||
showToast(`Song Spotlight: ${error}`, Toasts.Type.FAILURE);
|
||||
showToast(`Song Spotlight: ${error}`, "failure");
|
||||
|
||||
throw error;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
import { ApplicationIntegrationType } from "@vencord/discord-types/enums";
|
||||
import { OAuth2AuthorizeModal, openModal,showToast, Toasts } from "@webpack/common";
|
||||
import { OAuth2AuthorizeModal, openModal, showToast } from "@webpack/common";
|
||||
|
||||
import { apiConstants, authFetch, getData } from "./api";
|
||||
import { useAuthorizationStore } from "./stores/AuthorizationStore";
|
||||
|
|
@ -41,10 +41,10 @@ export function presentOAuth2Modal() {
|
|||
useAuthorizationStore.getState().setToken(access, refresh);
|
||||
getData();
|
||||
|
||||
showToast("Successfully authorized!", Toasts.Type.SUCCESS);
|
||||
showToast("Successfully authorized!", "success");
|
||||
} catch (error) {
|
||||
logger.error("Got an error during OAuth2", error);
|
||||
if (typeof error === "string") showToast(error, Toasts.Type.FAILURE);
|
||||
if (typeof error === "string") showToast(error, "failure");
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import { logger } from "@equicordplugins/songSpotlight.desktop/lib/utils";
|
||||
import settings from "@equicordplugins/songSpotlight.desktop/settings";
|
||||
import { RenderInfoEntry, RenderInfoEntryAudio } from "@song-spotlight/api/handlers";
|
||||
import { showToast, Toasts, useCallback, useEffect, useMemo, useRef } from "@webpack/common";
|
||||
import { showToast, useCallback, useEffect, useMemo, useRef } from "@webpack/common";
|
||||
import { RefObject } from "react";
|
||||
|
||||
interface AudioItemProps {
|
||||
|
|
@ -103,7 +103,7 @@ export default function AudioPlayer({ audioRef, list, playing, setPlaying, setLo
|
|||
node.currentTime = audio.previewStart ? audio.previewStart / 1000 : 0;
|
||||
node.volume = BASE_VOLUME * (settings.store.previewVolume / 100);
|
||||
node.play().catch(error => {
|
||||
showToast("Failed to play song preview!", Toasts.Type.FAILURE);
|
||||
showToast("Failed to play song preview!", "failure");
|
||||
logger.error("Failed to play audio", error);
|
||||
setPlaying(undefined);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import { sid } from "@song-spotlight/api/util";
|
|||
import { readClipboard } from "@utils/clipboard";
|
||||
import { copyWithToast } from "@utils/discord";
|
||||
import { RenderModalProps } from "@vencord/discord-types";
|
||||
import { Alerts, Modal,openModal, Parser, showToast, Toasts, useCallback, useEffect, useMemo, useRef, useState } from "@webpack/common";
|
||||
import { Alerts, Modal, openModal, Parser, showToast, useCallback, useEffect, useMemo, useRef, useState } from "@webpack/common";
|
||||
|
||||
interface ImportButtonProps {
|
||||
overwrite: boolean;
|
||||
|
|
@ -39,24 +39,24 @@ function ImportButton({ overwrite, pending, setPending, onImport }: ImportButton
|
|||
json = JSON.parse(await readClipboard());
|
||||
} catch {
|
||||
setPending(false);
|
||||
return showToast("No JSON in clipboard!", Toasts.Type.FAILURE);
|
||||
return showToast("No JSON in clipboard!", "failure");
|
||||
}
|
||||
|
||||
const { error, data } = UserDataSchema.max(apiConstants.songLimit).safeParse(json);
|
||||
if (error) {
|
||||
setPending(false);
|
||||
return showToast("Invalid Song Spotlight data in clipboard!", Toasts.Type.FAILURE);
|
||||
return showToast("Invalid Song Spotlight data in clipboard!", "failure");
|
||||
}
|
||||
|
||||
const validated = await Promise.allSettled(data.map(song => Native.validateSong(song)));
|
||||
if (!validated.every(x => x.status === "fulfilled" && x.value)) {
|
||||
setPending(false);
|
||||
return showToast("One or more imported songs were invalid.", Toasts.Type.FAILURE);
|
||||
return showToast("One or more imported songs were invalid.", "failure");
|
||||
}
|
||||
|
||||
onImport(data);
|
||||
setPending(false);
|
||||
showToast("Imported songs from clipboard!", Toasts.Type.SUCCESS);
|
||||
showToast("Imported songs from clipboard!", "success");
|
||||
}, [pending]);
|
||||
|
||||
return (
|
||||
|
|
@ -153,7 +153,7 @@ export default function Settings({ templateData }: SettingsProps) {
|
|||
setPending(true);
|
||||
try {
|
||||
await saveData(localData);
|
||||
showToast("Successfully saved songs!", Toasts.Type.SUCCESS);
|
||||
showToast("Successfully saved songs!", "success");
|
||||
} finally {
|
||||
setPending(false);
|
||||
}
|
||||
|
|
@ -173,7 +173,7 @@ export default function Settings({ templateData }: SettingsProps) {
|
|||
variant="dangerPrimary"
|
||||
onClick={() => {
|
||||
deleteTokens();
|
||||
showToast("Successfully signed out!", Toasts.Type.SUCCESS);
|
||||
showToast("Successfully signed out!", "success");
|
||||
}}
|
||||
disabled={pending}
|
||||
>
|
||||
|
|
@ -191,7 +191,7 @@ export default function Settings({ templateData }: SettingsProps) {
|
|||
await deleteData();
|
||||
deleteTokens();
|
||||
|
||||
showToast("Successfully deleted songs!", Toasts.Type.SUCCESS);
|
||||
showToast("Successfully deleted songs!", "success");
|
||||
} finally {
|
||||
setPending(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,11 +19,11 @@ import { sid } from "@song-spotlight/api/util";
|
|||
import { classes } from "@utils/misc";
|
||||
import { User } from "@vencord/discord-types";
|
||||
import {
|
||||
openUserProfileModal,
|
||||
SelectedChannelStore,
|
||||
SelectedGuildStore,
|
||||
useEffect,
|
||||
useMemo,
|
||||
UserProfileActions,
|
||||
UserStore,
|
||||
useState,
|
||||
} from "@webpack/common";
|
||||
|
|
@ -70,10 +70,14 @@ export default function CollapsedProfileSongs({ data, user, isSideBar, isRedesig
|
|||
if (!user) return;
|
||||
|
||||
const guildId = SelectedGuildStore.getGuildId();
|
||||
UserProfileActions.openUserProfileModal({
|
||||
openUserProfileModal({
|
||||
userId,
|
||||
guildId,
|
||||
channelId: SelectedChannelStore.getChannelId(),
|
||||
sourceAnalyticsLocations: [
|
||||
"username",
|
||||
"user profile popout",
|
||||
],
|
||||
tabSection: "SONG_SPOTLIGHT",
|
||||
});
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -30,21 +30,7 @@ import { Song as SongType } from "@song-spotlight/api/structs";
|
|||
import { isListLayout, sid } from "@song-spotlight/api/util";
|
||||
import { copyWithToast } from "@utils/discord";
|
||||
import { classes } from "@utils/misc";
|
||||
import {
|
||||
Clickable,
|
||||
ContextMenuApi,
|
||||
FluxDispatcher,
|
||||
Menu,
|
||||
React,
|
||||
ScrollerThin,
|
||||
showToast,
|
||||
Toasts,
|
||||
Tooltip,
|
||||
useCallback,
|
||||
useMemo,
|
||||
useRef,
|
||||
useState
|
||||
} from "@webpack/common";
|
||||
import { Clickable, ContextMenuApi, FluxDispatcher, Menu, React, ScrollerThin, showToast, Tooltip, useCallback, useMemo, useRef, useState } from "@webpack/common";
|
||||
|
||||
interface SongEntryProps {
|
||||
entry: RenderInfoEntryBased;
|
||||
|
|
@ -88,7 +74,7 @@ function SongEntry({ entry, number, isLoaded, isPlaying, big, onClick }: SongEnt
|
|||
|
||||
const song = await Native.parseLink(entry.link);
|
||||
if (!song) {
|
||||
return showToast("Uh oh, this song doesn't exist!", Toasts.Type.FAILURE);
|
||||
return showToast("Uh oh, this song doesn't exist!", "failure");
|
||||
}
|
||||
|
||||
if (self.find(x => sid(x) === sid(song))) {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import { Logger } from "@utils/Logger";
|
|||
import { sleep } from "@utils/misc";
|
||||
import definePlugin, { makeRange, OptionType } from "@utils/types";
|
||||
import type { Channel } from "@vencord/discord-types";
|
||||
import { ChannelStore, ComponentDispatch, PermissionsBits, PermissionStore, Toasts, UserStore } from "@webpack/common";
|
||||
import { ChannelStore, ComponentDispatch, PermissionsBits, PermissionStore, showToast,UserStore } from "@webpack/common";
|
||||
|
||||
import { splitMessage, type SplitMode } from "./splitMessage";
|
||||
|
||||
|
|
@ -120,11 +120,7 @@ const listener: MessageSendListener = async (channelId, message) => {
|
|||
|
||||
const channel = ChannelStore.getChannel(channelId);
|
||||
if (!canSplitInChannel(channel)) {
|
||||
Toasts.show({
|
||||
message: "Cannot split this message because of the channel's slowmode.",
|
||||
id: "vc-splitLargeMessages-blocked",
|
||||
type: Toasts.Type.FAILURE,
|
||||
});
|
||||
showToast("Cannot split this message because of the channel's slowmode.", "failure");
|
||||
return { cancel: true };
|
||||
}
|
||||
|
||||
|
|
@ -134,11 +130,7 @@ const listener: MessageSendListener = async (channelId, message) => {
|
|||
const sent = await sendChunks(channelId, chunks, getSendDelay(channel));
|
||||
if (sent !== chunks.length) {
|
||||
restoreUnsentContent(channelId, chunks, sent);
|
||||
Toasts.show({
|
||||
message: `Only ${sent}/${chunks.length} message parts were sent.`,
|
||||
id: "vc-splitLargeMessages-failure",
|
||||
type: Toasts.Type.FAILURE,
|
||||
});
|
||||
showToast(`Only ${sent}/${chunks.length} message parts were sent.`, "failure");
|
||||
}
|
||||
|
||||
return { cancel: true };
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import { proxyLazy } from "@utils/lazy";
|
|||
import { useForceUpdater } from "@utils/react";
|
||||
import definePlugin, { OptionType, StartAt } from "@utils/types";
|
||||
import { extractAndLoadChunksLazy, findComponentByCodeLazy, findModuleId, wreq } from "@webpack";
|
||||
import { Menu, openModalLazy, OverridePremiumTypeStore, Toasts } from "@webpack/common";
|
||||
import { Menu, openModalLazy, OverridePremiumTypeStore, showToast } from "@webpack/common";
|
||||
|
||||
interface Emoji {
|
||||
animated: boolean;
|
||||
|
|
@ -189,11 +189,7 @@ export default definePlugin({
|
|||
style: { marginLeft: "20px" },
|
||||
onClick: () => {
|
||||
settings.store.StatusPresets[status.text] = status;
|
||||
Toasts.show({
|
||||
message: "Successfully Saved Status",
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId()
|
||||
});
|
||||
showToast("Successfully Saved Status", "success");
|
||||
}
|
||||
};
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import * as DataStore from "@api/DataStore";
|
||||
import { proxyLazy } from "@utils/lazy";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import { OAuth2AuthorizeModal, openModal, showToast, Toasts, UserStore, zustandCreate, zustandPersist } from "@webpack/common";
|
||||
import { OAuth2AuthorizeModal, openModal, showToast, UserStore, zustandCreate, zustandPersist } from "@webpack/common";
|
||||
|
||||
import { AUTHORIZE_URL, CLIENT_ID } from "../constants";
|
||||
import { useStreaksStore } from "./StreaksStore";
|
||||
|
|
@ -78,7 +78,7 @@ export const useAuthorizationStore = proxyLazy(() => zustandCreate(
|
|||
resolve(void 0);
|
||||
} catch (e) {
|
||||
if (e instanceof Error) {
|
||||
showToast(`Failed to authorize: ${e.message}`, Toasts.Type.FAILURE);
|
||||
showToast(`Failed to authorize: ${e.message}`, "failure");
|
||||
new Logger("Streaks").error("Failed to authorize", e);
|
||||
reject(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import { openInviteModal } from "@utils/discord";
|
|||
import { Margins } from "@utils/margins";
|
||||
import type { PluginNative } from "@utils/types";
|
||||
import { findComponentByCodeLazy } from "@webpack";
|
||||
import { Button, Modal, openModal, Parser, React, showToast, Toasts } from "@webpack/common";
|
||||
import { Button, Modal, openModal, Parser, React, showToast } from "@webpack/common";
|
||||
|
||||
import { logger } from "./ThemeTab";
|
||||
|
||||
|
|
@ -25,10 +25,10 @@ const UserSummaryItem = findComponentByCodeLazy("defaultRenderUser", "showDefaul
|
|||
async function downloadTheme(theme: Theme) {
|
||||
try {
|
||||
await Native.downloadTheme(theme);
|
||||
showToast(`Downloaded ${theme.name}!`, Toasts.Type.SUCCESS);
|
||||
showToast(`Downloaded ${theme.name}!`, "success");
|
||||
} catch (err: unknown) {
|
||||
logger.error(err);
|
||||
showToast(`Failed to download ${theme.name}! (check console)`, Toasts.Type.FAILURE);
|
||||
showToast(`Failed to download ${theme.name}! (check console)`, "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -166,7 +166,7 @@ export const ThemeInfoModal: React.FC<ThemeInfoModalProps> = ({ author, theme, .
|
|||
onClick={async e => {
|
||||
e.preventDefault();
|
||||
const useInvite = guild ? guild.invite_link?.split("discord.gg/")[1] : invite;
|
||||
useInvite != null && openInviteModal(useInvite).catch(() => showToast("Invalid or expired invite!", Toasts.Type.FAILURE));
|
||||
useInvite != null && openInviteModal(useInvite).catch(() => showToast("Invalid or expired invite!", "failure"));
|
||||
}}
|
||||
>
|
||||
Join Discord Server
|
||||
|
|
@ -194,7 +194,7 @@ export const ThemeInfoModal: React.FC<ThemeInfoModalProps> = ({ author, theme, .
|
|||
variant: "primary",
|
||||
onClick: () => {
|
||||
copyToClipboard(themeContent);
|
||||
showToast("Copied to Clipboard", Toasts.Type.SUCCESS);
|
||||
showToast("Copied to Clipboard", "success");
|
||||
}
|
||||
}
|
||||
]}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
import * as DataStore from "@api/DataStore";
|
||||
import { showNotification } from "@api/Notifications";
|
||||
import { logger, themeRequest } from "@equicordplugins/themeLibrary/components/ThemeTab";
|
||||
import { OAuth2AuthorizeModal, openModal,Toasts, UserStore } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { OAuth2AuthorizeModal, openModal, showToast,UserStore } from "@webpack/common";
|
||||
|
||||
export async function authorizeUser(triggerModal: boolean = true) {
|
||||
const isAuthorized = await getAuthorization();
|
||||
|
|
@ -64,14 +65,9 @@ export async function authorizeUser(triggerModal: boolean = true) {
|
|||
export async function deauthorizeUser() {
|
||||
const uniqueToken = await DataStore.get<Record<string, string>>("ThemeLibrary_uniqueToken");
|
||||
|
||||
if (!uniqueToken) return Toasts.show({
|
||||
message: "No uniqueToken present, try authorizing first!",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.FAILURE,
|
||||
options: {
|
||||
if (!uniqueToken) return showToast("No uniqueToken present, try authorizing first!", "failure", {
|
||||
duration: 2e3,
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
|
||||
const res = await themeRequest("/user/revoke", {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ import { Paragraph } from "@components/Paragraph";
|
|||
import { copyToClipboard } from "@utils/clipboard";
|
||||
import { classNameFactory } from "@utils/css";
|
||||
import { OptionType } from "@utils/types";
|
||||
import { Button, Toasts } from "@webpack/common";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { Button, showToast } from "@webpack/common";
|
||||
|
||||
import { authorizeUser, deauthorizeUser } from "./auth";
|
||||
|
||||
|
|
@ -32,26 +33,16 @@ export const settings = definePluginSettings({
|
|||
const handleClick = async () => {
|
||||
const token = await DataStore.get("ThemeLibrary_uniqueToken");
|
||||
|
||||
if (!token) return Toasts.show({
|
||||
message: "No token to copy, try authorizing first!",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.FAILURE,
|
||||
options: {
|
||||
if (!token) return showToast("No token to copy, try authorizing first!", "failure", {
|
||||
duration: 2.5e3,
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
|
||||
copyToClipboard(token);
|
||||
|
||||
Toasts.show({
|
||||
message: "Copied to Clipboard!",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
showToast("Copied to Clipboard!", "success", {
|
||||
duration: 2.5e3,
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { OAuth2AuthorizeModal, openModal, showToast, Toasts } from "@webpack/common";
|
||||
import { OAuth2AuthorizeModal, openModal, showToast } from "@webpack/common";
|
||||
|
||||
import { settings } from ".";
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ function getRedirectUri(): string {
|
|||
function handleApiError(error: any, defaultMessage: string): void {
|
||||
console.error(defaultMessage, error);
|
||||
const message = error?.message || defaultMessage;
|
||||
showToast(message, Toasts.Type.FAILURE);
|
||||
showToast(message, "failure");
|
||||
}
|
||||
|
||||
async function safeJsonParse(response: Response): Promise<any> {
|
||||
|
|
@ -111,7 +111,7 @@ async function setTimezoneInternal(timezone: string): Promise<boolean> {
|
|||
return false;
|
||||
}
|
||||
|
||||
showToast("Timezone updated successfully!", Toasts.Type.SUCCESS);
|
||||
showToast("Timezone updated successfully!", "success");
|
||||
return true;
|
||||
} catch (e) {
|
||||
handleApiError(e, "Failed to set timezone");
|
||||
|
|
@ -149,7 +149,7 @@ async function deleteTimezoneInternal(): Promise<boolean> {
|
|||
return false;
|
||||
}
|
||||
|
||||
showToast("Timezone deleted successfully!", Toasts.Type.SUCCESS);
|
||||
showToast("Timezone deleted successfully!", "success");
|
||||
return true;
|
||||
} catch (e) {
|
||||
handleApiError(e, "Failed to delete timezone");
|
||||
|
|
@ -180,7 +180,7 @@ export function authModal(callback?: () => void) {
|
|||
handleApiError(json, "Authorization failed");
|
||||
return;
|
||||
}
|
||||
showToast("Authorization successful!", Toasts.Type.SUCCESS);
|
||||
showToast("Authorization successful!", "success");
|
||||
callback?.();
|
||||
} catch (e) {
|
||||
handleApiError(e, "Unexpected error during authorization");
|
||||
|
|
|
|||
|
|
@ -13,8 +13,9 @@ import ErrorBoundary from "@components/ErrorBoundary";
|
|||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Message, User } from "@vencord/discord-types";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { findByPropsLazy, findCssClassesLazy } from "@webpack";
|
||||
import { Button, ChannelStore, Menu, openModal, showToast, Toasts, Tooltip, useEffect, UserStore, useState } from "@webpack/common";
|
||||
import { Button, ChannelStore, Menu, openModal, showToast, Tooltip, useEffect, UserStore, useState } from "@webpack/common";
|
||||
|
||||
import { deleteTimezone, getTimezone, loadDatabaseTimezones, setUserDatabaseTimezone } from "./database";
|
||||
import { SetTimezoneModal } from "./TimezoneModal";
|
||||
|
|
@ -127,7 +128,7 @@ export const settings = definePluginSettings({
|
|||
await deleteTimezone();
|
||||
} catch (error) {
|
||||
console.error("Error resetting database timezone:", error);
|
||||
showToast("Failed to reset database timezone", Toasts.Type.FAILURE);
|
||||
showToast("Failed to reset database timezone", "failure");
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
|
@ -312,14 +313,14 @@ export default definePlugin({
|
|||
const good = await loadDatabaseTimezones();
|
||||
|
||||
if (good) {
|
||||
showToast("Timezones refreshed successfully!", Toasts.Type.SUCCESS);
|
||||
showToast("Timezones refreshed successfully!", "success");
|
||||
} else {
|
||||
showToast("Timezones Failed to refresh!", Toasts.Type.FAILURE);
|
||||
showToast("Timezones Failed to refresh!", "failure");
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.error("Failed to refresh timezone:", error);
|
||||
showToast("Failed to refresh timezones.", Toasts.Type.FAILURE);
|
||||
showToast("Failed to refresh timezones.", "failure");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -333,7 +334,7 @@ export default definePlugin({
|
|||
if (!settings.store.askedTimezone) {
|
||||
showToast(
|
||||
"",
|
||||
Toasts.Type.MESSAGE,
|
||||
"message",
|
||||
{
|
||||
duration: 10000,
|
||||
component: (
|
||||
|
|
@ -346,7 +347,7 @@ export default definePlugin({
|
|||
Want to save your timezone to the database? Click here to set it.
|
||||
</Button>
|
||||
),
|
||||
position: Toasts.Position.BOTTOM
|
||||
position: ToastPosition.BOTTOM
|
||||
}
|
||||
);
|
||||
settings.store.askedTimezone = true;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { sendBotMessage } from "@api/Commands";
|
|||
import { insertTextIntoChatInputBox, sendMessage } from "@utils/discord";
|
||||
import { Logger } from "@utils/Logger";
|
||||
import { Message } from "@vencord/discord-types";
|
||||
import { MessageStore, showToast, Toasts, UserStore } from "@webpack/common";
|
||||
import { MessageStore, showToast, UserStore } from "@webpack/common";
|
||||
|
||||
import { settings } from "./settings";
|
||||
|
||||
|
|
@ -225,7 +225,7 @@ function getSystemPrompt() {
|
|||
|
||||
export async function getResponse(payload: ApiMessage[]): Promise<string> {
|
||||
if (!settings.store.apiKey || !settings.store.endpoint || !settings.store.model) {
|
||||
showToast("TriviaAI: API settings are incomplete.", Toasts.Type.FAILURE);
|
||||
showToast("TriviaAI: API settings are incomplete.", "failure");
|
||||
return "";
|
||||
}
|
||||
|
||||
|
|
@ -258,7 +258,7 @@ export async function getResponse(payload: ApiMessage[]): Promise<string> {
|
|||
if (!req.ok || data.error) {
|
||||
const errorMsg = data.error?.message ?? rawBody ?? `Status ${req.status}`;
|
||||
logger.error(`API Error: ${errorMsg}`);
|
||||
showToast(errorMsg, Toasts.Type.FAILURE);
|
||||
showToast(errorMsg, "failure");
|
||||
return "";
|
||||
}
|
||||
|
||||
|
|
@ -271,7 +271,7 @@ export async function getResponse(payload: ApiMessage[]): Promise<string> {
|
|||
return response;
|
||||
} catch (e) {
|
||||
logger.error("Error getting response from AI model", e);
|
||||
showToast("Error getting response from AI model", Toasts.Type.FAILURE);
|
||||
showToast("Error getting response from AI model", "failure");
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import { Heading } from "@components/Heading";
|
|||
import { Margins } from "@components/margins";
|
||||
import { classNameFactory } from "@utils/css";
|
||||
import { RenderModalProps } from "@vencord/discord-types";
|
||||
import { IconUtils, Modal, React, TextInput, Toasts, UserStore, useState } from "@webpack/common";
|
||||
import { IconUtils, Modal, React, showToast,TextInput, UserStore, useState } from "@webpack/common";
|
||||
|
||||
import { data, KEY_DATASTORE } from ".";
|
||||
|
||||
|
|
@ -47,11 +47,7 @@ export function SetAvatarModal({ userId, modalProps }: { userId: string; modalPr
|
|||
if (!file.type.startsWith("image/")) return;
|
||||
|
||||
if (file.type === "image/gif" || file.type === "image/webp") {
|
||||
Toasts.show({
|
||||
message: "GIFs/WebP must be added via URL. Upload your GIF/WebP to a image hosting service and paste the link.",
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
});
|
||||
showToast("GIFs/WebP must be added via URL. Upload your GIF/WebP to a image hosting service and paste the link.", "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import {
|
|||
} from "@components/settings/tabs/BaseTab";
|
||||
import { classes, isObjectEmpty } from "@utils/misc";
|
||||
import { relaunch } from "@utils/native";
|
||||
import { Alerts, closeAllModals,NavigationRouter, Toasts, useEffect, useState } from "@webpack/common";
|
||||
import { Alerts, closeAllModals, NavigationRouter, showToast,useEffect, useState } from "@webpack/common";
|
||||
|
||||
import userpluginInstaller, { Native } from "..";
|
||||
import {
|
||||
|
|
@ -236,11 +236,7 @@ function UserPluginsTab() {
|
|||
setEnabled={t => {
|
||||
Vencord.Settings.plugins[pl.name].enabled = t;
|
||||
if (pluginRequiresRestart(pl)) {
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Restart to apply changes!",
|
||||
type: Toasts.Type.MESSAGE
|
||||
});
|
||||
showToast("Restart to apply changes!", "message");
|
||||
} else {
|
||||
(t ? startPlugin : stopPlugin)(pl);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,8 +12,9 @@ import { definePluginSettings } from "@api/Settings";
|
|||
import { EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { chooseFile, saveFile } from "@utils/web";
|
||||
import { CustomEmoji, UnicodeEmoji } from "@vencord/discord-types";
|
||||
import { Alerts, Button, EmojiStore, GuildStore, IconUtils, Menu, Toasts, useEffect, useState } from "@webpack/common";
|
||||
import { CustomEmoji, ToastType, UnicodeEmoji } from "@vencord/discord-types";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { Alerts, Button, EmojiStore, GuildStore, IconUtils, Menu, showToast as originalShowToast, useEffect, useState } from "@webpack/common";
|
||||
import { JSX } from "react";
|
||||
|
||||
import { ContextMenuEmoji, SavedEmoji, Target } from "./types";
|
||||
|
|
@ -73,14 +74,9 @@ function buildSaveData(item: ContextMenuEmoji): SavedEmoji {
|
|||
return saveData;
|
||||
}
|
||||
|
||||
function showToast(message: string, type = Toasts.Type.SUCCESS) {
|
||||
function showToast(message: string, type: ToastType = "success") {
|
||||
if (settings.store.disableToasts) return;
|
||||
Toasts.show({
|
||||
message,
|
||||
type,
|
||||
id: Toasts.genId(),
|
||||
options: { duration: 3000, position: Toasts.Position.BOTTOM }
|
||||
});
|
||||
originalShowToast(message, type, { duration: 3000, position: ToastPosition.BOTTOM });
|
||||
}
|
||||
|
||||
function addBulkToAllowedList(items: ContextMenuEmoji[]) {
|
||||
|
|
@ -104,7 +100,7 @@ function removeBulkFromAllowedList(items: ContextMenuEmoji[]) {
|
|||
function addToAllowedList(item: ContextMenuEmoji) {
|
||||
return withWriteLock(async () => {
|
||||
if (itemAlreadyInList(item)) {
|
||||
showToast(`"${item.name}" is already in the list`, Toasts.Type.FAILURE);
|
||||
showToast(`"${item.name}" is already in the list`, "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -116,7 +112,7 @@ function addToAllowedList(item: ContextMenuEmoji) {
|
|||
function removeFromAllowedList(item: ContextMenuEmoji) {
|
||||
return withWriteLock(async () => {
|
||||
if (!itemAlreadyInList(item)) {
|
||||
showToast(`"${item.name}" is not in the list`, Toasts.Type.FAILURE);
|
||||
showToast(`"${item.name}" is not in the list`, "failure");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -323,10 +319,10 @@ const importEmojis = (data: string) => withWriteLock(async () => {
|
|||
await setAllowedList(parsed.emojis);
|
||||
showToast("Successfully imported emojis");
|
||||
} else {
|
||||
showToast("Invalid JSON data", Toasts.Type.FAILURE);
|
||||
showToast("Invalid JSON data", "failure");
|
||||
}
|
||||
} catch (err) {
|
||||
showToast(`Failed to import emojis: ${err}`, Toasts.Type.FAILURE);
|
||||
showToast(`Failed to import emojis: ${err}`, "failure");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ import definePlugin from "@utils/types";
|
|||
import { checkForUpdates, isOutdated, update } from "@utils/updater";
|
||||
import { RenderModalProps } from "@vencord/discord-types";
|
||||
import { CloudUploadPlatform } from "@vencord/discord-types/enums";
|
||||
import { Alerts, ChannelStore, CloudUploader, ConfirmModal, Constants, GuildMemberStore, openModal, Parser, PermissionsBits, PermissionStore, RelationshipStore, RestAPI, SelectedChannelStore, showToast, SnowflakeUtils, Text, Toasts, UserStore } from "@webpack/common";
|
||||
import { Alerts, ChannelStore, CloudUploader, ConfirmModal, Constants, GuildMemberStore, openModal, Parser, PermissionsBits, PermissionStore, RelationshipStore, RestAPI, SelectedChannelStore, showToast, SnowflakeUtils, Text, UserStore } from "@webpack/common";
|
||||
import { JSX } from "react";
|
||||
|
||||
import plugins, { PluginMeta } from "~plugins";
|
||||
|
|
@ -480,10 +480,10 @@ export default definePlugin({
|
|||
} else if (pluginList && typeof pluginList === "object" && pluginList.uploadFile) {
|
||||
try {
|
||||
await uploadPluginListFile(props.channel.id, pluginList.fileContent, pluginList.filename);
|
||||
showToast("Plugin list uploaded successfully!", Toasts.Type.SUCCESS);
|
||||
showToast("Plugin list uploaded successfully!", "success");
|
||||
} catch (e) {
|
||||
new Logger("SupportHelper").error("Failed to upload plugin list:", e);
|
||||
showToast("Failed to upload plugin list", Toasts.Type.FAILURE);
|
||||
showToast("Failed to upload plugin list", "failure");
|
||||
}
|
||||
}
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import { debounce } from "@shared/debounce";
|
|||
import { classNameFactory } from "@utils/css";
|
||||
import { useAwaiter } from "@utils/react";
|
||||
import { ActivityType } from "@vencord/discord-types/enums";
|
||||
import { Button, Select, showToast, Text, TextInput, Toasts, useState } from "@webpack/common";
|
||||
import { Button, Select, showToast, Text, TextInput, useState } from "@webpack/common";
|
||||
|
||||
import CustomRPCPlugin, { RpcConfig, setRpc, settings, TimestampMode } from ".";
|
||||
|
||||
|
|
@ -183,7 +183,7 @@ function PresetSettings({ onLoad }: { onLoad(): void; }) {
|
|||
await DataStore.set(PRESETS_KEY, nextPresets);
|
||||
setChangedPresets(nextPresets);
|
||||
setSelectedPreset(name);
|
||||
showToast(`Saved preset ${name}.`, Toasts.Type.SUCCESS);
|
||||
showToast(`Saved preset ${name}.`, "success");
|
||||
}
|
||||
|
||||
function loadPreset() {
|
||||
|
|
@ -193,7 +193,7 @@ function PresetSettings({ onLoad }: { onLoad(): void; }) {
|
|||
Object.assign(settings.store, preset.config);
|
||||
onLoad();
|
||||
updateRPC();
|
||||
showToast(`Loaded preset ${preset.name}.`, Toasts.Type.SUCCESS);
|
||||
showToast(`Loaded preset ${preset.name}.`, "success");
|
||||
}
|
||||
|
||||
async function deletePreset() {
|
||||
|
|
@ -203,7 +203,7 @@ function PresetSettings({ onLoad }: { onLoad(): void; }) {
|
|||
await DataStore.set(PRESETS_KEY, nextPresets);
|
||||
setChangedPresets(nextPresets);
|
||||
setSelectedPreset("");
|
||||
showToast(`Deleted preset ${selectedPreset}.`, Toasts.Type.SUCCESS);
|
||||
showToast(`Deleted preset ${selectedPreset}.`, "success");
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -11,8 +11,9 @@ import { loadLazyChunks } from "@debug/loadLazyChunks";
|
|||
import { reporterData } from "@debug/reporterData";
|
||||
import { getIntlMessageFromHash } from "@utils/discord";
|
||||
import { canonicalizeMatch, canonicalizeReplace } from "@utils/patches";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { filters, findAll, search, wreq } from "@webpack";
|
||||
import { React, Toasts, useState } from "@webpack/common";
|
||||
import { React, showToast,useState } from "@webpack/common";
|
||||
|
||||
import { CLIENT_VERSION, logger, PORT, settings } from ".";
|
||||
import { Recieve } from "./types";
|
||||
|
|
@ -65,13 +66,8 @@ export function initWs(isManual = false) {
|
|||
|
||||
try {
|
||||
if (settings.store.notifyOnAutoConnect || isManual) {
|
||||
Toasts.show({
|
||||
message: "Connected to WebSocket",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.SUCCESS,
|
||||
options: {
|
||||
position: Toasts.Position.TOP
|
||||
}
|
||||
showToast("Connected to WebSocket", "success", {
|
||||
position: ToastPosition.TOP
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -87,13 +83,8 @@ export function initWs(isManual = false) {
|
|||
|
||||
logger.error("Dev Companion Error:", e);
|
||||
|
||||
Toasts.show({
|
||||
message: "Dev Companion Error",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.FAILURE,
|
||||
options: {
|
||||
position: Toasts.Position.TOP
|
||||
}
|
||||
showToast("Dev Companion Error", "failure", {
|
||||
position: ToastPosition.TOP
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -102,13 +93,8 @@ export function initWs(isManual = false) {
|
|||
|
||||
logger.info("Dev Companion Disconnected:", e.code, e.reason);
|
||||
|
||||
Toasts.show({
|
||||
message: "Dev Companion Disconnected",
|
||||
id: Toasts.genId(),
|
||||
type: Toasts.Type.FAILURE,
|
||||
options: {
|
||||
position: Toasts.Position.TOP
|
||||
}
|
||||
showToast("Dev Companion Disconnected", "failure", {
|
||||
position: ToastPosition.TOP
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -8,9 +8,10 @@ import { showNotice } from "@api/Notices";
|
|||
import { plugins, startDependenciesRecursive, startPlugin, stopPlugin } from "@api/PluginManager";
|
||||
import { Settings } from "@api/Settings";
|
||||
import { canonicalizeMatch } from "@utils/patches";
|
||||
import { ToastPosition } from "@vencord/discord-types/enums";
|
||||
import { Module } from "@vencord/discord-types/webpack";
|
||||
import { CodeFilter, FilterFn, stringMatches, wreq } from "@webpack";
|
||||
import { Toasts } from "@webpack/common";
|
||||
import { showToast } from "@webpack/common";
|
||||
|
||||
import { WebpackPatcher } from "../../Vencord";
|
||||
import { logger, settings as companionSettings } from ".";
|
||||
|
|
@ -107,13 +108,8 @@ export function mkRegexFind(idOrSearch: string): RegExp[] {
|
|||
}
|
||||
// the next two functions are copied from components/pluginSettings
|
||||
function showErrorToast(message: string) {
|
||||
Toasts.show({
|
||||
message,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
position: Toasts.Position.BOTTOM
|
||||
}
|
||||
showToast(message, "failure", {
|
||||
position: ToastPosition.BOTTOM
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -128,14 +124,9 @@ export function toggleEnabled(name: string, beforeReload: (error?: string) => vo
|
|||
beforeReload();
|
||||
window.location.reload();
|
||||
}
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Reload Needed",
|
||||
type: Toasts.Type.MESSAGE,
|
||||
options: {
|
||||
showToast("Reload Needed", "message", {
|
||||
duration: 5000,
|
||||
position: Toasts.Position.TOP
|
||||
}
|
||||
position: ToastPosition.TOP
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import { Logger } from "@utils/Logger";
|
|||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import { Emoji, Message } from "@vencord/discord-types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { EmojiStore, Menu, openModal,TextInput, Toasts, useEffect, useState } from "@webpack/common";
|
||||
import { EmojiStore, Menu, openModal, showToast,TextInput, useEffect, useState } from "@webpack/common";
|
||||
|
||||
import { ClearAliasesConfirmModal } from "./components/modals/ClearAliasesConfirmModal";
|
||||
import { SetAliasModal } from "./components/modals/SetAliasModal";
|
||||
|
|
@ -700,18 +700,10 @@ async function removeAlias(alias: string) {
|
|||
|
||||
try {
|
||||
await persistAliases(nextMap);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: `Removed alias :${alias}:`,
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
showToast(`Removed alias :${alias}:`, "success");
|
||||
} catch (error) {
|
||||
logger.error("Failed to remove emoji alias.", error);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Failed to remove alias.",
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("Failed to remove alias.", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -720,18 +712,10 @@ async function clearAliases() {
|
|||
|
||||
try {
|
||||
await persistAliases({});
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Deleted all emoji aliases.",
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
showToast("Deleted all emoji aliases.", "success");
|
||||
} catch (error) {
|
||||
logger.error("Failed to clear emoji aliases.", error);
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: "Failed to delete aliases.",
|
||||
type: Toasts.Type.FAILURE
|
||||
});
|
||||
showToast("Failed to delete aliases.", "failure");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -750,11 +734,7 @@ function openSetAliasModal(ref: StoredEmojiRef) {
|
|||
onSave={async input => {
|
||||
const result = await saveAlias(input, ref);
|
||||
if (!result.ok) return result;
|
||||
Toasts.show({
|
||||
id: Toasts.genId(),
|
||||
message: `Alias set for ${getEmojiDisplayName(ref)}.`,
|
||||
type: Toasts.Type.SUCCESS
|
||||
});
|
||||
showToast(`Alias set for ${getEmojiDisplayName(ref)}.`, "success");
|
||||
return result;
|
||||
}}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { Logger } from "@utils/Logger";
|
|||
import definePlugin, { makeRange, OptionType } from "@utils/types";
|
||||
import type { Channel, Message } from "@vencord/discord-types";
|
||||
import { ApplicationIntegrationType, MessageFlags } from "@vencord/discord-types/enums";
|
||||
import { AuthenticationStore, Constants, EditMessageStore, FluxDispatcher, MessageActions, MessageTypeSets, PermissionsBits, PermissionStore, PinActions, RestAPI, Toasts, WindowStore } from "@webpack/common";
|
||||
import { AuthenticationStore, Constants, EditMessageStore, FluxDispatcher, MessageActions, MessageTypeSets, PermissionsBits, PermissionStore, PinActions, RestAPI, showToast,WindowStore } from "@webpack/common";
|
||||
|
||||
import { AdditionalReactEmojisSetting, MAX_ADDITIONAL_REACT_EMOJIS, ReactEmojiSetting } from "./ReactEmojiSetting";
|
||||
|
||||
|
|
@ -256,13 +256,8 @@ export const settings = definePluginSettings({
|
|||
});
|
||||
|
||||
function showWarning(message: string) {
|
||||
Toasts.show({
|
||||
message,
|
||||
type: Toasts.Type.FAILURE,
|
||||
id: Toasts.genId(),
|
||||
options: {
|
||||
showToast(message, "failure", {
|
||||
duration: 3000
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue