CLASSROOMIO-T-46: Forum CRUD MVP

Co-authored-by: Rotimi Best <[email protected]>

Merge-request: CLASSROOMIO-MR-13
Merged-by: Digdippa Team <[email protected]>
This commit is contained in:
Rotimi Best
2023-05-20 23:53:28 +00:00
committed by Space Cloud
co-authored by Rotimi Best
parent 779827ba46
commit c36a49a1ee
42 changed files with 871 additions and 1573 deletions
+9
View File
@@ -0,0 +1,9 @@
function generateSlug(title) {
return title
.match(/[^\W\s\d]*/g, '')
.join('')
.toLowerCase()
.concat(`-${new Date().getTime()}`);
}
export default generateSlug;
+29
View File
@@ -1,6 +1,23 @@
import z from 'zod';
import { validateEmail } from './validateEmail';
const askCommunityValidationSchema = z.object({
title: z.string().min(6, {
message: 'Must be 6 or more characters long',
invalid_type_error: 'Must not be empty',
}),
body: z.string().min(20, {
message: 'Must be 10 or more characters long',
invalid_type_error: 'Must not be empty',
}),
});
const commentInCommunityValidationSchema = z.object({
comment: z.string().min(6, {
message: 'Must be 6 or more characters long',
invalid_type_error: 'Must not be empty',
}),
});
const forgotValidationSchema = z.object({
email: z.string().email({
message: 'Invalid email address',
@@ -98,6 +115,18 @@ export const onboardingValidation = (fields = {}, step) => {
return processErrors(error);
};
export const askCommunityValidation = (fields = {}) => {
const { error } = askCommunityValidationSchema.safeParse(fields);
return processErrors(error);
};
export const commentInCommunityValidation = (fields = {}) => {
const { error } = commentInCommunityValidationSchema.safeParse(fields);
return processErrors(error);
};
export const getDisableSubmit = ({ password, confirmPassword }) => {
return !!(password && confirmPassword && password !== confirmPassword);
};