Improve error handling and logging in data loading for organization settings dialog

This commit is contained in:
Leon Bösche
2026-01-24 00:24:43 +01:00
parent 960d2c8805
commit 25b053ee13

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'dart:developer' as developer;
import '../blocs/organization/organization_state.dart'; import '../blocs/organization/organization_state.dart';
import '../blocs/permission/permission_state.dart'; import '../blocs/permission/permission_state.dart';
import '../models/organization.dart'; import '../models/organization.dart';
@@ -46,30 +47,63 @@ class _OrganizationSettingsDialogState
if (!mounted) return; if (!mounted) return;
setState(() => _isLoading = true); setState(() => _isLoading = true);
String? error;
List<Member> members = [];
List<Invitation> invitations = [];
List<JoinRequest> joinRequests = [];
String? inviteLink;
try { try {
final results = await Future.wait([ members = await widget.orgApi.getMembers(widget.organization.id);
widget.orgApi.getMembers(widget.organization.id), } catch (e) {
widget.orgApi.getInvitations(widget.organization.id), developer.log(
widget.orgApi.getJoinRequests(widget.organization.id), 'Error loading members: $e',
widget.orgApi.getInviteLink(widget.organization.id), name: 'OrganizationSettingsDialog',
]); );
error ??= 'Failed to load members: $e';
}
try {
invitations = await widget.orgApi.getInvitations(widget.organization.id);
} catch (e) {
developer.log(
'Error loading invitations: $e',
name: 'OrganizationSettingsDialog',
);
error ??= 'Failed to load invitations: $e';
}
try {
joinRequests = await widget.orgApi.getJoinRequests(
widget.organization.id,
);
} catch (e) {
developer.log(
'Error loading join requests: $e',
name: 'OrganizationSettingsDialog',
);
error ??= 'Failed to load join requests: $e';
}
try {
inviteLink = await widget.orgApi.getInviteLink(widget.organization.id);
} catch (e) {
developer.log(
'Error loading invite link: $e',
name: 'OrganizationSettingsDialog',
);
error ??= 'Failed to load invite link: $e';
}
if (!mounted) return; if (!mounted) return;
setState(() { setState(() {
_members = results[0] as List<Member>; _members = members;
_invitations = results[1] as List<Invitation>; _invitations = invitations;
_joinRequests = results[2] as List<JoinRequest>; _joinRequests = joinRequests;
_inviteLink = results[3] as String?; _inviteLink = inviteLink;
_isLoading = false; _isLoading = false;
_error = null; _error = error;
}); });
} catch (e) {
if (!mounted) return;
setState(() {
_error = e.toString();
_isLoading = false;
});
}
} }
Future<void> _updateMemberRole(String userId, String newRole) async { Future<void> _updateMemberRole(String userId, String newRole) async {