From 61d9d90fa67a406fec6a2a3975dd49f18ef755e9 Mon Sep 17 00:00:00 2001 From: Kira Miller Date: Thu, 10 Oct 2024 05:35:05 +0000 Subject: [PATCH] fix: more PR stuff --- .../PeopleManagement/EditGroupNameModal.jsx | 44 +++-- .../PeopleManagement/GroupDetailPage.jsx | 166 ++++++++++-------- .../data/hooks/useEnterpriseGroupUuid.js | 2 +- src/data/services/LmsApiService.js | 2 +- 4 files changed, 117 insertions(+), 97 deletions(-) diff --git a/src/components/PeopleManagement/EditGroupNameModal.jsx b/src/components/PeopleManagement/EditGroupNameModal.jsx index bf380eed6..86ce1a37f 100644 --- a/src/components/PeopleManagement/EditGroupNameModal.jsx +++ b/src/components/PeopleManagement/EditGroupNameModal.jsx @@ -10,12 +10,12 @@ import LmsApiService from '../../data/services/LmsApiService'; import GeneralErrorModal from './GeneralErrorModal'; const EditGroupNameModal = ({ - group, isOpen, close, setShowToast, setToastMessage, + group, isOpen, close, setShowToast, setToastMessage, forceUpdate, }) => { const intl = useIntl(); const [isErrorOpen, openError, closeError] = useToggle(false); - const [name, setName] = useState(group?.name); - const [nameLength, setNameLength] = useState(group?.name.length || 0); + const [name, setName] = useState(group.name); + const [nameLength, setNameLength] = useState(group.name.length || 0); const [buttonState, setButtonState] = useState('default'); const handleGroupNameChange = (e) => { @@ -32,14 +32,17 @@ const EditGroupNameModal = ({ const editEnterpriseGroup = async () => { setButtonState('pending'); - const formData = { name }; - const response = await LmsApiService.updateEnterpriseGroup(group?.uuid, formData); - if (response.status === 200) { - setButtonState('complete'); - close(); - setShowToast(true); - setToastMessage('Group name updated'); - } else { + try { + const formData = { name }; + const response = await LmsApiService.updateEnterpriseGroup(group.uuid, formData); + if (response.status === 200) { + setButtonState('complete'); + close(); + setShowToast(true); + setToastMessage('Group name updated'); + forceUpdate(); + } + } catch (error) { openError(); } setButtonState('default'); @@ -47,10 +50,7 @@ const EditGroupNameModal = ({ return ( <> - + , + pending: ( + + ), }} disabledStates={['pending']} onClick={editEnterpriseGroup} @@ -120,6 +125,7 @@ EditGroupNameModal.propTypes = { close: PropTypes.func.isRequired, setShowToast: PropTypes.func.isRequired, setToastMessage: PropTypes.func.isRequired, + forceUpdate: PropTypes.func.isRequired, }; export default EditGroupNameModal; diff --git a/src/components/PeopleManagement/GroupDetailPage.jsx b/src/components/PeopleManagement/GroupDetailPage.jsx index b258a9a96..b37338b5b 100644 --- a/src/components/PeopleManagement/GroupDetailPage.jsx +++ b/src/components/PeopleManagement/GroupDetailPage.jsx @@ -1,8 +1,8 @@ -import React, { useState } from 'react'; +import React, { useReducer, useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import { useIntl, FormattedMessage } from '@edx/frontend-platform/i18n'; import { - Breadcrumb, Card, Hyperlink, Icon, IconButton, IconButtonWithTooltip, Toast, useToggle, + Breadcrumb, Card, Hyperlink, Icon, IconButton, IconButtonWithTooltip, Skeleton, Toast, useToggle, } from '@openedx/paragon'; import { Delete, Edit } from '@openedx/paragon/icons'; @@ -19,6 +19,14 @@ const GroupDetailPage = () => { const [isEditModalOpen, openEditModal, closeEditModal] = useToggle(false); const [showToast, setShowToast] = useState(false); const [toastMessage, setToastMessage] = useState(''); + const [isLoading, setIsLoading] = useState(true); + const [, forceUpdate] = useReducer(x => x + 1, 0); + + useEffect(() => { + if (enterpriseGroup !== undefined) { + setIsLoading(false); + } + }, [enterpriseGroup]); const tooltipContent = ( { /> ); - const budgetNameAndEdit = ( - <> - {enterpriseGroup?.name} - - - ); return (
- setShowToast(false)} - show={showToast} - > - {toastMessage} - - - - - - - - } + {!isLoading && ( + <> + setShowToast(false)} show={showToast}> + {toastMessage} + + + - Created on - - - - - View group progress - - - + + + + {enterpriseGroup.name} + + + )} + subtitle={`${enterpriseGroup.acceptedMembersCount} accepted members`} + /> + Created on + + + + + View group progress + + + + + )}
); }; diff --git a/src/components/learner-credit-management/data/hooks/useEnterpriseGroupUuid.js b/src/components/learner-credit-management/data/hooks/useEnterpriseGroupUuid.js index c1e9cf1fa..86f620ef4 100644 --- a/src/components/learner-credit-management/data/hooks/useEnterpriseGroupUuid.js +++ b/src/components/learner-credit-management/data/hooks/useEnterpriseGroupUuid.js @@ -5,7 +5,7 @@ import { learnerCreditManagementQueryKeys } from '../constants'; import LmsApiService from '../../../../data/services/LmsApiService'; /** - * Retrieves a enterprise group by the group UUID from the API. + * Retrieves an enterprise group by group UUID from the API. * * @param {*} queryKey The queryKey from the associated `useQuery` call. * @returns The enterprise group object diff --git a/src/data/services/LmsApiService.js b/src/data/services/LmsApiService.js index 6bb8d5cd2..00763159d 100644 --- a/src/data/services/LmsApiService.js +++ b/src/data/services/LmsApiService.js @@ -447,7 +447,7 @@ class LmsApiService { }; static removeEnterpriseGroup = async (groupUuid) => { - const removeGroupEndpoint = `${LmsApiService.enterpriseGroupListUrl}///////${groupUuid}/`; + const removeGroupEndpoint = `${LmsApiService.enterpriseGroupListUrl}${groupUuid}/`; return LmsApiService.apiClient().delete(removeGroupEndpoint); };