fix: Wire automation toggles, browse uMod, and error feedback across admin views
All checks were successful
Test Asgard Runner / test (push) Successful in 2s
All checks were successful
Test Asgard Runner / test (push) Successful in 2s
- ServerView: automation toggles (crash recovery, auto-update, force wipe eligible) now call updateConfig() on click with toast success/error; all catch blocks get toast feedback instead of silent swallow - PluginsView: Browse uMod tab wired to /plugins/search backend endpoint with debounced search, results table, and Install button that calls installPlugin(); shows install state and marks already-installed plugins - WipesView: dry-run results now displayed in a collapsible panel (would_delete / would_preserve lists + estimated duration); schedule enable/disable toggle wired to PUT /wipes/schedules/:id with loading state and toast feedback - AnalyticsView: catch blocks now show toast errors instead of console.log; Player Retention placeholder replaced with intentional placeholder cards - TeamView, ChatLogView, PlayersView, NotificationsView, MapsView: all empty catch blocks and '// API not wired yet' comments replaced with toast.error() calls; Notifications save now shows success toast Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,10 +2,12 @@
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { useServerStore } from '@/stores/server'
|
||||
import { useApi } from '@/composables/useApi'
|
||||
import { useToastStore } from '@/stores/toast'
|
||||
import { Users, Search, Ban, LogOut, Shield, RefreshCw } from 'lucide-vue-next'
|
||||
|
||||
const server = useServerStore()
|
||||
const api = useApi()
|
||||
const toast = useToastStore()
|
||||
|
||||
interface Player {
|
||||
steam_id: string
|
||||
@@ -70,7 +72,7 @@ async function fetchPlayers() {
|
||||
const data = await api.get<{ players: Player[] }>('/players')
|
||||
players.value = data.players
|
||||
} catch {
|
||||
// API not wired yet — will show empty state
|
||||
toast.error('Failed to load player list')
|
||||
} finally {
|
||||
isLoading.value = false
|
||||
}
|
||||
@@ -80,9 +82,10 @@ async function kickPlayer(steamId: string, name: string) {
|
||||
if (!confirm(`Kick ${name}?`)) return
|
||||
try {
|
||||
await server.sendCommand(`kick ${steamId}`)
|
||||
toast.success(`Kick command sent for ${name}`)
|
||||
await fetchPlayers()
|
||||
} catch {
|
||||
// Handle error
|
||||
toast.error(`Failed to kick ${name}`)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,9 +93,10 @@ async function banPlayer(steamId: string, name: string) {
|
||||
if (!confirm(`Ban ${name}? This will also kick them.`)) return
|
||||
try {
|
||||
await server.sendCommand(`ban ${steamId}`)
|
||||
toast.success(`Ban command sent for ${name}`)
|
||||
await fetchPlayers()
|
||||
} catch {
|
||||
// Handle error
|
||||
toast.error(`Failed to ban ${name}`)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user