import { CircleCheck, CircleUser, Navigation, Phone, TriangleAlert, } from "lucide-react"; import Link from "next/link"; import { useMemo } from "react"; import toast from "react-hot-toast"; import { useTranslation } from "~/providers/I18nProvider"; import { useServizio, useServizioAnnuncio } from "~/providers/ServizioProvider"; import type { UsersStorageUserStorageId } from "~/schemas/public/UsersStorage"; import { api } from "~/utils/api"; import { Credenza, CredenzaBody, CredenzaClose, CredenzaContent, CredenzaDescription, CredenzaFooter, CredenzaHeader, CredenzaTitle, CredenzaTrigger, } from "../custom_ui/credenza"; import { LoadingPage } from "../loading"; import { WhatsAppIcon2 } from "../svgs"; import { Button } from "../ui/button"; import { type UploadCallback, UploadModal } from "../upload_modal"; export const ContattiProprietarioModal = () => { const { servizio } = useServizio(); const { data } = useServizioAnnuncio(); const { t } = useTranslation(); return ( {data.open_contatti_at != null ? ( ) : ( )} {t.contatto.title} {t.contatto.descrizione} {servizio.doc_personale_fronte == null || servizio.doc_personale_retro == null ? ( // biome-ignore lint/style/noNestedTernary: ) : data.open_contatti_at == null ? ( ) : ( )} ); }; const DocComponent = ({ docInfo, cb, }: { docInfo: { storageId: string; ref: UsersStorageUserStorageId | null; } | null; cb: UploadCallback; }) => { const { isAdmin, userId } = useServizio(); if (!docInfo?.storageId) { return ; } return (
Documento caricato
); }; const DocCheckpoint = () => { const { t } = useTranslation(); const { userId, servizio } = useServizio(); const utils = api.useUtils(); const { mutate } = api.servizio.updateServizio.useMutation({ onSuccess: async () => { await utils.servizio.getAllServizioAnnunci.invalidate({ userId, }); await utils.storage.retrieveUserFileData.invalidate({ userId }); await utils.servizio.getServizio.invalidate({ servizioId: servizio.servizio_id, }); }, onError: (err) => { toast.error(`Errore aggiornamento servizio: ${err.message}`); }, }); return ( <>

Devi ancora caricare un tuo documento

Fronte documento:{" "} userStorageIds.length > 0 && mutate({ servizioId: servizio.servizio_id, data: { doc_personale_fronte_ref: userStorageIds[0], }, }) } docInfo={servizio.doc_personale_fronte} />
Retro documento:{" "} userStorageIds.length > 0 && mutate({ servizioId: servizio.servizio_id, data: { doc_personale_retro_ref: userStorageIds[0], }, }) } docInfo={servizio.doc_personale_retro} />


I tuoi dati saranno conservati solamente per la durata del servizio, in conformità con la nostra{" "} Informativa sulla Privacy

); }; const PreUnlock = () => { const { userId, servizioId } = useServizio(); const { annuncioId } = useServizioAnnuncio(); const { t } = useTranslation(); const utils = api.useUtils(); const { mutate } = api.servizio.unlockServizioContatti.useMutation({ onError: (err) => { toast.error(err.message, { id: "unlock-contacts", }); }, onMutate: () => { toast.loading("Caricamento ...", { id: "unlock-contacts", }); }, onSuccess: async (data) => { if (!data) { toast.error("Limite di sblocchi raggiunto", { id: "unlock-contacts", }); return; } toast.success("Successo", { id: "unlock-contacts", }); await utils.servizio.getAllServizioAnnunci.invalidate({ userId, }); }, }); const d = new Date(); const tooEarly = d.getHours() < 9; const tooLate = d.getHours() >= 20; return ( <>

{t.contatto.disclaimer}

{t.contatto.disclaimer2}

{t.contatto.disclaimer3}

{(tooEarly || tooLate) && (
{/*TODO testare */}

Il proprietario riceverà la notifica alle ore 9.00{" "} {tooLate && "di domani"}

)}
); }; function getNavigationUrl(lat: string, lon: string): string { if (typeof window !== "undefined") { const isIOS = navigator.userAgent.toUpperCase().includes("MAC") || navigator.userAgent.toUpperCase().includes("IPAD") || navigator.userAgent.toUpperCase().includes("IPHONE") || navigator.userAgent.toUpperCase().includes("IOS") || navigator.userAgent.toUpperCase().includes("IPOD"); return `${isIOS ? "maps" : "https"}://www.google.com/maps/dir/?api=1&travelmode=driving&layer=traffic&destination=${lat},${lon}`; } return `https://www.google.com/maps/dir/?api=1&travelmode=driving&layer=traffic&destination=${lat},${lon}`; } const PostUnlock = () => { const { servizioId } = useServizio(); const { annuncioId } = useServizioAnnuncio(); const { data, isLoading } = api.annunci.getProprietarioData.useQuery({ annuncioId, servizioId, }); const { t } = useTranslation(); // Memoize navigation URL const navigationUrl = useMemo(() => { if (!data?.propData || !data.propData.lat || !data.propData.lon) return undefined; return getNavigationUrl(data.propData.lat, data.propData.lon); }, [data?.propData]); if (isLoading) { return (
); } if (!data || !data.propData) { return

{t.contatto.error}

; } return ( <>

{t.contatto.propietario}:

{t.contatto.nome}: {data.propData.locatore}

: {data.propData.numero}

{t.contatto.immobile}:

{t.contatto.indirizzo}: {data.propData.indirizzo},{" "} {data.propData.civico} {data.propData.comune} ( {data.propData.provincia})

{t.contatto.apri_nav}

{t.contatto.sbloccato_il}:{" "} {data.opened_at.toLocaleString("it", { day: "2-digit", hour: "2-digit", minute: "2-digit", month: "2-digit", year: "numeric", })}

{t.contatto.contatta}

{t.contatto.orari}

); };