Просмотр исходного кода

Calendar assignments now only save once when multiple changes occur, isntead of multiple times, by delaying 'til main thread sync.

Kenric Nugteren 1 неделя назад
Родитель
Сommit
5cee25c99a
1 измененных файлов с 10 добавлено и 1 удалено
  1. 10 1
      prs.desktop/Components/Calendar/Calendar.xaml.cs

+ 10 - 1
prs.desktop/Components/Calendar/Calendar.xaml.cs

@@ -998,6 +998,8 @@ namespace PRSDesktop
                 }
             }
         }
+
+        private HashSet<Assignment> _savingAssignments = new();
         
         private void LoadAssignment(Assignment assignment, IList<ICalendarAppointment> appointments)
         {
@@ -1007,7 +1009,14 @@ namespace PRSDesktop
             var model = new AssignmentAppointment(assignment, employee, AssignmentType);
             model.OnUpdate += () =>
             {
-                Client.Save(assignment, "Edited by user");
+                if (_savingAssignments.Add(assignment))
+                {
+                    Dispatcher.BeginInvoke(() =>
+                    {
+                        _savingAssignments.Remove(assignment);
+                        Client.SaveAsync(assignment, "Edited by user").LogIfFail();
+                    });
+                }
             };
             model.EmployeeChanged += (o, e) =>
             {