Skip to content
Snippets Groups Projects
useNavigation.ts 1.89 KiB
import { useNavigate } from "react-router-dom";
import { useState } from "react";
import { useLoading } from "./LoadingContext";

export const useNavigation = () => {
    const navigate = useNavigate();

    const { setIsLoading, isLoading } = useLoading(); // 2. Ladezustand hier verwenden



    const goToPagesAndOpenTab = (tabId: string, path: string) => {
    
        
        navigate(`${path}?tab=${tabId}`);
        
    };
    const goToTextsAndOpenCollapsible = (collapseId: string, path: string) => {
        
        
        navigate(`${path}?collapseId=${collapseId}`);
    };
    const goToPageWithTabAndCollapsible = ({ path, tabId, collapseId }: { path: string, tabId: string, collapseId?: string }) => {
        
        
        let url = `${path}?tab=${tabId}`;
        if (collapseId) {
            url += `&collapseId=${collapseId}`;
        }
        navigate(url);
    };
    const goToPageWithNestedTabs = ({ path, tabId, subTabId, collapseId }: { path: string, tabId: string, subTabId?: string, collapseId?: string }) => {
        
        
        let url = `${path}?tab=${tabId}`;
        if (subTabId) {
            url += `&subTab=${subTabId}`;
        }
        if (collapseId) {
            url += `&collapseId=${collapseId}`;
        }
        navigate(url);
    };



    const goToPageWithTabAndScroll = ({ path, tabId, scrollToId }: { path: string, tabId: string, scrollToId: string }) => {
        let url = `${path}?tab=${tabId}`;
        if (scrollToId) {
            url += `&scrollTo=${scrollToId}`;
        }
        navigate(url);
    };

    const goToPageAndScroll = (scrollToId: string, path: string) => {
        
        
        navigate(`${path}?scrollTo=${scrollToId}`);
    };



    
    return { isLoading,  goToPageAndScroll, setIsLoading, goToPagesAndOpenTab, goToPageWithTabAndScroll, goToPageWithNestedTabs, goToPageWithTabAndCollapsible, goToTextsAndOpenCollapsible };
};