ErrorBoundary some more components

This commit is contained in:
Nuckyz 2024-05-09 03:14:20 -03:00
parent 14e68d9a24
commit 1a3a378fb1
No known key found for this signature in database
GPG key ID: 440BF8296E1C4AD9
6 changed files with 29 additions and 20 deletions

View file

@ -17,6 +17,7 @@
*/ */
import { Settings } from "@api/Settings"; import { Settings } from "@api/Settings";
import ErrorBoundary from "@components/ErrorBoundary";
import { Devs } from "@utils/constants"; import { Devs } from "@utils/constants";
import { canonicalizeMatch } from "@utils/patches"; import { canonicalizeMatch } from "@utils/patches";
import definePlugin, { OptionType } from "@utils/types"; import definePlugin, { OptionType } from "@utils/types";
@ -83,7 +84,9 @@ export default definePlugin({
patchPadding(lastSection: any) { patchPadding(lastSection: any) {
if (!lastSection) return; if (!lastSection) return;
return ( return (
<div className={UserPopoutSectionCssClasses.lastSection}></div> <ErrorBoundary noop>
<div className={UserPopoutSectionCssClasses.lastSection}></div>
</ErrorBoundary>
); );
} }
}); });

View file

@ -17,6 +17,7 @@
*/ */
import { classNameFactory } from "@api/Styles"; import { classNameFactory } from "@api/Styles";
import ErrorBoundary from "@components/ErrorBoundary";
import { FluxDispatcher, React, useRef, useState } from "@webpack/common"; import { FluxDispatcher, React, useRef, useState } from "@webpack/common";
import { ELEMENT_ID } from "../constants"; import { ELEMENT_ID } from "../constants";
@ -36,7 +37,7 @@ export interface MagnifierProps {
const cl = classNameFactory("vc-imgzoom-"); const cl = classNameFactory("vc-imgzoom-");
export const Magnifier: React.FC<MagnifierProps> = ({ instance, size: initialSize, zoom: initalZoom }) => { export const Magnifier = ErrorBoundary.wrap<MagnifierProps>(({ instance, size: initialSize, zoom: initalZoom }) => {
const [ready, setReady] = useState(false); const [ready, setReady] = useState(false);
const [lensPosition, setLensPosition] = useState<Vec2>({ x: 0, y: 0 }); const [lensPosition, setLensPosition] = useState<Vec2>({ x: 0, y: 0 });
@ -199,4 +200,4 @@ export const Magnifier: React.FC<MagnifierProps> = ({ instance, size: initialSiz
)} )}
</div> </div>
); );
}; }, { noop: true });

View file

@ -16,6 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
import ErrorBoundary from "@components/ErrorBoundary";
import { Devs } from "@utils/constants"; import { Devs } from "@utils/constants";
import { isNonNullish } from "@utils/guards"; import { isNonNullish } from "@utils/guards";
import definePlugin from "@utils/types"; import definePlugin from "@utils/types";
@ -60,7 +61,7 @@ export default definePlugin({
} }
], ],
renderMutualGDMs(user: User, onClose: () => void) { renderMutualGDMs: ErrorBoundary.wrap((user: User, onClose: () => void) => {
const entries = ChannelStore.getSortedPrivateChannels().filter(c => c.isGroupDM() && c.recipients.includes(user.id)).map(c => ( const entries = ChannelStore.getSortedPrivateChannels().filter(c => c.isGroupDM() && c.recipients.includes(user.id)).map(c => (
<Clickable <Clickable
className={ProfileListClasses.listRow} className={ProfileListClasses.listRow}
@ -99,5 +100,5 @@ export default definePlugin({
} }
</ScrollerThin> </ScrollerThin>
); );
} })
}); });

View file

@ -16,12 +16,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
import ErrorBoundary from "@components/ErrorBoundary";
import { Devs } from "@utils/constants"; import { Devs } from "@utils/constants";
import definePlugin from "@utils/types"; import definePlugin from "@utils/types";
import { findByPropsLazy } from "@webpack"; import { findByPropsLazy } from "@webpack";
import { GuildStore, RestAPI } from "@webpack/common"; import { GuildStore, i18n, RestAPI } from "@webpack/common";
const Messages = findByPropsLazy("GUILD_INVITE_DISABLE_ACTION_SHEET_DESCRIPTION");
const { InvitesDisabledExperiment } = findByPropsLazy("InvitesDisabledExperiment"); const { InvitesDisabledExperiment } = findByPropsLazy("InvitesDisabledExperiment");
export default definePlugin({ export default definePlugin({
@ -62,13 +62,15 @@ export default definePlugin({
renderInvitesLabel(guildId: string, setChecked: Function) { renderInvitesLabel(guildId: string, setChecked: Function) {
return ( return (
<div> <ErrorBoundary noop>
{Messages.GUILD_INVITE_DISABLE_ACTION_SHEET_DESCRIPTION} <div>
{this.showDisableInvites(guildId) && <a role="button" onClick={() => { {i18n.Messages.GUILD_INVITE_DISABLE_ACTION_SHEET_DESCRIPTION}
setChecked(true); {this.showDisableInvites(guildId) && <a role="button" onClick={() => {
this.disableInvites(guildId); setChecked(true);
}}> Pause Indefinitely.</a>} this.disableInvites(guildId);
</div> }}> Pause Indefinitely.</a>}
</div>
</ErrorBoundary>
); );
} }
}); });

View file

@ -19,6 +19,7 @@
import "./style.css"; import "./style.css";
import { addServerListElement, removeServerListElement, ServerListRenderPosition } from "@api/ServerList"; import { addServerListElement, removeServerListElement, ServerListRenderPosition } from "@api/ServerList";
import ErrorBoundary from "@components/ErrorBoundary";
import { Devs } from "@utils/constants"; import { Devs } from "@utils/constants";
import definePlugin from "@utils/types"; import definePlugin from "@utils/types";
import { Button, FluxDispatcher, GuildChannelStore, GuildStore, React, ReadStateStore } from "@webpack/common"; import { Button, FluxDispatcher, GuildChannelStore, GuildStore, React, ReadStateStore } from "@webpack/common";
@ -64,7 +65,7 @@ export default definePlugin({
authors: [Devs.kemo], authors: [Devs.kemo],
dependencies: ["ServerListAPI"], dependencies: ["ServerListAPI"],
renderReadAllButton: () => <ReadAllButton />, renderReadAllButton: ErrorBoundary.wrap(ReadAllButton, { noop: true }),
start() { start() {
addServerListElement(ServerListRenderPosition.Above, this.renderReadAllButton); addServerListElement(ServerListRenderPosition.Above, this.renderReadAllButton);

View file

@ -7,6 +7,7 @@
import "./styles.css"; import "./styles.css";
import { definePluginSettings } from "@api/Settings"; import { definePluginSettings } from "@api/Settings";
import ErrorBoundary from "@components/ErrorBoundary";
import { Devs } from "@utils/constants"; import { Devs } from "@utils/constants";
import definePlugin, { OptionType } from "@utils/types"; import definePlugin, { OptionType } from "@utils/types";
import { Message, User } from "discord-types/general"; import { Message, User } from "discord-types/general";
@ -56,7 +57,7 @@ export default definePlugin({
], ],
settings, settings,
renderUsername: ({ author, message, isRepliedMessage, withMentionPrefix, userOverride }: UsernameProps) => { renderUsername: ErrorBoundary.wrap(({ author, message, isRepliedMessage, withMentionPrefix, userOverride }: UsernameProps) => {
try { try {
const user = userOverride ?? message.author; const user = userOverride ?? message.author;
let { username } = user; let { username } = user;
@ -66,14 +67,14 @@ export default definePlugin({
const { nick } = author; const { nick } = author;
const prefix = withMentionPrefix ? "@" : ""; const prefix = withMentionPrefix ? "@" : "";
if (username === nick || isRepliedMessage && !settings.store.inReplies) if (username === nick || isRepliedMessage && !settings.store.inReplies)
return prefix + nick; return <>{prefix}{nick}</>;
if (settings.store.mode === "user-nick") if (settings.store.mode === "user-nick")
return <>{prefix}{username} <span className="vc-smyn-suffix">{nick}</span></>; return <>{prefix}{username} <span className="vc-smyn-suffix">{nick}</span></>;
if (settings.store.mode === "nick-user") if (settings.store.mode === "nick-user")
return <>{prefix}{nick} <span className="vc-smyn-suffix">{username}</span></>; return <>{prefix}{nick} <span className="vc-smyn-suffix">{username}</span></>;
return prefix + username; return <>{prefix}{username}</>;
} catch { } catch {
return author?.nick; return <>{author?.nick}</>;
} }
}, }, { noop: true }),
}); });