Weiter am BDSM Multiplayer gearbeitet und verknüpfung der verschiedenen games

This commit is contained in:
2026-03-20 00:42:00 +01:00
parent 655cdad796
commit dc0a3f6e85
795 changed files with 10682 additions and 7176 deletions

View File

@@ -13,8 +13,9 @@
label: 'BDSM Game',
icon: '◆',
items: [
{ href: '/bdsm.html', icon: '▷', label: 'Neue Session', id: 'navBdsmNeu' },
{ href: '/bdsmingame.html', icon: '', label: 'Im Spiel', id: 'navBdsmImSpiel' },
{ href: '/bdsm.html', icon: '▷', label: 'Neue Session', id: 'navBdsmNeu' },
{ href: '#', icon: '', label: 'Aktive Session', id: 'navBdsmAktiv' },
{ href: '/bdsmingame.html', icon: '▶', label: 'Im Spiel', id: 'navBdsmImSpiel' },
{ href: '/aufgaben.html', icon: '✓', label: 'Aufgaben' },
{ href: '/toys.html', icon: '◈', label: 'Toys' },
{ href: '/entdecken.html', icon: '⊙', label: 'Entdecken' },
@@ -90,10 +91,12 @@
});
});
// "Im Spiel" standardmäßig ausblenden; wird nach Session-Check ggf. wieder eingeblendet
// "Im Spiel" und "Aktive Session" standardmäßig ausblenden; wird nach Session-Check ggf. wieder eingeblendet
const navNeu = document.getElementById('navBdsmNeu');
const navAktiv = document.getElementById('navBdsmAktiv');
const navImSpiel = document.getElementById('navBdsmImSpiel');
const navCAktiv = document.getElementById('navChastityAktiv');
if (navAktiv) navAktiv.style.display = 'none';
if (navImSpiel) navImSpiel.style.display = 'none';
if (navCAktiv) navCAktiv.style.display = 'none';
@@ -105,10 +108,26 @@
// BDSM Session-Status
try {
const sessionRes = await fetch(`/bdsm?userId=${user.userId}`);
const hasSession = sessionRes.status === 200;
if (navNeu) navNeu.style.display = hasSession ? 'none' : '';
if (navImSpiel) navImSpiel.style.display = hasSession ? '' : 'none';
// Zuerst aktive Einladung prüfen (eigenesGeraet-Spieler)
const aktivRes = await fetch('/bdsm/einladung/meine-aktive');
if (aktivRes.ok) {
const aktiv = await aktivRes.json();
if (navNeu) navNeu.style.display = 'none';
if (navImSpiel) navImSpiel.style.display = 'none';
if (navAktiv) {
navAktiv.style.display = '';
const ziel = aktiv.sessionId
? '/bdsmingame.html'
: `/bdsmwarten.html?id=${aktiv.einladungId}`;
navAktiv.querySelector('a').href = ziel;
}
} else {
// Dann laufende Host-Session prüfen
const sessionRes = await fetch(`/bdsm?userId=${user.userId}`);
const hasSession = sessionRes.status === 200;
if (navNeu) navNeu.style.display = hasSession ? 'none' : '';
if (navImSpiel) navImSpiel.style.display = hasSession ? '' : 'none';
}
} catch (_) { /* Menü bleibt im Standardzustand */ }
// Chastity Lock-Status

View File

@@ -150,9 +150,10 @@
Promise.all([
fetch('/keyholder/invitations/mine').then(r => r.ok ? r.json() : []).catch(() => []),
fetch('/lockee/invitations/mine').then(r => r.ok ? r.json() : []).catch(() => [])
]).then(([khInvs, lockeeInvs]) =>
setBadge(['socialInvBadge', 'socialMobileInvBadge'], khInvs.length + lockeeInvs.length)
fetch('/lockee/invitations/mine').then(r => r.ok ? r.json() : []).catch(() => []),
fetch('/bdsm/einladung/pending').then(r => r.ok ? r.json() : []).catch(() => [])
]).then(([khInvs, lockeeInvs, bdsmInvs]) =>
setBadge(['socialInvBadge', 'socialMobileInvBadge'], khInvs.length + lockeeInvs.length + bdsmInvs.length)
).catch(() => {});
// ── SSE: Echtzeit-Push vom Server ──