ForwardButton.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // components/ForwardButton.js
  2. "use client";
  3. import { Button } from "@nextui-org/react";
  4. import { useRouter, usePathname } from "next/navigation";
  5. import { useEffect, useState } from "react";
  6. export default function ForwardButton({ files, isAdmin = false }) {
  7. const router = useRouter();
  8. const pathname = usePathname();
  9. const [lastVisited, setLastVisited] = useState(null);
  10. // Initialisiere den letzten besuchten Pfad beim Laden
  11. useEffect(() => {
  12. const savedLastVisited = localStorage.getItem("lastVisitedFolder");
  13. if (savedLastVisited && savedLastVisited !== pathname) {
  14. setLastVisited(savedLastVisited);
  15. }
  16. }, [pathname]);
  17. const handleForwardNavigation = () => {
  18. // Navigiere zu der letzten gespeicherten Position, falls vorhanden
  19. if (lastVisited && lastVisited !== pathname) {
  20. router.push(lastVisited);
  21. } else {
  22. // Fallback: Navigiere zur ersten verfügbaren Unterordner, falls keine Position gespeichert ist
  23. const nextFolder = files.find((file) => file.type === "folder");
  24. if (nextFolder) {
  25. const basePath = isAdmin ? "/admin-view" : "/niederlassung";
  26. const currentSegments = pathname.split("/").filter(Boolean).slice(1); // segments without base path
  27. const nextPath = `${basePath}/${[
  28. ...currentSegments,
  29. nextFolder.name,
  30. ].join("/")}`;
  31. router.push(nextPath);
  32. localStorage.setItem("lastVisitedFolder", nextPath); // Speichere den neuen Pfad
  33. setLastVisited(nextPath); // Aktualisiere den lokalen Zustand
  34. } else {
  35. alert("Kein weiterer Ordner vorhanden.");
  36. }
  37. }
  38. };
  39. // Aktualisiere den aktuellen Pfad als letzten besuchten, wenn sich der Pfad ändert
  40. useEffect(() => {
  41. if (typeof window !== "undefined" && pathname) {
  42. localStorage.setItem("lastVisitedFolder", pathname);
  43. }
  44. }, [pathname]);
  45. return (
  46. <Button
  47. variant="flat"
  48. size="sm"
  49. color="default"
  50. className="hover:bg-orange-500 hover:text-white"
  51. onClick={handleForwardNavigation}
  52. >
  53. Zuletzt besucht
  54. </Button>
  55. );
  56. }