fix: Wire automation toggles, browse uMod, and error feedback across admin views
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:
Vantz Stockwell
2026-02-21 16:04:34 -05:00
parent cbb3ba6586
commit 38e6d28248
9 changed files with 290 additions and 48 deletions

View File

@@ -1,10 +1,12 @@
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { useApi } from '@/composables/useApi'
import { useToastStore } from '@/stores/toast'
import type { NotificationConfig } from '@/types'
import { Bell, Save, Loader2 } from 'lucide-vue-next'
const api = useApi()
const toast = useToastStore()
const config = ref<NotificationConfig>({
discord_webhook_url: null,
@@ -38,7 +40,7 @@ async function fetchConfig() {
const data = await api.get<{ config: NotificationConfig }>('/notifications/config')
config.value = data.config
} catch {
// API not wired yet
toast.error('Failed to load notification settings')
} finally {
isLoading.value = false
}
@@ -48,8 +50,9 @@ async function saveConfig() {
saving.value = true
try {
await api.put('/notifications/config', config.value)
toast.success('Notification settings saved')
} catch {
// Handle error
toast.error('Failed to save notification settings')
} finally {
saving.value = false
}