This commit is contained in:
Ani Simhadri 2022-08-18 17:02:34 -04:00
commit 9e4a0ffa8a
8 changed files with 34 additions and 21 deletions

View file

@ -11,6 +11,7 @@ export default function ListQuestion({
creator,
downvotes,
status,
tags,
text,
title,
upvotes,
@ -19,17 +20,18 @@ export default function ListQuestion({
}) {
const sm = useMediaQuery((theme) => theme.breakpoints.only('sm'));
const md = useMediaQuery((theme) => theme.breakpoints.only('md'));
console.log(123123, tags)
return (
<span key={question_id}>
<ListItem disablePadding>
<Grid container>
<Grid item xs={2}>
<Stack justifyContent='center' sx={{ height: '100%' }}>
{sm || md ? <ListQuestionInfo {...{upvotes, downvotes, answers, views, inline: false}}/> : null}
{sm || md ? <ListQuestionInfo {...{ upvotes, downvotes, answers, views, inline: false }} /> : null}
</Stack>
</Grid>
<Grid item xs={10}>
{sm || md ? null: <ListQuestionInfo {...{upvotes, downvotes, answers, views, inline: true}}/>}
{sm || md ? null : <ListQuestionInfo {...{ upvotes, downvotes, answers, views, inline: true }} />}
<CreationInfoTag {...{ createdAt, creator }} />
<Typography
variant='h6'

View file

@ -7,7 +7,7 @@ export default function PaginatedList({ count, Component, data, handleChangePage
<Component {...item} key={index} />
))}
{count > 1 && (
<Box fullWidth display='flex' justifyContent='center' sx={{ margin: '1vh 0' }}>
<Box display='flex' justifyContent='center' sx={{ margin: '1vh 0' }}>
<Pagination
count={count}
onChange={handleChangePage}

View file

@ -5,7 +5,7 @@ import { AnswerForm } from 'controllers/FormControllers';
export default function CreateAnswer({ canAnswer, show, toggleShow }) {
return (
<div>
<div style = {{display : 'inline'}}>
<Tooltip
title={
canAnswer

View file

@ -14,15 +14,16 @@ export default function Suggest(){
useEffect(()=>{
setCanSuggest(userData.level >= 7)
if(ongoingEdit.users.length > 0)setCanSuggest((userData.username !== ongoingEdit.users[0]))
if(!questionData.loading) setOngoingEdit({users : questionData.edit, new : questionData.editText})
},[userData, questionData, setCanSuggest])
async function toggleShow(){
if(questionData.edit.length === 0){
if(questionData.edit.length === 0 || userData.username !== ongoingEdit.users[0]){
setShow(!show)
}else{
const { status } = await editQuestion(questionData.question_id);
window.location.reload(false);
}
}
@ -30,7 +31,7 @@ export default function Suggest(){
return (
<div>
<div style = {{display : 'inline', marginLeft : '10px'}}>
<Tooltip
title= {
canSuggest
@ -53,10 +54,10 @@ export default function Suggest(){
{ongoingEdit.users.length > 0 &&
<Card>
<CardContent>
<Markdown {...{content: ongoingEdit.new[0]}}/>
<Markdown {...{content: ongoingEdit.new[1]}}/>
New Title: <Markdown {...{content: ongoingEdit.new[1]}}/>
New Text: <Markdown {...{content: ongoingEdit.new[0]}}/>
</CardContent>
<Typography> {ongoingEdit.users} have voted to edit the question </Typography>
<Typography> {ongoingEdit.users} has voted to edit the question </Typography>
</Card>
}

View file

@ -2,7 +2,7 @@
import { Form } from 'controllers/FormControllers';
import { generateEditFields } from 'services/fields';
import { editQuestion } from 'services/questionsServices';
import { questionSchema } from 'services/schemas';
import { editSchema } from 'services/schemas';
import { useQuestion } from 'contexts';
export default function EditFormController() {
@ -22,7 +22,7 @@ export default function EditFormController() {
return !questionData.loading && Form({
fields: field,
onSubmit: editTheQuestion,
validationSchema: questionSchema,
validationSchema: editSchema,
initialValues: {etext : text, etitle : title}
});
}

View file

@ -10,15 +10,15 @@ export default function FormController({
validate,
validationSchema,
children,
initialValues
initialValues = {}
}) {
const { setContent } = useForm();
useEffect(() => {
setContent('');
}, [setContent]);
const handleChange = (e) => {

View file

@ -107,6 +107,14 @@ const patchSchema = Yup.object().shape(
['password', 'password'],
]
);
const editSchema = Yup.object({
etitle: Yup.string()
.max(150, 'Title cannot be longer then 150 characters.')
.required('A title is required.'),
etext: Yup.string()
.max(3000, 'Body cannot be longer than 3000 characters')
.required('A body is required')
});
export {
answerSchema,
@ -119,4 +127,5 @@ export {
registerSchema,
resetSchema,
searchSchema,
editSchema
};

View file

@ -8,7 +8,7 @@ async function EditQuestionStatusClosed(req, res) {
const { user } = req;
const { question_id } = req.params;
const { etext, etitle } = req.body;
let eObj = [etext, etitle]
// Verify user has required level
if (getUserLevel(user.points) < 7) {
return res.status(403).send(config.errorForbidden);
@ -25,7 +25,7 @@ async function EditQuestionStatusClosed(req, res) {
}
await Question.findByIdAndUpdate(question_id, {
editText: etext,
editText: eObj,
$push: { edit: user.username },
});
@ -48,13 +48,14 @@ async function EditQuestionStatusClosed(req, res) {
if (question.edit.length === 2) {
const question = await Question.findByIdAndUpdate(question_id, {
edit: [],
etext,
etitle
eObj,
});
const { success } = await createRequest('patch', `/questions/${question_id}`, {
etext,
etitle
eObj
});
return success