1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-09 00:18:00 +01:00

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 <fredrik.no@gmail.com>
This commit is contained in:
Youssef Khedher 2022-01-28 17:20:57 +01:00 committed by GitHub
parent 7773d107bc
commit 4571e3af81
4 changed files with 50 additions and 8 deletions

View File

@ -13,6 +13,7 @@ import React from 'react';
import useUsers from '../../../../hooks/api/getters/useUsers/useUsers'; import useUsers from '../../../../hooks/api/getters/useUsers/useUsers';
import ConditionallyRender from '../../../common/ConditionallyRender/ConditionallyRender'; import ConditionallyRender from '../../../common/ConditionallyRender/ConditionallyRender';
import { EDIT } from '../../../../constants/misc'; import { EDIT } from '../../../../constants/misc';
import useUiBootstrap from '../../../../hooks/api/getters/useUiBootstrap/useUiBootstrap';
interface IUserForm { interface IUserForm {
email: string; email: string;
@ -48,6 +49,7 @@ const UserForm: React.FC<IUserForm> = ({
}) => { }) => {
const styles = useStyles(); const styles = useStyles();
const { roles } = useUsers(); const { roles } = useUsers();
const { bootstrap } = useUiBootstrap();
const sortRoles = (a, b) => { const sortRoles = (a, b) => {
if (b.name[0] < a.name[0]) { if (b.name[0] < a.name[0]) {
@ -125,7 +127,7 @@ const UserForm: React.FC<IUserForm> = ({
</RadioGroup> </RadioGroup>
</FormControl> </FormControl>
<ConditionallyRender <ConditionallyRender
condition={mode !== EDIT} condition={mode !== EDIT && bootstrap?.email}
show={ show={
<FormControl> <FormControl>
<Typography <Typography

View File

@ -1,15 +1,16 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import useUiBootstrap from '../../../../hooks/api/getters/useUiBootstrap/useUiBootstrap';
import useUsers from '../../../../hooks/api/getters/useUsers/useUsers'; import useUsers from '../../../../hooks/api/getters/useUsers/useUsers';
const useProjectRoleForm = ( const useCreateUserForm = (
initialName = '', initialName = '',
initialEmail = '', initialEmail = '',
initialSendEmail = true,
initialRootRole = 1 initialRootRole = 1
) => { ) => {
const { bootstrap } = useUiBootstrap();
const [name, setName] = useState(initialName); const [name, setName] = useState(initialName);
const [email, setEmail] = useState(initialEmail); const [email, setEmail] = useState(initialEmail);
const [sendEmail, setSendEmail] = useState(initialSendEmail); const [sendEmail, setSendEmail] = useState(false);
const [rootRole, setRootRole] = useState(initialRootRole); const [rootRole, setRootRole] = useState(initialRootRole);
const [errors, setErrors] = useState({}); const [errors, setErrors] = useState({});
@ -24,8 +25,8 @@ const useProjectRoleForm = (
}, [initialEmail]); }, [initialEmail]);
useEffect(() => { useEffect(() => {
setSendEmail(initialSendEmail); setSendEmail(bootstrap?.email || false);
}, [initialSendEmail]); }, [bootstrap?.email]);
useEffect(() => { useEffect(() => {
setRootRole(initialRootRole); setRootRole(initialRootRole);
@ -81,4 +82,4 @@ const useProjectRoleForm = (
}; };
}; };
export default useProjectRoleForm; export default useCreateUserForm;

View File

@ -76,7 +76,7 @@ const Feedback = ({ feedbackId, openUrl }: IFeedbackProps) => {
setShowFeedback(false); setShowFeedback(false);
}, 100); }, 100);
}; };
console.log(feedback);
const pnps = feedback.find(feedback => feedback.feedbackId === feedbackId); const pnps = feedback.find(feedback => feedback.feedbackId === feedbackId);
if (pnps?.given || pnps?.neverShow) { if (pnps?.given || pnps?.neverShow) {

View File

@ -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;