"use client" import { useParams } from "next/navigation" import { useEffect, useState } from "react" import { Loader2, Lock } from "lucide-react" import { PublicShareChrome, PublicShareViewPanel, } from "@/components/drive/public-share-view" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { usePublicShare } from "@/lib/api/hooks/use-public-share-queries" import { folderPathFromPublicSegments } from "@/lib/api/public-share" export default function PublicSharePage() { const params = useParams() const token = String(params.token ?? "") const pathSegments = params.path as string[] | undefined const path = folderPathFromPublicSegments(pathSegments) const [passwordInput, setPasswordInput] = useState("") const [password, setPassword] = useState(undefined) const { data, isLoading, isError, error, refetch, isFetching } = usePublicShare( token, path, password ) const needsPassword = isError && error instanceof Error && error.message === "password_required" useEffect(() => { if (password && typeof window !== "undefined") { sessionStorage.setItem(`public-share-pw:${token}`, password) } }, [password, token]) const submitPassword = (event: React.FormEvent) => { event.preventDefault() const trimmed = passwordInput.trim() if (!trimmed) return setPassword(trimmed) } return ( {isLoading || (isFetching && !data) ? (
) : needsPassword ? (

Lien protégé par mot de passe

Saisissez le mot de passe pour accéder à ce partage.

setPasswordInput(e.target.value)} />
) : isError || !data ? (

Partage indisponible

Ce lien est expiré, révoqué ou incorrect.

) : ( )}
) }