From 91cb86639ac9f7217507fe4d4aa9d350ba3f1f40 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 29 Jul 2020 14:47:51 +0000 Subject: [PATCH 1/3] Update AdminSidebar.tsx --- src/components/AdminSidebar/AdminSidebar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AdminSidebar/AdminSidebar.tsx b/src/components/AdminSidebar/AdminSidebar.tsx index 04fcd75..ef84fe7 100644 --- a/src/components/AdminSidebar/AdminSidebar.tsx +++ b/src/components/AdminSidebar/AdminSidebar.tsx @@ -16,7 +16,7 @@ class AdminSidebar extends React.Component Events Feed Signup forms - Files + Files Logout ); From ad6a513b80b1ecacfd4e59557783d60b949dc610 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 31 Jul 2020 16:49:35 +0300 Subject: [PATCH 2/3] Escape Regex characters when generating patterns --- src/views/SignUpPage/FormUtils.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/views/SignUpPage/FormUtils.tsx b/src/views/SignUpPage/FormUtils.tsx index 038596a..43c126b 100644 --- a/src/views/SignUpPage/FormUtils.tsx +++ b/src/views/SignUpPage/FormUtils.tsx @@ -2,6 +2,7 @@ import { Question } from "@components/SignupQuestionsWidget"; import { SignupForm } from "@models/SignupForm"; import { EMAIL_REGEX } from "@utils/regexes"; +import escapeRegExp from "lodash/escapeRegExp"; const questionToUISchemaProp = (question: Question): {} => { let obj = {}; @@ -52,7 +53,7 @@ const questionToValidationSchema = (question: Question) => { obj = { type: "string", title: question.name, - pattern: question.options.map(x => `^${x}$`).join("|"), + pattern: question.options.map(x => `^${escapeRegExp(x)}$`).join("|"), enum: question.options, } } @@ -65,7 +66,7 @@ const questionToValidationSchema = (question: Question) => { items: { type: "string", enum: question.options, - pattern: question.options.map(x => `^${x}$`).join("|"), + pattern: question.options.map(x => `^${escapeRegExp(x)}$`).join("|"), }, } } From 51d30a50bba8968f55370a595e28d6c12b4d3e4f Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Thu, 6 Aug 2020 21:01:16 +0300 Subject: [PATCH 3/3] Use improved backend fields --- src/models/Event.ts | 2 -- src/models/Feed.ts | 1 - src/pages/admin/EventCreatePage.tsx | 25 +++++++++++++++++-------- src/pages/admin/FeedCreatePage.tsx | 6 +++--- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/models/Event.ts b/src/models/Event.ts index 81e9bd8..3ce1b27 100644 --- a/src/models/Event.ts +++ b/src/models/Event.ts @@ -17,9 +17,7 @@ export interface Event { end_time: string; image: string; tags: Tag[]; - tag_id?: number[]; visible: boolean; - signup_id: number[]; signupForm: SignupForm[]; } diff --git a/src/models/Feed.ts b/src/models/Feed.ts index dc291d3..633381d 100644 --- a/src/models/Feed.ts +++ b/src/models/Feed.ts @@ -13,7 +13,6 @@ export interface Post { content_en: string; publish_time: string; autohide: string; - tag_id: number[]; tags: number[]; visible: boolean; } diff --git a/src/pages/admin/EventCreatePage.tsx b/src/pages/admin/EventCreatePage.tsx index d2db532..e05d1ba 100644 --- a/src/pages/admin/EventCreatePage.tsx +++ b/src/pages/admin/EventCreatePage.tsx @@ -52,8 +52,8 @@ class EventCreatePage extends React.Component { try { const data = await getEvent(id, true); - data.tags = data.tag_id as any; - data.signupForm = data.signup_id as any; + data.tags = (data.tags as any).map(inst => inst.id); + data.signupForm = (data.signupForm as any).map(inst => inst.id); this.setState({ formData: data, }); @@ -98,24 +98,33 @@ class EventCreatePage extends React.Component inst.id); + // resp.signupForm = (resp.signupForm as any).map(inst => inst.id); + resp.tags = data.formData.tags; + resp.signupForm = data.formData.signupForm; this.setState({ formData: resp, statusMessage: "Event created successfully", }); } else { const resp = await updateEvent(payload); - resp.tags = resp.tag_id as any; - resp.signupForm = resp.signup_id as any; + // TODO: Backend return old data because of Prefetch (used for filtering invisble signupForms from GET) + // 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({ formData: resp, - statusMessage: "Event updated successfully.", + statusMessage: "Event updated successfully", }); } } catch (err) { diff --git a/src/pages/admin/FeedCreatePage.tsx b/src/pages/admin/FeedCreatePage.tsx index 070c2b8..401aa85 100644 --- a/src/pages/admin/FeedCreatePage.tsx +++ b/src/pages/admin/FeedCreatePage.tsx @@ -47,7 +47,7 @@ class FeedCreatePage extends React.Component { try { const data = await getPost(id); - data.tags = data.tag_id; + // data.tags = data.tag_id; this.setState({ formData: data, }); @@ -84,14 +84,14 @@ class FeedCreatePage extends React.Component