refactor: remove success notifications from api action wrappers and websocket connection

This commit is contained in:
mmacierzanka committed 2026-09-13 16:04:35 +02:00
1 parent 2513aa2b28
commit 76f63057bc
7 files changed
+15 -32

No files matched your search

+1 -1
View File
@@ -25,7 +25,7 @@ async function submit() {
busy.value = true busy.value = true
const guildId = props.status.active_voice_channel.guild_id const guildId = props.status.active_voice_channel.guild_id
const pendingId = addPendingTrack(guildId, trimmed) const pendingId = addPendingTrack(guildId, trimmed)
const added = await run(() => api.play(trimmed), 'Dodano utwór do kolejki!', 'Błąd dodawania') const added = await run(() => api.play(trimmed), '', 'Błąd dodawania')
removePendingTrack(pendingId) removePendingTrack(pendingId)
if (added) query.value = '' if (added) query.value = ''
busy.value = false busy.value = false
+1 -1
View File
@@ -34,7 +34,7 @@ async function replay(entry: HistoryTrack) {
notify('Ten wpis historii nie ma źródła do odtworzenia', 'error') notify('Ten wpis historii nie ma źródła do odtworzenia', 'error')
return return
} }
await run(() => api.play(entry.url as string), 'Dodano z historii do kolejki!', 'Błąd') await run(() => api.play(entry.url as string), '', 'Błąd')
} finally { } finally {
removePendingTrack(pendingId) removePendingTrack(pendingId)
} }
+7 -15
View File
@@ -114,7 +114,7 @@ async function onToggleEffect(fx: PlayerEffect) {
const next = !fx.active const next = !fx.active
await run( await run(
() => api.toggleEffect(fx.id, next), () => api.toggleEffect(fx.id, next),
next ? `Włączono efekt: ${fx.name} ✨` : `Wyłączono efekt: ${fx.name}`, '',
`Błąd przełączania efektu ${fx.name}`, `Błąd przełączania efektu ${fx.name}`,
) )
} }
@@ -127,7 +127,7 @@ async function togglePlayback() {
} }
await run( await run(
() => (playing.value ? api.pause() : api.resume()), () => (playing.value ? api.pause() : api.resume()),
playing.value ? 'Wstrzymano odtwarzanie' : 'Wznowiono odtwarzanie', '',
'Błąd sterowania odtwarzaniem', 'Błąd sterowania odtwarzaniem',
) )
} }
@@ -158,7 +158,7 @@ async function commitSeek() {
const position = seekPosition.value const position = seekPosition.value
seekSubmitting.value = true seekSubmitting.value = true
try { try {
await run(() => api.seek(position), 'Przewinięto utwór', 'Błąd przewijania utworu') await run(() => api.seek(position), '', 'Błąd przewijania utworu')
} finally { } finally {
seekSubmitting.value = false seekSubmitting.value = false
seeking.value = false seeking.value = false
@@ -170,28 +170,20 @@ async function restartCurrent() {
seekPosition.value = 0 seekPosition.value = 0
seekSubmitting.value = true seekSubmitting.value = true
try { try {
await run(() => api.seek(0), 'Uruchomiono utwór od początku', 'Błąd uruchamiania od początku') await run(() => api.seek(0), '', 'Błąd uruchamiania od początku')
} finally { } finally {
seekSubmitting.value = false seekSubmitting.value = false
seeking.value = false seeking.value = false
} }
} }
const skip = () => run(() => api.skip(), 'Pominięto utwór', 'Błąd pomijania utworu') const skip = () => run(() => api.skip(), '', 'Błąd pomijania utworu')
const stop = () => const stop = () => run(() => api.stop(), '', 'Błąd zatrzymywania')
run(() => api.stop(), 'Zatrzymano odtwarzanie i wyczyszczono kolejkę', 'Błąd zatrzymywania')
const LOOP_MESSAGES = {
playlist: 'Zapętlanie kolejki włączone',
single: 'Zapętlanie utworu włączone',
off: 'Zapętlanie wyłączone',
} as const
async function cycleLoop() { async function cycleLoop() {
try { try {
const { mode } = await api.cycleLoop() await api.cycleLoop()
notify(LOOP_MESSAGES[mode], 'info')
} catch { } catch {
notify('Błąd ustawiania pętli', 'error') notify('Błąd ustawiania pętli', 'error')
} }
+3 -3
View File
@@ -25,7 +25,7 @@ const draggedId = ref<string | null>(null)
const dropTargetId = ref<string | null>(null) const dropTargetId = ref<string | null>(null)
const sendOrder = (ids: string[]) => const sendOrder = (ids: string[]) =>
run(() => api.reorder(ids), 'Zmieniono kolejność utworów!', 'Nie udało się zapisać kolejności') run(() => api.reorder(ids), '', 'Nie udało się zapisać kolejności')
function reordered(from: number, to: number): string[] { function reordered(from: number, to: number): string[] {
const ids = queue.value.map((track) => track.id) const ids = queue.value.map((track) => track.id)
@@ -69,10 +69,10 @@ function moveDown(index: number) {
} }
const jump = (index: number) => const jump = (index: number) =>
run(() => api.jump(index), 'Zmieniono odtwarzany utwór', 'Nie udało się zmienić utworu') run(() => api.jump(index), '', 'Nie udało się zmienić utworu')
const remove = (id: string) => const remove = (id: string) =>
run(() => api.remove(id), 'Usunięto utwór z kolejki', 'Nie udało się usunąć utworu') run(() => api.remove(id), '', 'Nie udało się usunąć utworu')
const setPlays = (id: string, plays: number) => const setPlays = (id: string, plays: number) =>
run(() => api.setTrackPlays(id, plays), '', 'Błąd aktualizacji odtworzeń') run(() => api.setTrackPlays(id, plays), '', 'Błąd aktualizacji odtworzeń')
@@ -52,14 +52,14 @@ watch(
async function toggle() { async function toggle() {
if (active.value) { if (active.value) {
await run(() => api.disconnect(), 'Rozłączono z kanału głosowego', 'Błąd rozłączania') await run(() => api.disconnect(), '', 'Błąd rozłączania')
return return
} }
if (!selected.value) { if (!selected.value) {
notify('Wybierz kanał głosowy z listy!', 'error') notify('Wybierz kanał głosowy z listy!', 'error')
return return
} }
await run(() => api.connect(selected.value), 'Połączono z kanałem głosowym!', 'Nie udało się połączyć') await run(() => api.connect(selected.value), '', 'Nie udało się połączyć')
} }
async function setNotificationChannel() { async function setNotificationChannel() {
-9
View File
@@ -1,6 +1,5 @@
import { onUnmounted, ref } from 'vue' import { onUnmounted, ref } from 'vue'
import type { BotStatus } from '@/types/status' import type { BotStatus } from '@/types/status'
import { useToasts } from '@/composables/useToasts'
import { getGuildId, setGuildId } from '@/api/client' import { getGuildId, setGuildId } from '@/api/client'
const RECONNECT_DELAY_MS = 3000 const RECONNECT_DELAY_MS = 3000
@@ -13,13 +12,10 @@ const pendingTracks = ref<{ id: string; guildId: string; title: string }[]>([])
let socket: WebSocket | null = null let socket: WebSocket | null = null
let reconnectTimer: number | null = null let reconnectTimer: number | null = null
let connectedOnce = false
let subscribers = 0 let subscribers = 0
/** Jedno połączenie WebSocket na aplikację, niezależnie od liczby komponentów. */ /** Jedno połączenie WebSocket na aplikację, niezależnie od liczby komponentów. */
export function useBotStatus() { export function useBotStatus() {
const { notify } = useToasts()
function open() { function open() {
const scheme = window.location.protocol === 'https:' ? 'wss:' : 'ws:' const scheme = window.location.protocol === 'https:' ? 'wss:' : 'ws:'
const guild = getGuildId() const guild = getGuildId()
@@ -30,11 +26,6 @@ export function useBotStatus() {
currentSocket.onopen = () => { currentSocket.onopen = () => {
connected.value = true connected.value = true
notify(
connectedOnce ? 'Połączenie WebSocket przywrócone (Live)!' : 'WebSocket zsynchronizowany (Live)!',
'success',
)
connectedOnce = true
} }
currentSocket.onmessage = (event) => { currentSocket.onmessage = (event) => {
+1 -1
View File
@@ -40,7 +40,7 @@ export function useUploads() {
} }
async function enqueue(filename: string) { async function enqueue(filename: string) {
await run(() => api.playFile(filename), 'Dodano plik do kolejki!', 'Błąd odtwarzania') await run(() => api.playFile(filename), '', 'Błąd odtwarzania')
await refresh() await refresh()
} }