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(
searchParams.has('project-status'),
);
const toggleStatusModal = (open: boolean, clickedLink?: boolean) => {
if (open) {
searchParams.set('project-status', '');
setSearchParams(searchParams);
} else if (!clickedLink) {
searchParams.delete('project-status');
setSearchParams(searchParams);
}
setProjectStatusOpen(open);
const openStatusModal = () => {
searchParams.set('project-status', '');
setSearchParams(searchParams);
setProjectStatusOpen(true);
};
const closeStatusModal = () => {
searchParams.delete('project-status');
setSearchParams(searchParams);
setProjectStatusOpen(false);
};
return (
<>
<ProjectStatusButton
onClick={() => toggleStatusModal(true)}
onClick={openStatusModal}
startIcon={<ProjectStatusSvgWithMargin />}
data-loading-project
>
@ -148,7 +148,8 @@ const ProjectStatus = () => {
</ProjectStatusButton>
<ProjectStatusModal
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 = {
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 createFeedbackContext = () => {
openFeedback({
@ -143,11 +144,11 @@ export const ProjectStatusModal = ({ open, close }: Props) => {
return (
<DynamicSidebarModal
open={open}
onClose={() => close(false)}
onClose={onClose}
label='Project status'
onClick={(e: React.SyntheticEvent) => {
if (e.target instanceof HTMLAnchorElement) {
close(true);
onFollowLink();
}
}}
>
@ -188,7 +189,7 @@ export const ProjectStatusModal = ({ open, close }: Props) => {
variant='text'
onClick={() => {
createFeedbackContext();
close(false);
onClose();
}}
size='small'
>
@ -196,8 +197,7 @@ export const ProjectStatusModal = ({ open, close }: Props) => {
</FeedbackButton>
</p>
</FeedbackContainer>
<Button variant='outlined' onClick={() => close(false)}>
<Button variant='outlined' onClick={onClose}>
Close
</Button>
</CloseRow>