diff --git a/code/websites/pokedex.online/src/components/challonge/TournamentDetail.vue b/code/websites/pokedex.online/src/components/challonge/TournamentDetail.vue index 2c7bf62..a50219c 100644 --- a/code/websites/pokedex.online/src/components/challonge/TournamentDetail.vue +++ b/code/websites/pokedex.online/src/components/challonge/TournamentDetail.vue @@ -84,7 +84,29 @@ const props = defineProps({ const errorMessage = computed(() => { if (!props.error) return ''; if (typeof props.error === 'string') return props.error; - return props.error.message || 'An error occurred'; + + // Try to extract useful error info + const err = props.error; + if (err.message) { + // Check if it's a network error + if (err.message.includes('Load failed') || err.message.includes('fetch')) { + return 'Failed to load tournament details. Check your network connection or API credentials.'; + } + return err.message; + } + + // Check for response errors + if (err.response) { + const status = err.response.status || err.status; + if (status === 401) return 'Authentication failed. Check your API key.'; + if (status === 403) return 'Access forbidden. You may not have permission to view this tournament.'; + if (status === 404) return 'Tournament not found.'; + if (status >= 500) return `Server error (${status}). Please try again later.`; + return `Error ${status}: ${err.response.statusText || 'Request failed'}`; + } + + // Fallback + return err.toString() || 'An error occurred loading tournament details'; }); /**