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