aboutsummaryrefslogtreecommitdiff
path: root/apps/web/lib/handle-errors.ts
blob: 2e207178a2f9e96aac14a0b47b35ae303e12b735 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import { isRedirectError } from "next/dist/client/components/redirect";
import { toast } from "sonner";
import { z } from "zod";

export function getErrorMessage(err: unknown) {
	const unknownError = "Something went wrong, please try again later.";

	if (err instanceof z.ZodError) {
		const errors = err.issues.map((issue) => {
			return issue.message;
		});
		return errors.join("\n");
	} else if (err instanceof Error) {
		return err.message;
	} else if (isRedirectError(err)) {
		throw err;
	} else {
		return unknownError;
	}
}

export function showErrorToast(err: unknown) {
	const errorMessage = getErrorMessage(err);
	return toast.error(errorMessage);
}