mirror of https://github.com/usememos/memos.git
33 lines
806 B
TypeScript
33 lines
806 B
TypeScript
import { Code, ConnectError } from "@connectrpc/connect";
|
|
import { useEffect } from "react";
|
|
import { toast } from "react-hot-toast";
|
|
import useNavigateTo from "@/hooks/useNavigateTo";
|
|
|
|
interface UseMemoDetailErrorOptions {
|
|
error: Error | null;
|
|
}
|
|
|
|
const useMemoDetailError = ({ error }: UseMemoDetailErrorOptions) => {
|
|
const navigateTo = useNavigateTo();
|
|
|
|
useEffect(() => {
|
|
if (!error) {
|
|
return;
|
|
}
|
|
|
|
if (error instanceof ConnectError) {
|
|
if (error.code === Code.Unauthenticated || error.code === Code.PermissionDenied || error.code === Code.NotFound) {
|
|
navigateTo("/404", { replace: true });
|
|
return;
|
|
}
|
|
|
|
toast.error(error.message);
|
|
return;
|
|
}
|
|
|
|
toast.error(error.message);
|
|
}, [error, navigateTo]);
|
|
};
|
|
|
|
export default useMemoDetailError;
|