feat: client app can now upload images for beer posts

Updated seed to incorporate cloudinary images, downgraded multer to recent LTS, update tsconfig to allow spread operator usage on FileList.
This commit is contained in:
Aaron William Po
2023-05-07 21:05:21 -04:00
parent b457508a9b
commit f21dc905fe
15 changed files with 305 additions and 392 deletions

View File

@@ -0,0 +1,34 @@
import beerPostQueryResult from '@/services/BeerPost/schema/BeerPostQueryResult';
import { z } from 'zod';
interface SendUploadBeerImagesRequestArgs {
beerPost: z.infer<typeof beerPostQueryResult>;
images: FileList;
}
const sendUploadBeerImagesRequest = async ({
beerPost,
images,
}: SendUploadBeerImagesRequestArgs) => {
const formData = new FormData();
[...images].forEach((file) => {
formData.append('images', file);
});
formData.append('caption', `Image of ${beerPost.name}`);
formData.append('alt', beerPost.name);
const uploadResponse = await fetch(`/api/beers/${beerPost.id}/images`, {
method: 'POST',
body: formData,
});
if (!uploadResponse.ok) {
throw new Error('Failed to upload images');
}
return uploadResponse.json();
};
export default sendUploadBeerImagesRequest;