diff --git a/Directory.Packages.props b/Directory.Packages.props index 56e0d4c..ac7e952 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -10,9 +10,9 @@ - + - + @@ -20,9 +20,9 @@ - + - + diff --git a/docs/tutorial/client/part-1.md b/docs/tutorial/client/part-1.md index 69a7448..67fb057 100644 --- a/docs/tutorial/client/part-1.md +++ b/docs/tutorial/client/part-1.md @@ -216,4 +216,4 @@ In the [next tutorial](./part-2.md), I'm going to talk about authenticating clie [todomvc]: https://github.com/CommunityToolkit/Datasync/tree/main/samples/todoapp-mvc [todoapp]: https://github.com/CommunityToolkit/Datasync/tree/main/samples/todoapp-tutorial [CommunityToolkit.MVVM]: https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/ -[CommunityToolkit.Datasync.Client]: https://www.nuget.org/packages/CommunityToolkit.Datasync.Client#readme-body-tab \ No newline at end of file +[CommunityToolkit.Datasync.Client]: https://www.nuget.org/packages/CommunityToolkit.Datasync.Client#readme-body-tab diff --git a/samples/datasync-server/src/Sample.Datasync.Server/Sample.Datasync.Server.csproj b/samples/datasync-server/src/Sample.Datasync.Server/Sample.Datasync.Server.csproj index 76b7ea2..06b2470 100644 --- a/samples/datasync-server/src/Sample.Datasync.Server/Sample.Datasync.Server.csproj +++ b/samples/datasync-server/src/Sample.Datasync.Server/Sample.Datasync.Server.csproj @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/samples/todoapp-mvc/TodoApp.Service/TodoApp.Service.csproj b/samples/todoapp-mvc/TodoApp.Service/TodoApp.Service.csproj index 4fbb088..154c87b 100644 --- a/samples/todoapp-mvc/TodoApp.Service/TodoApp.Service.csproj +++ b/samples/todoapp-mvc/TodoApp.Service/TodoApp.Service.csproj @@ -7,10 +7,10 @@ - - - - + + + + diff --git a/samples/todoapp-tutorial/ClientApp/App.xaml.cs b/samples/todoapp-tutorial/ClientApp/App.xaml.cs index 99c87d2..8861082 100644 --- a/samples/todoapp-tutorial/ClientApp/App.xaml.cs +++ b/samples/todoapp-tutorial/ClientApp/App.xaml.cs @@ -1,4 +1,4 @@ -using ClientApp.Interfaces; +using ClientApp.Interfaces; using ClientApp.Services; using ClientApp.ViewModels; using Microsoft.Extensions.DependencyInjection; @@ -29,7 +29,7 @@ private void InitializeApplication() { using IServiceScope scope = Services.CreateScope(); IAppInitializer initializer = scope.ServiceProvider.GetRequiredService(); - initializer.Initialize(); + _ = initializer.Initialize(); } /// diff --git a/samples/todoapp-tutorial/ClientApp/ClientApp.csproj b/samples/todoapp-tutorial/ClientApp/ClientApp.csproj index bb90436..932370b 100644 --- a/samples/todoapp-tutorial/ClientApp/ClientApp.csproj +++ b/samples/todoapp-tutorial/ClientApp/ClientApp.csproj @@ -9,7 +9,7 @@ - + diff --git a/samples/todoapp-tutorial/ClientApp/Converters/BooleanToImageConverter.cs b/samples/todoapp-tutorial/ClientApp/Converters/BooleanToImageConverter.cs index 6993ae7..4d6c53d 100644 --- a/samples/todoapp-tutorial/ClientApp/Converters/BooleanToImageConverter.cs +++ b/samples/todoapp-tutorial/ClientApp/Converters/BooleanToImageConverter.cs @@ -1,3 +1,7 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + using System.Globalization; using System.Windows.Data; using System.Windows.Media.Imaging; diff --git a/samples/todoapp-tutorial/ClientApp/MainWindow.xaml b/samples/todoapp-tutorial/ClientApp/MainWindow.xaml index 4255fae..8767fcf 100644 --- a/samples/todoapp-tutorial/ClientApp/MainWindow.xaml +++ b/samples/todoapp-tutorial/ClientApp/MainWindow.xaml @@ -1,4 +1,4 @@ - items = []; + + [ObservableProperty] + private string addItemTitle = string.Empty; + + [RelayCommand] + public async Task AddItemAsync(CancellationToken cancellationToken = default) + { + try + { + var addition = await todoService.AddTodoItemAsync(AddItemTitle, cancellationToken); + Items.Add(addition); + AddItemTitle = string.Empty; + } + catch (Exception ex) + { + await alertService.ShowErrorAlertAsync("Error adding item", ex.Message); + } + } + + [RelayCommand] + public async Task UpdateItemAsync(TodoItem item, CancellationToken cancellationToken = default) + { + try + { + TodoItem? storedItem = await todoService.GetTodoItemAsync(item.Id, cancellationToken); + if (storedItem is not null) + { + storedItem.IsComplete = !storedItem.IsComplete; + var replacedItem = await todoService.ReplaceTodoItemAsync(storedItem, cancellationToken); + var idx = Items.IndexOf(item); + Items[idx] = replacedItem; + } + else + { + await alertService.ShowErrorAlertAsync("Item not found", "The item was not found in the database."); + } + } + catch (Exception ex) + { + await alertService.ShowErrorAlertAsync("Error updating item", ex.Message); + } + } + + [RelayCommand] + public async Task RefreshItemsAsync(CancellationToken cancellationToken = default) + { + try + { + IsRefreshing = true; + List dbItems = await todoService.GetAllTodoItemsAsync(cancellationToken); + Items.Clear(); + foreach (var dbItem in dbItems) + { + Items.Add(dbItem); + } + } + catch (Exception ex) + { + await alertService.ShowErrorAlertAsync("Error refreshing items", ex.Message); + } + finally + { + IsRefreshing = false; + } + } +} \ No newline at end of file diff --git a/samples/todoapp-tutorial/ServerApp/ServerApp.csproj b/samples/todoapp-tutorial/ServerApp/ServerApp.csproj index 3b630dd..b3b1f2b 100644 --- a/samples/todoapp-tutorial/ServerApp/ServerApp.csproj +++ b/samples/todoapp-tutorial/ServerApp/ServerApp.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.Android/TodoApp.Avalonia.Android.csproj b/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.Android/TodoApp.Avalonia.Android.csproj index 5a7d5c5..70c8d49 100644 --- a/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.Android/TodoApp.Avalonia.Android.csproj +++ b/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.Android/TodoApp.Avalonia.Android.csproj @@ -18,11 +18,11 @@ - - + + - + diff --git a/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.Desktop/TodoApp.Avalonia.Desktop.csproj b/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.Desktop/TodoApp.Avalonia.Desktop.csproj index 639fe2b..cd1eeae 100644 --- a/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.Desktop/TodoApp.Avalonia.Desktop.csproj +++ b/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.Desktop/TodoApp.Avalonia.Desktop.csproj @@ -13,12 +13,12 @@ - + - + - + diff --git a/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.iOS/TodoApp.Avalonia.iOS.csproj b/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.iOS/TodoApp.Avalonia.iOS.csproj index 1f2c8ef..fd463bc 100644 --- a/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.iOS/TodoApp.Avalonia.iOS.csproj +++ b/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia.iOS/TodoApp.Avalonia.iOS.csproj @@ -7,10 +7,10 @@ - + - + diff --git a/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia/TodoApp.Avalonia.csproj b/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia/TodoApp.Avalonia.csproj index 5183165..cda4c5c 100644 --- a/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia/TodoApp.Avalonia.csproj +++ b/samples/todoapp/TodoApp.Avalonia/TodoApp.Avalonia/TodoApp.Avalonia.csproj @@ -7,17 +7,17 @@ - + - - - + + + - - - - + + + + diff --git a/samples/todoapp/TodoApp.MAUI/TodoApp.MAUI.csproj b/samples/todoapp/TodoApp.MAUI/TodoApp.MAUI.csproj index ab34c60..16cf5aa 100644 --- a/samples/todoapp/TodoApp.MAUI/TodoApp.MAUI.csproj +++ b/samples/todoapp/TodoApp.MAUI/TodoApp.MAUI.csproj @@ -50,10 +50,10 @@ - + - - + + diff --git a/samples/todoapp/TodoApp.WPF/TodoApp.WPF.csproj b/samples/todoapp/TodoApp.WPF/TodoApp.WPF.csproj index aa575cd..9233af2 100644 --- a/samples/todoapp/TodoApp.WPF/TodoApp.WPF.csproj +++ b/samples/todoapp/TodoApp.WPF/TodoApp.WPF.csproj @@ -20,6 +20,6 @@ - + diff --git a/samples/todoapp/TodoApp.WinUI3/TodoApp.WinUI3.csproj b/samples/todoapp/TodoApp.WinUI3/TodoApp.WinUI3.csproj index f995d30..131be15 100644 --- a/samples/todoapp/TodoApp.WinUI3/TodoApp.WinUI3.csproj +++ b/samples/todoapp/TodoApp.WinUI3/TodoApp.WinUI3.csproj @@ -29,13 +29,13 @@ - + - - - + + +