Refactor error handling in MyTischtennisUrlController and improve memberService indexing

Refactored error handling in MyTischtennisUrlController to standardize error messages and ensure consistent status codes. Enhanced memberService by implementing a more efficient indexing system for member data retrieval, improving performance and accuracy in TTR and QTTR updates. Updated TeamManagementView to handle timeout errors and provide detailed user feedback, enhancing overall user experience.
This commit is contained in:
Torsten Schulz (local)
2025-11-03 10:45:04 +01:00
parent acf2cf00bd
commit 23708b99b5
3 changed files with 68 additions and 32 deletions

View File

@@ -1060,9 +1060,9 @@ export default {
try {
const response = await apiClient.post('/mytischtennis/fetch-team-data', {
clubTeamId: teamToEdit.value.id
});
}, { timeout: 30000 });
if (response.data.success) {
if (response.data && response.data.success) {
myTischtennisSuccess.value = response.data.message;
// Erstelle detaillierte Erfolgsmeldung mit Tabelleninfo
@@ -1078,22 +1078,32 @@ export default {
detailsMessage,
'success'
);
} else if (response.data && response.data.success === false) {
const details = response.data.debug ? JSON.stringify(response.data.debug, null, 2) : '';
await showInfo(
response.data.needsMyTischtennisReauth ? 'Login bei myTischtennis erforderlich' : 'Fehler',
response.data.error || 'Daten konnten nicht abgerufen werden.',
details,
response.data.needsMyTischtennisReauth ? 'warning' : 'error'
);
myTischtennisError.value = response.data.error || '';
}
} catch (error) {
console.error('Fehler beim Abrufen der Team-Daten:', error);
const isTimeout = error?.code === 'ECONNABORTED';
const errData = error?.response?.data || {};
const errorMsg = errData.message || errData.error || error.message || 'Daten konnten nicht abgerufen werden.';
const errorMsg = isTimeout ? 'Zeitüberschreitung beim Abruf (Timeout).' : (errData.message || errData.error || error.message || 'Daten konnten nicht abgerufen werden.');
myTischtennisError.value = errorMsg;
// Spezielle Behandlung für Account-nicht-verknüpft Fehler
if (error.response?.status === 404) {
if (!isTimeout && error.response?.status === 404) {
await showInfo(
'MyTischtennis-Account nicht verknüpft',
errorMsg,
'Gehen Sie zu den MyTischtennis-Einstellungen, um Ihren Account zu verknüpfen.',
'warning'
);
} else if (error.response?.status === 401) {
} else if (!isTimeout && error.response?.status === 401) {
await showInfo(
'Login erforderlich',
errorMsg,
@@ -1101,7 +1111,7 @@ export default {
'warning'
);
} else {
const debugText = errData.debug ? JSON.stringify(errData.debug, null, 2) : '';
const debugText = isTimeout ? 'Der Server hat nicht rechtzeitig geantwortet.' : (errData.debug ? JSON.stringify(errData.debug, null, 2) : '');
await showInfo('Fehler', errorMsg, debugText, 'error');
}
} finally {