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:
parent
9a4eb059e6
commit
07d11c7a87
@ -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)}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user