// ----------------------------------------------------------------------------- // Lou-Ka — Agrégateur de logements à louer (province de Québec) // Auteur : Simon-Pierre Boucher — contact@spboucher.ai // pages/Passerelle.tsx : page de transition vers l'annonce originale // (« passerelle » à la Centris). Ouverte dans un nouvel onglet par les CTA // de la fiche : affiche Lou-Ka → gestionnaire avec une barre de progression, // puis redirige vers l'annonce chez le gestionnaire après ~2,2 s. // Sécurité : on reçoit un uid (jamais une URL brute) — l'URL de destination // vient de notre API, pas du paramètre. Aucune redirection ouverte possible. // ----------------------------------------------------------------------------- import { useEffect, useRef, useState } from "react"; import { Link, useParams } from "react-router-dom"; import { fetchListing, fetchSources, registerSourceNames, sourceName } from "../api"; const DELAI_MS = 2200; export default function PasserellePage() { const { uid } = useParams<{ uid: string }>(); const [dest, setDest] = useState<{ url: string; source: string } | null>(null); const [error, setError] = useState(false); const timer = useRef(null); useEffect(() => { if (!uid) return; let cancelled = false; Promise.all([fetchSources(), fetchListing(uid)]) .then(([src, l]) => { if (cancelled) return; registerSourceNames(src.sources); if (!l.url || !/^https?:\/\//.test(l.url)) { setError(true); return; } setDest({ url: l.url, source: l.source }); timer.current = window.setTimeout(() => { window.location.replace(l.url); }, DELAI_MS); }) .catch(() => !cancelled && setError(true)); return () => { cancelled = true; if (timer.current) window.clearTimeout(timer.current); }; }, [uid]); if (error) return (
⚠️

Annonce introuvable

Impossible de retrouver l'annonce originale.

Retour aux logements
); const nom = dest ? sourceName(dest.source) : "…"; return (
LouKa

Passerelle vers l'annonce originale

{dest ? <>Nous vous amenons chez {nom} — les prix, visites et signatures se passent directement chez le gestionnaire. : "Préparation de la redirection…"}

{dest && ( Y aller maintenant ↗ )}
Lou-Ka est un agrégateur indépendant : chaque fiche renvoie à l'annonce publiée par le gestionnaire immobilier.
); }