mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01: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