1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-12 01:17:04 +02:00

Refactor: cleaner project status modal link handling (#9694)

Removes random booleans, uses more explicit functions.
This commit is contained in:
Thomas Heartman 2025-04-03 14:29:03 +02:00 committed by GitHub
parent 9a4eb059e6
commit 07d11c7a87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 18 deletions

View File

@ -126,21 +126,21 @@ const ProjectStatus = () => {
const [projectStatusOpen, setProjectStatusOpen] = useState( const [projectStatusOpen, setProjectStatusOpen] = useState(
searchParams.has('project-status'), searchParams.has('project-status'),
); );
const toggleStatusModal = (open: boolean, clickedLink?: boolean) => { const openStatusModal = () => {
if (open) { searchParams.set('project-status', '');
searchParams.set('project-status', ''); setSearchParams(searchParams);
setSearchParams(searchParams); setProjectStatusOpen(true);
} else if (!clickedLink) { };
searchParams.delete('project-status'); const closeStatusModal = () => {
setSearchParams(searchParams); searchParams.delete('project-status');
} setSearchParams(searchParams);
setProjectStatusOpen(open); setProjectStatusOpen(false);
}; };
return ( return (
<> <>
<ProjectStatusButton <ProjectStatusButton
onClick={() => toggleStatusModal(true)} onClick={openStatusModal}
startIcon={<ProjectStatusSvgWithMargin />} startIcon={<ProjectStatusSvgWithMargin />}
data-loading-project data-loading-project
> >
@ -148,7 +148,8 @@ const ProjectStatus = () => {
</ProjectStatusButton> </ProjectStatusButton>
<ProjectStatusModal <ProjectStatusModal
open={projectStatusOpen} open={projectStatusOpen}
close={(clickedLink) => toggleStatusModal(false, clickedLink)} onClose={closeStatusModal}
onFollowLink={() => setProjectStatusOpen(false)}
/> />
</> </>
); );

View File

@ -124,10 +124,11 @@ const FeedbackButton = styled(Button)(({ theme }) => ({
type Props = { type Props = {
open: boolean; open: boolean;
close: (clickedLink?: boolean) => void; onClose: () => void;
onFollowLink: () => void;
}; };
export const ProjectStatusModal = ({ open, close }: Props) => { export const ProjectStatusModal = ({ open, onClose, onFollowLink }: Props) => {
const { openFeedback } = useFeedback('projectStatus', 'manual'); const { openFeedback } = useFeedback('projectStatus', 'manual');
const createFeedbackContext = () => { const createFeedbackContext = () => {
openFeedback({ openFeedback({
@ -143,11 +144,11 @@ export const ProjectStatusModal = ({ open, close }: Props) => {
return ( return (
<DynamicSidebarModal <DynamicSidebarModal
open={open} open={open}
onClose={() => close(false)} onClose={onClose}
label='Project status' label='Project status'
onClick={(e: React.SyntheticEvent) => { onClick={(e: React.SyntheticEvent) => {
if (e.target instanceof HTMLAnchorElement) { if (e.target instanceof HTMLAnchorElement) {
close(true); onFollowLink();
} }
}} }}
> >
@ -188,7 +189,7 @@ export const ProjectStatusModal = ({ open, close }: Props) => {
variant='text' variant='text'
onClick={() => { onClick={() => {
createFeedbackContext(); createFeedbackContext();
close(false); onClose();
}} }}
size='small' size='small'
> >
@ -196,8 +197,7 @@ export const ProjectStatusModal = ({ open, close }: Props) => {
</FeedbackButton> </FeedbackButton>
</p> </p>
</FeedbackContainer> </FeedbackContainer>
<Button variant='outlined' onClick={onClose}>
<Button variant='outlined' onClick={() => close(false)}>
Close Close
</Button> </Button>
</CloseRow> </CloseRow>