update
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
// Vorschlag, die gesehenen Filme und die Wünsche. Alles wird beim Start
|
// Vorschlag, die gesehenen Filme und die Wünsche. Alles wird beim Start
|
||||||
// geladen und über den Live-Kanal frisch gehalten.
|
// geladen und über den Live-Kanal frisch gehalten.
|
||||||
import { computed, onMounted, onUnmounted, ref } from 'vue'
|
import { computed, onMounted, onUnmounted, ref } from 'vue'
|
||||||
import { abonnieren } from '../live'
|
import { abonnieren, neuVerbinden } from '../live'
|
||||||
|
|
||||||
async function hole(url) {
|
async function hole(url) {
|
||||||
try {
|
try {
|
||||||
@@ -35,6 +35,7 @@ export function useMeins({ host }) {
|
|||||||
body: JSON.stringify({ user_id: id ?? null, movie_id: movieId }),
|
body: JSON.stringify({ user_id: id ?? null, movie_id: movieId }),
|
||||||
})
|
})
|
||||||
if (!resp.ok) return false
|
if (!resp.ok) return false
|
||||||
|
neuVerbinden()
|
||||||
// Sammlung, Vorschlag, Wertungen und Wünsche gehören zum Namen. Ohne
|
// Sammlung, Vorschlag, Wertungen und Wünsche gehören zum Namen. Ohne
|
||||||
// Nachladen zeigt die Seite weiter die des vorigen Benutzers.
|
// Nachladen zeigt die Seite weiter die des vorigen Benutzers.
|
||||||
await ladeRunde()
|
await ladeRunde()
|
||||||
@@ -57,9 +58,7 @@ export function useMeins({ host }) {
|
|||||||
const gesehenIds = computed(() => new Set(gesehen.value.map((e) => e.movie_id)))
|
const gesehenIds = computed(() => new Set(gesehen.value.map((e) => e.movie_id)))
|
||||||
|
|
||||||
// Ausgeblendete Filme zählen für Gäste nicht mit
|
// Ausgeblendete Filme zählen für Gäste nicht mit
|
||||||
const gesehenZahl = computed(
|
const gesehenZahl = computed(() => gesehen.value.filter((e) => host.value || !e.hidden).length)
|
||||||
() => gesehen.value.filter((e) => host.value || !e.hidden).length
|
|
||||||
)
|
|
||||||
|
|
||||||
// Wer schon vorgeschlagen hat, soll das in der Detailansicht sehen —
|
// Wer schon vorgeschlagen hat, soll das in der Detailansicht sehen —
|
||||||
// und alle Filme auf der Bahn, damit die Karten es zeigen können
|
// und alle Filme auf der Bahn, damit die Karten es zeigen können
|
||||||
|
|||||||
@@ -4,15 +4,26 @@
|
|||||||
let quelle = null
|
let quelle = null
|
||||||
const hoerer = new Set()
|
const hoerer = new Set()
|
||||||
|
|
||||||
|
function oeffnen() {
|
||||||
|
quelle = new EventSource('/api/events')
|
||||||
|
quelle.onmessage = (ereignis) => {
|
||||||
|
const nachricht = JSON.parse(ereignis.data)
|
||||||
|
hoerer.forEach((h) => h(nachricht))
|
||||||
|
}
|
||||||
|
// Der Browser verbindet nach einem Abbruch von selbst neu
|
||||||
|
}
|
||||||
|
|
||||||
export function abonnieren(fn) {
|
export function abonnieren(fn) {
|
||||||
hoerer.add(fn)
|
hoerer.add(fn)
|
||||||
if (!quelle) {
|
if (!quelle) oeffnen()
|
||||||
quelle = new EventSource('/api/events')
|
|
||||||
quelle.onmessage = (ereignis) => {
|
|
||||||
const nachricht = JSON.parse(ereignis.data)
|
|
||||||
hoerer.forEach((h) => h(nachricht))
|
|
||||||
}
|
|
||||||
// Der Browser verbindet nach einem Abbruch von selbst neu
|
|
||||||
}
|
|
||||||
return () => hoerer.delete(fn)
|
return () => hoerer.delete(fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Der Server merkt sich je Verbindung die Sitzung — daran hängt der
|
||||||
|
// grüne Punkt. In einem frischen Browser steht die Verbindung, bevor
|
||||||
|
// das Cookie da ist. Nach dem Namenswechsel darum einmal neu verbinden.
|
||||||
|
export function neuVerbinden() {
|
||||||
|
if (!quelle) return
|
||||||
|
quelle.close()
|
||||||
|
oeffnen()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user