Merge branch 'master' into 'production'

API modifications

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!11
This commit is contained in:
Aarni Halinen
2020-08-29 12:23:50 +00:00
6 changed files with 24 additions and 17 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ class AdminSidebar extends React.Component<AdminSidebarProps, AdminSidebarState>
<AdminSidebarLink to="/admin/events" path={path}>Events</AdminSidebarLink> <AdminSidebarLink to="/admin/events" path={path}>Events</AdminSidebarLink>
<AdminSidebarLink to="/admin/feed" path={path}>Feed</AdminSidebarLink> <AdminSidebarLink to="/admin/feed" path={path}>Feed</AdminSidebarLink>
<AdminSidebarLink to="/admin/signups" path={path}>Signup forms</AdminSidebarLink> <AdminSidebarLink to="/admin/signups" path={path}>Signup forms</AdminSidebarLink>
<AdminSidebarLink to="https:https://static.sika.sik.party/admin" path={path}>Files</AdminSidebarLink> <AdminSidebarLink to="https://static.sika.sik.party/admin" path={path}>Files</AdminSidebarLink>
<AdminSidebarLink id="admin-sidebar-logout" to="/admin/logout" path={path}>Logout</AdminSidebarLink> <AdminSidebarLink id="admin-sidebar-logout" to="/admin/logout" path={path}>Logout</AdminSidebarLink>
</div> </div>
); );
-2
View File
@@ -17,9 +17,7 @@ export interface Event {
end_time: string; end_time: string;
image: string; image: string;
tags: Tag[]; tags: Tag[];
tag_id?: number[];
visible: boolean; visible: boolean;
signup_id: number[];
signupForm: SignupForm[]; signupForm: SignupForm[];
} }
-1
View File
@@ -13,7 +13,6 @@ export interface Post {
content_en: string; content_en: string;
publish_time: string; publish_time: string;
autohide: string; autohide: string;
tag_id: number[];
tags: number[]; tags: number[];
visible: boolean; visible: boolean;
} }
+17 -8
View File
@@ -52,8 +52,8 @@ class EventCreatePage extends React.Component<EventCreatePageProps, EventCreateP
fetchInitialFormData = async (id) => { fetchInitialFormData = async (id) => {
try { try {
const data = await getEvent(id, true); const data = await getEvent(id, true);
data.tags = data.tag_id as any; data.tags = (data.tags as any).map(inst => inst.id);
data.signupForm = data.signup_id as any; data.signupForm = (data.signupForm as any).map(inst => inst.id);
this.setState({ this.setState({
formData: data, formData: data,
}); });
@@ -98,24 +98,33 @@ class EventCreatePage extends React.Component<EventCreatePageProps, EventCreateP
const { history } = this.props; const { history } = this.props;
try { try {
const payload = data.formData; const payload = data.formData;
if (typeof payload.image === "string" && payload.image.startsWith("http")) payload.image = undefined;
payload.signup_id = payload.signupForm; payload.signup_id = payload.signupForm;
payload.tag_id = payload.tags; payload.tag_id = payload.tags;
if (typeof payload.image === "string" && payload.image.startsWith("http")) payload.image = undefined;
if (payload.id === undefined) { if (payload.id === undefined) {
const resp = await createEvent(payload); const resp = await createEvent(payload);
resp.tags = resp.tag_id as any; // TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET)
resp.signupForm = resp.signup_id as any; // Copy from old state instead...
// resp.tags = (resp.tags as any).map(inst => inst.id);
// resp.signupForm = (resp.signupForm as any).map(inst => inst.id);
resp.tags = data.formData.tags;
resp.signupForm = data.formData.signupForm;
this.setState({ this.setState({
formData: resp, formData: resp,
statusMessage: "Event created successfully", statusMessage: "Event created successfully",
}); });
} else { } else {
const resp = await updateEvent(payload); const resp = await updateEvent(payload);
resp.tags = resp.tag_id as any; // TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET)
resp.signupForm = resp.signup_id as any; // Copy from old state instead...
// resp.tags = (resp.tags as any).map(inst => inst.id);
// resp.signupForm = (resp.signupForm as any).map(inst => inst.id);
resp.tags = data.formData.tags;
resp.signupForm = data.formData.signupForm;
this.setState({ this.setState({
formData: resp, formData: resp,
statusMessage: "Event updated successfully.", statusMessage: "Event updated successfully",
}); });
} }
} catch (err) { } catch (err) {
+3 -3
View File
@@ -47,7 +47,7 @@ class FeedCreatePage extends React.Component<FeedCreatePageProps, FeedCreatePage
fetchInitialFormData = async (id) => { fetchInitialFormData = async (id) => {
try { try {
const data = await getPost(id); const data = await getPost(id);
data.tags = data.tag_id; // data.tags = data.tag_id;
this.setState({ this.setState({
formData: data, formData: data,
}); });
@@ -84,14 +84,14 @@ class FeedCreatePage extends React.Component<FeedCreatePageProps, FeedCreatePage
if (payload.id === undefined) { if (payload.id === undefined) {
const resp = await createPost(payload); const resp = await createPost(payload);
resp.tags = resp.tag_id; // resp.tags = resp.tags;
this.setState({ this.setState({
formData: resp, formData: resp,
statusMessage: "Post created successfully", statusMessage: "Post created successfully",
}); });
} else { } else {
const resp = await updatePost(payload); const resp = await updatePost(payload);
resp.tags = resp.tag_id; // resp.tags = resp.tag_id;
this.setState({ this.setState({
formData: resp, formData: resp,
statusMessage: "Post updated successfully.", statusMessage: "Post updated successfully.",
+3 -2
View File
@@ -2,6 +2,7 @@
import { Question } from "@components/SignupQuestionsWidget"; import { Question } from "@components/SignupQuestionsWidget";
import { SignupForm } from "@models/SignupForm"; import { SignupForm } from "@models/SignupForm";
import { EMAIL_REGEX } from "@utils/regexes"; import { EMAIL_REGEX } from "@utils/regexes";
import escapeRegExp from "lodash/escapeRegExp";
const questionToUISchemaProp = (question: Question): {} => { const questionToUISchemaProp = (question: Question): {} => {
let obj = {}; let obj = {};
@@ -52,7 +53,7 @@ const questionToValidationSchema = (question: Question) => {
obj = { obj = {
type: "string", type: "string",
title: question.name, title: question.name,
pattern: question.options.map(x => `^${x}$`).join("|"), pattern: question.options.map(x => `^${escapeRegExp(x)}$`).join("|"),
enum: question.options, enum: question.options,
} }
} }
@@ -65,7 +66,7 @@ const questionToValidationSchema = (question: Question) => {
items: { items: {
type: "string", type: "string",
enum: question.options, enum: question.options,
pattern: question.options.map(x => `^${x}$`).join("|"), pattern: question.options.map(x => `^${escapeRegExp(x)}$`).join("|"),
}, },
} }
} }