mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 10:42:08 +00:00
Add proper toast notifications to edit/create beer post. fix delete
This commit is contained in:
@@ -12,6 +12,7 @@ import sendUploadBeerImagesRequest from '@/requests/BeerImage/sendUploadBeerImag
|
|||||||
|
|
||||||
import toast from 'react-hot-toast';
|
import toast from 'react-hot-toast';
|
||||||
|
|
||||||
|
import createErrorToast from '@/util/createErrorToast';
|
||||||
import Button from './ui/forms/Button';
|
import Button from './ui/forms/Button';
|
||||||
import FormError from './ui/forms/FormError';
|
import FormError from './ui/forms/FormError';
|
||||||
import FormInfo from './ui/forms/FormInfo';
|
import FormInfo from './ui/forms/FormInfo';
|
||||||
@@ -51,14 +52,14 @@ const CreateBeerPostForm: FunctionComponent<BeerFormProps> = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const loadingToast = toast.loading('Creating beer post...');
|
||||||
const beerPost = await sendCreateBeerPostRequest(data);
|
const beerPost = await sendCreateBeerPostRequest(data);
|
||||||
await sendUploadBeerImagesRequest({ beerPost, images: data.images });
|
await sendUploadBeerImagesRequest({ beerPost, images: data.images });
|
||||||
await router.push(`/beers/${beerPost.id}`);
|
await router.push(`/beers/${beerPost.id}`);
|
||||||
|
toast.dismiss(loadingToast);
|
||||||
toast.success('Created beer post.');
|
toast.success('Created beer post.');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const errorMessage = e instanceof Error ? e.message : 'Something went wrong.';
|
createErrorToast(e);
|
||||||
|
|
||||||
toast.error(errorMessage);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { zodResolver } from '@hookform/resolvers/zod';
|
|||||||
import deleteBeerPostRequest from '@/requests/BeerPost/deleteBeerPostRequest';
|
import deleteBeerPostRequest from '@/requests/BeerPost/deleteBeerPostRequest';
|
||||||
import EditBeerPostValidationSchema from '@/services/BeerPost/schema/EditBeerPostValidationSchema';
|
import EditBeerPostValidationSchema from '@/services/BeerPost/schema/EditBeerPostValidationSchema';
|
||||||
import sendEditBeerPostRequest from '@/requests/BeerPost/sendEditBeerPostRequest';
|
import sendEditBeerPostRequest from '@/requests/BeerPost/sendEditBeerPostRequest';
|
||||||
|
import createErrorToast from '@/util/createErrorToast';
|
||||||
import Button from './ui/forms/Button';
|
import Button from './ui/forms/Button';
|
||||||
import FormError from './ui/forms/FormError';
|
import FormError from './ui/forms/FormError';
|
||||||
import FormInfo from './ui/forms/FormInfo';
|
import FormInfo from './ui/forms/FormInfo';
|
||||||
@@ -33,23 +34,26 @@ const EditBeerPostForm: FC<EditBeerPostFormProps> = ({ previousValues }) => {
|
|||||||
const { isSubmitting, errors } = formState;
|
const { isSubmitting, errors } = formState;
|
||||||
const onSubmit: SubmitHandler<EditBeerPostSchema> = async (data) => {
|
const onSubmit: SubmitHandler<EditBeerPostSchema> = async (data) => {
|
||||||
try {
|
try {
|
||||||
|
const loadingToast = toast.loading('Editing beer post...');
|
||||||
await sendEditBeerPostRequest(data);
|
await sendEditBeerPostRequest(data);
|
||||||
await router.push(`/beers/${data.id}`);
|
await router.push(`/beers/${data.id}`);
|
||||||
toast.success('Edited beer post.');
|
toast.success('Edited beer post.');
|
||||||
|
toast.dismiss(loadingToast);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const errorMessage = e instanceof Error ? e.message : 'Something went wrong.';
|
createErrorToast(e);
|
||||||
toast.error(errorMessage);
|
|
||||||
await router.push(`/beers/${data.id}`);
|
await router.push(`/beers/${data.id}`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const onDelete = async () => {
|
const onDelete = async () => {
|
||||||
try {
|
try {
|
||||||
|
const loadingToast = toast.loading('Deleting beer post...');
|
||||||
await deleteBeerPostRequest(previousValues.id);
|
await deleteBeerPostRequest(previousValues.id);
|
||||||
|
toast.dismiss(loadingToast);
|
||||||
await router.push('/beers');
|
await router.push('/beers');
|
||||||
|
toast.success('Deleted beer post.');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const errorMessage = e instanceof Error ? e.message : 'Something went wrong.';
|
createErrorToast(e);
|
||||||
toast.error(errorMessage);
|
|
||||||
await router.push(`/beers`);
|
await router.push(`/beers`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ const editBeerPost = async (
|
|||||||
const deleteBeerPost = async (req: BeerPostRequest, res: NextApiResponse) => {
|
const deleteBeerPost = async (req: BeerPostRequest, res: NextApiResponse) => {
|
||||||
const { id } = req.query;
|
const { id } = req.query;
|
||||||
|
|
||||||
const deleted = deleteBeerPostById({ beerPostId: id });
|
const deleted = await deleteBeerPostById({ beerPostId: id });
|
||||||
if (!deleted) {
|
if (!deleted) {
|
||||||
throw new ServerError('Beer post not found', 404);
|
throw new ServerError('Beer post not found', 404);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user