From 4571e3af817b3caa7e8428e9c661f846e6c5c231 Mon Sep 17 00:00:00 2001 From: Youssef Khedher Date: Fri, 28 Jan 2022 17:20:57 +0100 Subject: [PATCH] feat: add useUiBootstrap hook and update send email state (#643) * feat: add useUiBootstrap hook and update send email state in create user form * fix: set email based on config * fix: update cache key Co-authored-by: Fredrik Oseberg --- .../admin/users/UserForm/UserForm.tsx | 4 +- .../admin/users/hooks/useAddUserForm.ts | 13 ++++--- .../component/common/Feedback/Feedback.tsx | 2 +- .../getters/useUiBootstrap/useUiBootstrap.ts | 39 +++++++++++++++++++ 4 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 frontend/src/hooks/api/getters/useUiBootstrap/useUiBootstrap.ts diff --git a/frontend/src/component/admin/users/UserForm/UserForm.tsx b/frontend/src/component/admin/users/UserForm/UserForm.tsx index 46a0b8ae31..5be7092c79 100644 --- a/frontend/src/component/admin/users/UserForm/UserForm.tsx +++ b/frontend/src/component/admin/users/UserForm/UserForm.tsx @@ -13,6 +13,7 @@ import React from 'react'; import useUsers from '../../../../hooks/api/getters/useUsers/useUsers'; import ConditionallyRender from '../../../common/ConditionallyRender/ConditionallyRender'; import { EDIT } from '../../../../constants/misc'; +import useUiBootstrap from '../../../../hooks/api/getters/useUiBootstrap/useUiBootstrap'; interface IUserForm { email: string; @@ -48,6 +49,7 @@ const UserForm: React.FC = ({ }) => { const styles = useStyles(); const { roles } = useUsers(); + const { bootstrap } = useUiBootstrap(); const sortRoles = (a, b) => { if (b.name[0] < a.name[0]) { @@ -125,7 +127,7 @@ const UserForm: React.FC = ({ { + const { bootstrap } = useUiBootstrap(); const [name, setName] = useState(initialName); const [email, setEmail] = useState(initialEmail); - const [sendEmail, setSendEmail] = useState(initialSendEmail); + const [sendEmail, setSendEmail] = useState(false); const [rootRole, setRootRole] = useState(initialRootRole); const [errors, setErrors] = useState({}); @@ -24,8 +25,8 @@ const useProjectRoleForm = ( }, [initialEmail]); useEffect(() => { - setSendEmail(initialSendEmail); - }, [initialSendEmail]); + setSendEmail(bootstrap?.email || false); + }, [bootstrap?.email]); useEffect(() => { setRootRole(initialRootRole); @@ -81,4 +82,4 @@ const useProjectRoleForm = ( }; }; -export default useProjectRoleForm; +export default useCreateUserForm; diff --git a/frontend/src/component/common/Feedback/Feedback.tsx b/frontend/src/component/common/Feedback/Feedback.tsx index e33779ee88..6d2b9d7c48 100644 --- a/frontend/src/component/common/Feedback/Feedback.tsx +++ b/frontend/src/component/common/Feedback/Feedback.tsx @@ -76,7 +76,7 @@ const Feedback = ({ feedbackId, openUrl }: IFeedbackProps) => { setShowFeedback(false); }, 100); }; - console.log(feedback); + const pnps = feedback.find(feedback => feedback.feedbackId === feedbackId); if (pnps?.given || pnps?.neverShow) { diff --git a/frontend/src/hooks/api/getters/useUiBootstrap/useUiBootstrap.ts b/frontend/src/hooks/api/getters/useUiBootstrap/useUiBootstrap.ts new file mode 100644 index 0000000000..9531cbdb9c --- /dev/null +++ b/frontend/src/hooks/api/getters/useUiBootstrap/useUiBootstrap.ts @@ -0,0 +1,39 @@ +import handleErrorResponses from '../httpErrorResponseHandler'; +import useSWR, { mutate, SWRConfiguration } from 'swr'; +import { useState, useEffect } from 'react'; +import { formatApiPath } from '../../../../utils/format-path'; + +const useUiBootstrap = (options: SWRConfiguration = {}) => { + const BOOTSTRAP_CACHE_KEY = `api/admin/ui-bootstrap`; + + const fetcher = () => { + const path = formatApiPath(`api/admin/ui-bootstrap`); + + return fetch(path, { + method: 'GET', + credentials: 'include', + }) + .then(handleErrorResponses('ui bootstrap')) + .then(res => res.json()); + }; + + const { data, error } = useSWR(BOOTSTRAP_CACHE_KEY, fetcher, options); + const [loading, setLoading] = useState(!error && !data); + + const refetchUiBootstrap = () => { + mutate(BOOTSTRAP_CACHE_KEY); + }; + + useEffect(() => { + setLoading(!error && !data); + }, [data, error]); + + return { + bootstrap: data, + error, + loading, + refetchUiBootstrap, + }; +}; + +export default useUiBootstrap;