diff --git a/frontend/src/tools/media.jsx b/frontend/src/tools/media.jsx
index fc709a6..51c4699 100644
--- a/frontend/src/tools/media.jsx
+++ b/frontend/src/tools/media.jsx
@@ -458,6 +458,7 @@ function FavoritenKalender({ onOpenModal }) {
function MovieModal({ tmdbId, onClose, mobile, onHasXrel }) {
const [detail, setDetail] = useState(null);
const [xrel, setXrel] = useState(null); // null=nicht gesucht, []=gesucht
+ const [xrelDates, setXrelDates] = useState([]);
const [xrelLoading, setXrelLoading] = useState(false);
const [loading, setLoading] = useState(true);
const [error, setError] = useState('');
@@ -466,7 +467,7 @@ function MovieModal({ tmdbId, onClose, mobile, onHasXrel }) {
const detailRef = useRef(null);
useEffect(() => {
- setLoading(true); setDetail(null); setXrel(null); setError('');
+ setLoading(true); setDetail(null); setXrel(null); setXrelDates([]); setError('');
detailRef.current = null;
api(`/tools/media/movie/${tmdbId}`)
.then(d => {
@@ -480,7 +481,10 @@ function MovieModal({ tmdbId, onClose, mobile, onHasXrel }) {
imdb_id: d.imdb_id || '',
});
api(`/tools/media/movie/${tmdbId}/xrel?${params}`)
- .then(r => { if (r.xrel?.length > 0) { setXrel(r.xrel); onHasXrel?.(tmdbId); } })
+ .then(r => {
+ if (r.xrel_dates?.length > 0) setXrelDates(r.xrel_dates);
+ if (r.xrel?.length > 0) { setXrel(r.xrel); onHasXrel?.(tmdbId); }
+ })
.catch(() => {});
})
.catch(e => { setError(e.message); setLoading(false); });
@@ -502,6 +506,7 @@ function MovieModal({ tmdbId, onClose, mobile, onHasXrel }) {
if (forceRefresh) params.set('refresh', '1');
const r = await api(`/tools/media/movie/${tmdbId}/xrel?${params}`);
setXrel(r.xrel || []);
+ if (r.xrel_dates?.length > 0) setXrelDates(r.xrel_dates);
if (r.has_xrel) onHasXrel?.(tmdbId);
} catch(_) { setXrel([]); }
finally { setXrelLoading(false); }
@@ -580,6 +585,7 @@ function MovieModal({ tmdbId, onClose, mobile, onHasXrel }) {
{detail.vote_average > 0 &&