kevin/reviews-page #33
@@ -18,6 +18,7 @@ new Docs(
 | 
			
		||||
export async function add_post(req: Request, res: Response) {
 | 
			
		||||
	try {
 | 
			
		||||
		const data: IReview = req.body;
 | 
			
		||||
		data.user_id = res.locals.user._id
 | 
			
		||||
		const review = new Review(data);
 | 
			
		||||
		await review.save();
 | 
			
		||||
		res.status(201).json(Log.info(201, "review was added", review));
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,14 @@ const schema = new Schema<IReview | any>(
 | 
			
		||||
			type: Boolean,
 | 
			
		||||
			required: true,
 | 
			
		||||
		},
 | 
			
		||||
		beer_id: {
 | 
			
		||||
			type: String,
 | 
			
		||||
			required: true,
 | 
			
		||||
		},
 | 
			
		||||
		user_id: {
 | 
			
		||||
			type: String,
 | 
			
		||||
			required: true,
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		timestamps: true,
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,7 @@ export const add = yup.object({
 | 
			
		||||
	packaging: yup.number().min(1).max(5).required(),
 | 
			
		||||
	sourness: yup.boolean().required(),
 | 
			
		||||
	would_again: yup.boolean().required(),
 | 
			
		||||
	user_id: yup.string().notRequired()
 | 
			
		||||
});
 | 
			
		||||
export interface IReview extends yup.InferType<typeof add>, mongooseAddition {}
 | 
			
		||||
export const addExam: IReview = {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								frontend/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								frontend/.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -37,3 +37,4 @@ yarn-error.*
 | 
			
		||||
.env
 | 
			
		||||
 | 
			
		||||
.vscode/
 | 
			
		||||
*.swp
 | 
			
		||||
 
 | 
			
		||||
@@ -67,7 +67,7 @@ export default function TabLayout() {
 | 
			
		||||
					options={{ href: null, title: "Add beer" }}
 | 
			
		||||
				/>
 | 
			
		||||
				<Tabs.Screen
 | 
			
		||||
					name="review/add"
 | 
			
		||||
					name="review/add/[beer_id]"
 | 
			
		||||
					options={{ href: null, title: "Add review" }}
 | 
			
		||||
				/>
 | 
			
		||||
			</Tabs>
 | 
			
		||||
 
 | 
			
		||||
@@ -87,7 +87,7 @@ export default function Tab() {
 | 
			
		||||
								title="Add review"
 | 
			
		||||
								color={colors.gold}
 | 
			
		||||
								onPress={() => {
 | 
			
		||||
									router.push(`/review/${item._id}`);
 | 
			
		||||
									router.push(`/review/add/${item._id}`);
 | 
			
		||||
								}}
 | 
			
		||||
							/>
 | 
			
		||||
						</View>
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -7,9 +7,11 @@ import * as ImagePicker from "expo-image-picker";
 | 
			
		||||
import DropDownPicker from "react-native-dropdown-picker";
 | 
			
		||||
const DropdownTheme = require("@components/DropdownTheme");
 | 
			
		||||
import { Platform } from "react-native";
 | 
			
		||||
import { useLocalSearchParams } from "expo-router";
 | 
			
		||||
 | 
			
		||||
export default function reviewAdd() {
 | 
			
		||||
	// States for each dropdown
 | 
			
		||||
	const routeParams = useLocalSearchParams();
 | 
			
		||||
	const [openFoam, setOpenFoam] = useState(false);
 | 
			
		||||
	const [openBitterSweetness, setOpenBitterSweetness] = useState(false);
 | 
			
		||||
	const [openTaste, setOpenTaste] = useState(false);
 | 
			
		||||
@@ -311,6 +313,7 @@ export default function reviewAdd() {
 | 
			
		||||
			credentials: "include",
 | 
			
		||||
			headers: { "Content-Type": "application/json" },
 | 
			
		||||
			body: JSON.stringify({
 | 
			
		||||
				beer_id: routeParams.beer_id,
 | 
			
		||||
				foam: itemFoam,
 | 
			
		||||
				bitter_sweetness: itemBitter_sweetness,
 | 
			
		||||
				taste: itemTaste,
 | 
			
		||||
@@ -322,10 +325,12 @@ export default function reviewAdd() {
 | 
			
		||||
		const res = await req.json();
 | 
			
		||||
 | 
			
		||||
		if (res.code == 201 && res.data._id) {
 | 
			
		||||
			window.location.href = `/review/${res.data._id}`;
 | 
			
		||||
			// window.location.href = `/review/${res.data._id}`;
 | 
			
		||||
			// TODO: use react router for redirect
 | 
			
		||||
			alert("Review was added!");
 | 
			
		||||
		} else {
 | 
			
		||||
			alert(
 | 
			
		||||
				"Beer was not added successfully. Please check your data and try again.",
 | 
			
		||||
				"Review was not added successfully. Please check your data and try again.",
 | 
			
		||||
			);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
		Reference in New Issue
	
	Block a user