| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // components/ForwardButton.js
- "use client";
- import { Button } from "@nextui-org/react";
- import { useRouter, usePathname } from "next/navigation";
- import { useEffect, useState } from "react";
- export default function ForwardButton({ files, isAdmin = false }) {
- const router = useRouter();
- const pathname = usePathname();
- const [lastVisited, setLastVisited] = useState(null);
- // Initialisiere den letzten besuchten Pfad beim Laden
- useEffect(() => {
- const savedLastVisited = localStorage.getItem("lastVisitedFolder");
- if (savedLastVisited && savedLastVisited !== pathname) {
- setLastVisited(savedLastVisited);
- }
- }, [pathname]);
- const handleForwardNavigation = () => {
- // Navigiere zu der letzten gespeicherten Position, falls vorhanden
- if (lastVisited && lastVisited !== pathname) {
- router.push(lastVisited);
- } else {
- // Fallback: Navigiere zur ersten verfügbaren Unterordner, falls keine Position gespeichert ist
- const nextFolder = files.find((file) => file.type === "folder");
- if (nextFolder) {
- const basePath = isAdmin ? "/admin-view" : "/niederlassung";
- const currentSegments = pathname.split("/").filter(Boolean).slice(1); // segments without base path
- const nextPath = `${basePath}/${[
- ...currentSegments,
- nextFolder.name,
- ].join("/")}`;
- router.push(nextPath);
- localStorage.setItem("lastVisitedFolder", nextPath); // Speichere den neuen Pfad
- setLastVisited(nextPath); // Aktualisiere den lokalen Zustand
- } else {
- alert("Kein weiterer Ordner vorhanden.");
- }
- }
- };
- // Aktualisiere den aktuellen Pfad als letzten besuchten, wenn sich der Pfad ändert
- useEffect(() => {
- if (typeof window !== "undefined" && pathname) {
- localStorage.setItem("lastVisitedFolder", pathname);
- }
- }, [pathname]);
- return (
- <Button
- variant="flat"
- size="sm"
- color="default"
- className="hover:bg-orange-500 hover:text-white"
- onClick={handleForwardNavigation}
- >
- Zuletzt besucht
- </Button>
- );
- }
|