From 167d7927dba487f2df8bf4f944e5a79f6f89d0b1 Mon Sep 17 00:00:00 2001 From: LautaroCesso <59095036+LautaroCesso@users.noreply.github.com> Date: Sun, 29 Aug 2021 22:12:41 -0300 Subject: [PATCH] Clear create ticket form after create a ticket with mandatory login disabled (#966) * Clear create ticket form after create a ticket with mandatory login disabled. * WIP --- .../create-ticket-form.js | 44 +++++++++++-------- .../dashboard-create-ticket-page.js | 39 +++++++++++----- .../dashboard-create-ticket-page.scss | 12 ++++- .../dashboard-list-tickets-page.js | 12 +---- client/src/data/languages/en.js | 1 + 5 files changed, 66 insertions(+), 42 deletions(-) diff --git a/client/src/app/main/dashboard/dashboard-create-ticket/create-ticket-form.js b/client/src/app/main/dashboard/dashboard-create-ticket/create-ticket-form.js index 827fc161..643879ec 100644 --- a/client/src/app/main/dashboard/dashboard-create-ticket/create-ticket-form.js +++ b/client/src/app/main/dashboard/dashboard-create-ticket/create-ticket-form.js @@ -17,6 +17,12 @@ import FormField from 'core-components/form-field'; import SubmitButton from 'core-components/submit-button'; import Message from 'core-components/message'; +const DEFAULT_CREATE_TICKET_FORM_VALUE = { + title: '', + email: '', + name: '' +}; + class CreateTicketForm extends React.Component { static propTypes = { @@ -34,23 +40,15 @@ class CreateTicketForm extends React.Component { loading: false, message: null, form: { - title: '', + ...DEFAULT_CREATE_TICKET_FORM_VALUE, content: TextEditor.createEmpty(), departmentIndex: getPublicDepartmentIndexFromDepartmentId(this.props.defaultDepartmentId, SessionStore.getDepartments()), - email: '', - name: '', language: this.props.language } }; render() { - const { - userLogged, - isDefaultDepartmentLocked, - isStaff, - onlyOneSupportedLanguage, - allowAttachments - } = this.props; + const { userLogged, isDefaultDepartmentLocked, isStaff, onlyOneSupportedLanguage, allowAttachments } = this.props; return (
@@ -118,7 +116,7 @@ class CreateTicketForm extends React.Component { renderMessage() { switch (this.state.message) { case 'success': - return {i18n('TICKET_SENT')}; + return this.props.userLogged ? {i18n('TICKET_SENT')} : null; case 'fail': return {i18n('TICKET_SENT_ERROR')}; default: @@ -127,10 +125,7 @@ class CreateTicketForm extends React.Component { } getFormProps() { - const { - loading, - form - } = this.state; + const { loading, form } = this.state; return { loading, @@ -161,16 +156,26 @@ class CreateTicketForm extends React.Component { } } - onTicketSuccess(email, result) { - const { onSuccess } = this.props; + onTicketSuccess() { + const { onSuccess, userLogged, language } = this.props; + const { form } = this.state; const message = 'success'; this.setState( { loading: false, - message + message, + form: !userLogged ? + { + ...form, + ...DEFAULT_CREATE_TICKET_FORM_VALUE, + content: TextEditor.createEmpty(), + departmentIndex: getPublicDepartmentIndexFromDepartmentId(this.props.defaultDepartmentId, SessionStore.getDepartments()), + language + } : + form }, - () => {onSuccess && onSuccess(result, email, message);} + () => {onSuccess && onSuccess(message);} ); } @@ -184,6 +189,7 @@ class CreateTicketForm extends React.Component { export default connect((store) => { const { language, supportedLanguages } = store.config; + return { language: _.includes(supportedLanguages, language) ? language : supportedLanguages[0], onlyOneSupportedLanguage: supportedLanguages.length == 1 ? true : false, diff --git a/client/src/app/main/dashboard/dashboard-create-ticket/dashboard-create-ticket-page.js b/client/src/app/main/dashboard/dashboard-create-ticket/dashboard-create-ticket-page.js index 47f05ba6..b62d7176 100644 --- a/client/src/app/main/dashboard/dashboard-create-ticket/dashboard-create-ticket-page.js +++ b/client/src/app/main/dashboard/dashboard-create-ticket/dashboard-create-ticket-page.js @@ -1,12 +1,15 @@ import React from 'react'; import classNames from 'classnames'; import {connect} from 'react-redux'; -import history from 'lib-app/history'; +import queryString from 'query-string'; + +import history from 'lib-app/history'; +import i18n from 'lib-app/i18n'; -import SessionActions from 'actions/session-actions'; import CreateTicketForm from 'app/main/dashboard/dashboard-create-ticket/create-ticket-form'; import Widget from 'core-components/widget'; +import Message from 'core-components/message'; class DashboardCreateTicketPage extends React.Component { @@ -23,21 +26,24 @@ class DashboardCreateTicketPage extends React.Component { return (
- - + + {queryString.parse(window.location.search)["message"] ? + + {i18n('TICKET_NUMBER_SENT')} + : + null} +
+ +
); } - onCreateTicketSuccess(result, email, message) { - if((this.props.location.pathname !== '/create-ticket')) { - history.push(`/dashboard?message=${message}`); - } else { - setTimeout(() => {history.push('/check-ticket/' + result.data.ticketNumber + '/' + email)}, 1000); - } + onCreateTicketSuccess(message) { + history.push(`${(this.props.location.pathname !== '/create-ticket') ? "/dashboard" : "/create-ticket"}?message=${message}`); } getClass() { @@ -49,6 +55,15 @@ class DashboardCreateTicketPage extends React.Component { return classNames(classes); } + + getCreateTicketFormClass() { + let classes = { + 'dashboard-create-ticket-page__create-ticket-form': true, + 'dashboard-create-ticket-page__create-ticket-form__hidden': !!queryString.parse(window.location.search)["message"] + }; + + return classNames(classes); + } } export default connect((store) => { diff --git a/client/src/app/main/dashboard/dashboard-create-ticket/dashboard-create-ticket-page.scss b/client/src/app/main/dashboard/dashboard-create-ticket/dashboard-create-ticket-page.scss index b7de33f8..3686272a 100644 --- a/client/src/app/main/dashboard/dashboard-create-ticket/dashboard-create-ticket-page.scss +++ b/client/src/app/main/dashboard/dashboard-create-ticket/dashboard-create-ticket-page.scss @@ -7,4 +7,14 @@ float: none; } } -} \ No newline at end of file + + &__container { + display: flex; + flex-direction: column; + justify-content: center; + } + + &__create-ticket-form__hidden { + display: none; + } +} diff --git a/client/src/app/main/dashboard/dashboard-list-tickets/dashboard-list-tickets-page.js b/client/src/app/main/dashboard/dashboard-list-tickets/dashboard-list-tickets-page.js index e44d567b..bcce1957 100644 --- a/client/src/app/main/dashboard/dashboard-list-tickets/dashboard-list-tickets-page.js +++ b/client/src/app/main/dashboard/dashboard-list-tickets/dashboard-list-tickets-page.js @@ -42,16 +42,8 @@ class DashboardListTicketsPage extends React.Component { } render() { - const { - userUsers - } = this.props; - const { - loading, - page, - pages, - tickets, - message - } = this.state; + const { userUsers } = this.props; + const { loading, page, pages, tickets, message } = this.state; return (
diff --git a/client/src/data/languages/en.js b/client/src/data/languages/en.js index 278cb4ce..259dc7f4 100644 --- a/client/src/data/languages/en.js +++ b/client/src/data/languages/en.js @@ -408,6 +408,7 @@ export default { 'SIGNUP_SUCCESS': 'You have registered successfully in our support system.', 'INVITE_USER_SUCCESS': 'You have invited a new user successfully in our support system', 'TICKET_SENT': 'Ticket has been created successfully.', + 'TICKET_NUMBER_SENT': 'Ticket has been created successfully and an email with the ticket number has been sent.', 'VALID_RECOVER': 'Password recovered successfully', 'EMAIL_EXISTS': 'Email already exists', 'ARE_YOU_SURE': 'Confirm action',