diff --git a/app/components/ThreadSubscriptionButton.vue b/app/components/ThreadSubscriptionButton.vue index 9b0a335..261e61b 100644 --- a/app/components/ThreadSubscriptionButton.vue +++ b/app/components/ThreadSubscriptionButton.vue @@ -15,15 +15,19 @@ async function toggle() { if (busy.value) return busy.value = true const uploadId = props.uploadId + const next = !props.enabled + // Optimistisch umschalten — wie bei den Reactions; der Server korrigiert nur noch + emit('change', uploadId, next) try { const result = await $fetch<{ enabled: boolean }>(`/api/uploads/${uploadId}/subscription`, { method: 'PUT', - body: { enabled: !props.enabled }, + body: { enabled: next }, }) - emit('change', uploadId, result.enabled) + if (result.enabled !== next) emit('change', uploadId, result.enabled) toast.success(result.enabled ? t('thread.subOn') : t('thread.subOff')) } catch { + emit('change', uploadId, !next) toast.error(t('thread.subFailed')) } finally { diff --git a/app/pages/thread/[id].vue b/app/pages/thread/[id].vue index befae6d..cfd1d40 100644 --- a/app/pages/thread/[id].vue +++ b/app/pages/thread/[id].vue @@ -1,5 +1,5 @@