diff options
author | Vendicated <vendicated@riseup.net> | 2023-02-25 19:10:01 +0100 |
---|---|---|
committer | Vendicated <vendicated@riseup.net> | 2023-02-25 19:10:01 +0100 |
commit | 128ee41252b1bf9c3e415ec94ce26d5dc3e7c7ee (patch) | |
tree | ef393cbeceb10886c3edba7a2d1bbab4e6d298c5 | |
parent | ccca41a16832a34efa83506a6baf23d8bd2a6367 (diff) | |
download | Vencord-128ee41252b1bf9c3e415ec94ce26d5dc3e7c7ee.tar.gz Vencord-128ee41252b1bf9c3e415ec94ce26d5dc3e7c7ee.tar.bz2 Vencord-128ee41252b1bf9c3e415ec94ce26d5dc3e7c7ee.zip |
ErrorBoundary: Do not use any Discord components to be more robust
-rw-r--r-- | src/components/ErrorBoundary.tsx | 9 | ||||
-rw-r--r-- | src/components/ErrorCard.css | 7 | ||||
-rw-r--r-- | src/components/ErrorCard.tsx | 23 | ||||
-rw-r--r-- | src/utils/misc.tsx | 4 |
4 files changed, 20 insertions, 23 deletions
diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx index a13640e..1eb2eb8 100644 --- a/src/components/ErrorBoundary.tsx +++ b/src/components/ErrorBoundary.tsx @@ -17,8 +17,9 @@ */ import Logger from "@utils/Logger"; +import { Margins } from "@utils/margins"; import { LazyComponent } from "@utils/misc"; -import { Margins, React } from "@webpack/common"; +import { React } from "@webpack/common"; import { ErrorCard } from "./ErrorCard"; @@ -84,15 +85,13 @@ const ErrorBoundary = LazyComponent(() => { const msg = this.props.message || "An error occurred while rendering this Component. More info can be found below and in your console."; return ( - <ErrorCard style={{ - overflow: "hidden", - }}> + <ErrorCard style={{ overflow: "hidden" }}> <h1>Oh no!</h1> <p>{msg}</p> <code> {this.state.message} {!!this.state.stack && ( - <pre className={Margins.marginTop8}> + <pre className={Margins.top8}> {this.state.stack} </pre> )} diff --git a/src/components/ErrorCard.css b/src/components/ErrorCard.css new file mode 100644 index 0000000..5146aa0 --- /dev/null +++ b/src/components/ErrorCard.css @@ -0,0 +1,7 @@ +.vc-error-card { + padding: 2em; + background-color: #e7828430; + border: 1px solid #e78284; + border-radius: 5px; + color: var(--text-normal, white); +} diff --git a/src/components/ErrorCard.tsx b/src/components/ErrorCard.tsx index e749ea4..7ce8cad 100644 --- a/src/components/ErrorCard.tsx +++ b/src/components/ErrorCard.tsx @@ -16,24 +16,15 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import { Card } from "@webpack/common"; +import "./ErrorCard.css"; -interface Props { - style?: React.CSSProperties; - className?: string; -} -export function ErrorCard(props: React.PropsWithChildren<Props>) { +import { classes } from "@utils/misc"; +import type { HTMLProps } from "react"; + +export function ErrorCard(props: React.PropsWithChildren<HTMLProps<HTMLDivElement>>) { return ( - <Card className={props.className} style={ - { - padding: "2em", - backgroundColor: "#e7828430", - borderColor: "#e78284", - color: "var(--text-normal)", - ...props.style - } - }> + <div {...props} className={classes(props.className, "vc-error-card")}> {props.children} - </Card> + </div> ); } diff --git a/src/utils/misc.tsx b/src/utils/misc.tsx index a41ab67..b64dff9 100644 --- a/src/utils/misc.tsx +++ b/src/utils/misc.tsx @@ -141,8 +141,8 @@ export function humanFriendlyJoin(elements: any[], mapper: (e: any) => string = * Calls .join(" ") on the arguments * classes("one", "two") => "one two" */ -export function classes(...classes: string[]) { - return classes.filter(c => typeof c === "string").join(" "); +export function classes(...classes: Array<string | null | undefined>) { + return classes.filter(Boolean).join(" "); } /** |