diff --git a/WebApp/Components/Features/MeetingSchedule/Index.razor b/WebApp/Components/Features/MeetingSchedule/Index.razor index 0581bd0..52d9a03 100644 --- a/WebApp/Components/Features/MeetingSchedule/Index.razor +++ b/WebApp/Components/Features/MeetingSchedule/Index.razor @@ -129,13 +129,13 @@ // Track last saved state for dirty/clean comparison private MeetingScheduleState? _lastSavedState; - private async Task OnScheduledTeamsChanged(IEnumerable teams) + private void OnScheduledTeamsChanged(IEnumerable teams) { _scheduledTeams = teams; StateHasChanged(); } - private async Task OnAbsentStudentsChanged(IEnumerable students) + private void OnAbsentStudentsChanged(IEnumerable students) { _absentStudents = students; StateHasChanged(); @@ -145,9 +145,10 @@ { _parameters.TimeSlots = timeSlots; StateHasChanged(); + await Task.CompletedTask; } - private async Task OnExtendedTeamsChanged(IEnumerable teams) + private void OnExtendedTeamsChanged(IEnumerable teams) { _extendedTeams = teams; StateHasChanged(); @@ -197,20 +198,24 @@ StateHasChanged(); } - private async Task ToggleRequiredTeam(Team unassignedTeam) + private void ToggleRequiredTeam(Team unassignedTeam) { + // Find the matching team from _teams to ensure reference equality with MudToggleGroup + var matchingTeam = _teams.FirstOrDefault(t => t.Id == unassignedTeam.Id); + if (matchingTeam == null) return; + var scheduledTeamIds = _scheduledTeams.Select(t => t.Id).ToHashSet(); IEnumerable newScheduledTeams; - if (scheduledTeamIds.Contains(unassignedTeam.Id)) - newScheduledTeams = _scheduledTeams.Where(t => t.Id != unassignedTeam.Id); + if (scheduledTeamIds.Contains(matchingTeam.Id)) + newScheduledTeams = _scheduledTeams.Where(t => t.Id != matchingTeam.Id); else { - newScheduledTeams = _scheduledTeams.Concat([unassignedTeam]); + newScheduledTeams = _scheduledTeams.Concat([matchingTeam]); } // Update state and notify component to re-render - await OnScheduledTeamsChanged(newScheduledTeams); + OnScheduledTeamsChanged(newScheduledTeams); } protected override async Task OnInitializedAsync() @@ -377,7 +382,7 @@ return 0; // Default to first slot if not found (shouldn't happen in normal flow) } - private async Task OnToggleStudentExclusion((int teamId, int timeSlotIndex, int studentId) key) + private void OnToggleStudentExclusion((int teamId, int timeSlotIndex, int studentId) key) { if (_excludedStudents.TryGetValue(key, out var isExcluded) && isExcluded) {