Skip to content

Commit

Permalink
Upgrade the SDK to .NET 8. (#36)
Browse files Browse the repository at this point in the history
* Upgrade CommunityToolkit to 8.x

* Update deps.

* Update dotnet version

* Add ListDetailsView.

* Update list details.

* Update the settings page.
nodew authored May 2, 2024
1 parent b426ff5 commit 411861e
Showing 31 changed files with 732 additions and 440 deletions.
8 changes: 4 additions & 4 deletions PocketClient.Core/PocketClient.Core.csproj
Original file line number Diff line number Diff line change
@@ -8,13 +8,13 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.1">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.4">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.1" />
<PackageReference Include="System.Text.Json" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.4" />
<PackageReference Include="System.Text.Json" Version="8.0.3" />
</ItemGroup>

<ItemGroup>
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
<TargetFramework>net8.0-windows10.0.22000.0</TargetFramework>
<RootNamespace>PocketClient.Desktop.Tests.MSTest</RootNamespace>
<Platforms>x86;x64;arm64</Platforms>
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
2 changes: 2 additions & 0 deletions PocketClient.Desktop/Contracts/Services/IPocketDbService.cs
Original file line number Diff line number Diff line change
@@ -4,6 +4,8 @@ public interface IPocketDbService
{
public Task InitializeAsync();

public bool IsSyncingData();

public string GetPocketDbPath();

public Task SyncItemsAsync(bool fullSync = false, bool force = false);
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using CommunityToolkit.WinUI.UI.Converters;
using CommunityToolkit.WinUI.Converters;
using Microsoft.UI.Xaml;

namespace PocketClient.Desktop.Converters;
37 changes: 37 additions & 0 deletions PocketClient.Desktop/Converters/ObjectToVisibilityConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Data;

namespace PocketClient.Desktop.Converters;

public class ObjectToVisibilityConverter : IValueConverter
{
public Visibility NullValue
{
get; set;
}

public Visibility NonNullValue
{
get; set;
}

public ObjectToVisibilityConverter()
{
NullValue = Visibility.Collapsed;
NonNullValue = Visibility.Visible;
}

public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is null)
{
return NullValue;
}
else
{
return NonNullValue;
}
}

public object ConvertBack(object value, Type targetType, object parameter, string language) => throw new NotImplementedException();
}
14 changes: 14 additions & 0 deletions PocketClient.Desktop/Models/LanguageItem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace PocketClient.Desktop.Models;

public class LanguageItem(string key, string displayName)
{
public string Key
{
get; set;
} = key;

public string DisplayName
{
get; set;
} = displayName;
}
21 changes: 21 additions & 0 deletions PocketClient.Desktop/Models/ThemeItem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Microsoft.UI.Xaml;

namespace PocketClient.Desktop.Models;

public class ThemeItem(string key, string displayName, ElementTheme theme)
{
public string Key
{
get; set;
} = key;

public string DisplayName
{
get; set;
} = displayName;

public ElementTheme Theme
{
get; set;
} = theme;
}
25 changes: 19 additions & 6 deletions PocketClient.Desktop/PocketClient.Desktop.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.22621.0</TargetFramework>
<TargetFramework>net8.0-windows10.0.22000.0</TargetFramework>
<TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion>
<RootNamespace>PocketClient.Desktop</RootNamespace>
<ApplicationIcon>Assets/WindowIcon.ico</ApplicationIcon>
@@ -22,25 +22,38 @@
<AppxBundle>Always</AppxBundle>
<AppxBundlePlatforms>x86|x64|arm64</AppxBundlePlatforms>
</PropertyGroup>
<ItemGroup>
<None Remove="UserControls\ListDetailsView\ListDetailsView.xaml" />
</ItemGroup>

<ItemGroup>
<Manifest Include="$(ApplicationManifest)" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<PackageReference Include="CommunityToolkit.WinUI.UI.Controls" Version="7.1.2" />
<PackageReference Include="CommunityToolkit.WinUI.Collections" Version="8.0.240109" />
<PackageReference Include="CommunityToolkit.WinUI.Controls.Primitives" Version="8.0.240109" />
<PackageReference Include="CommunityToolkit.WinUI.Controls.SettingsControls" Version="8.0.240109" />
<PackageReference Include="CommunityToolkit.WinUI.Controls.TokenizingTextBox" Version="8.0.240109" />
<PackageReference Include="CommunityToolkit.WinUI.Converters" Version="8.0.240109" />
<PackageReference Include="CommunityToolkit.WinUI.Extensions" Version="8.0.240109" />
<PackageReference Include="CommunityToolkit.WinUI.Helpers" Version="8.0.240109" />
<PackageReference Include="CommunityToolkit.WinUI.Triggers" Version="8.0.240109" />

<!--<PackageReference Include="CommunityToolkit.WinUI.UI.Controls" Version="7.1.2" />-->
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="8.0.0" />
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.49-beta">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.4.231219000" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.240404000" />
<PackageReference Include="Microsoft.Xaml.Behaviors.WinUI.Managed" Version="2.0.9" />
<PackageReference Include="SmartReader" Version="0.9.3" />
<PackageReference Include="WinUIEx" Version="2.3.3" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
<PackageReference Include="WinUIEx" Version="2.3.4" />
</ItemGroup>

<ItemGroup>
@@ -73,7 +86,7 @@
<None Update="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Page Update="UserControls\FilterOptionControl.xaml">
<Page Update="UserControls\ListDetailsView\ListDetailsView.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
33 changes: 30 additions & 3 deletions PocketClient.Desktop/Services/LocalCacheFileService.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Text;
using CommunityToolkit.WinUI.Helpers;
using PocketClient.Desktop.Contracts.Services;
using PocketClient.Desktop.Helpers;
using Windows.Storage;
@@ -19,7 +18,7 @@ public async Task<bool> Exists(string filename)
{
if (RuntimeHelper.IsMSIX)
{
return await ApplicationData.Current.TemporaryFolder.FileExistsAsync(filename);
return await FileExistsInFolderAsync(ApplicationData.Current.TemporaryFolder, filename);
}
else
{
@@ -42,11 +41,39 @@ public async Task SaveFileContent(string filename, string fileContent)
{
if (RuntimeHelper.IsMSIX)
{
await ApplicationData.Current.TemporaryFolder.WriteTextToFileAsync(fileContent, filename, CreationCollisionOption.ReplaceExisting);
await WriteTextToFileAsync(ApplicationData.Current.TemporaryFolder, fileContent, filename, CreationCollisionOption.ReplaceExisting);
}
else
{
File.WriteAllText(GetFullPath(filename), fileContent, Encoding.UTF8);
}
}

private static async Task<bool> FileExistsInFolderAsync(StorageFolder folder, string fileName)
{
var item = await folder.TryGetItemAsync(fileName).AsTask().ConfigureAwait(false);
return (item != null) && item.IsOfType(StorageItemTypes.File);
}

private static async Task<StorageFile> WriteTextToFileAsync(
StorageFolder fileLocation,
string text,
string fileName,
CreationCollisionOption options = CreationCollisionOption.ReplaceExisting)
{
if (fileLocation == null)
{
throw new ArgumentNullException(nameof(fileLocation));
}

if (string.IsNullOrWhiteSpace(fileName))
{
throw new ArgumentNullException(nameof(fileName));
}

var storageFile = await fileLocation.CreateFileAsync(fileName, options);
await FileIO.WriteTextAsync(storageFile, text);

return storageFile;
}
}
3 changes: 0 additions & 3 deletions PocketClient.Desktop/Services/NavigationViewService.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
using System.Diagnostics.CodeAnalysis;
using CommunityToolkit.WinUI.UI.Controls;
using Microsoft.UI.Dispatching;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media;
using PocketClient.Core.Models;
using PocketClient.Desktop.Contracts.Services;
using PocketClient.Desktop.Helpers;
8 changes: 8 additions & 0 deletions PocketClient.Desktop/Services/PocketDbService.cs
Original file line number Diff line number Diff line change
@@ -28,6 +28,7 @@ public class PocketDbService : IPocketDbService

private bool _initialized;
private bool _synced;
private bool _syncing;

public PocketDbService(
PocketHttpClient pocketClient,
@@ -77,10 +78,16 @@ public string GetPocketDbPath()
return Path.Combine(_applicationDataFolder, _pocketDbFile);
}

public bool IsSyncingData()
{
return _syncing;
}

public async Task SyncItemsAsync(bool fullSync = false, bool force = false)
{
if (!_synced || force)
{
_syncing = true;
var page = 0;
var pageSize = 50;
bool hasMoreItems;
@@ -140,6 +147,7 @@ public async Task SyncItemsAsync(bool fullSync = false, bool force = false)

await _localSettingsService.SaveSettingAsync(_pocketLastUpdatedAtKey, DateTimeOffset.Now);

_syncing = false;
_synced = true;

if (count > 0)
46 changes: 35 additions & 11 deletions PocketClient.Desktop/Strings/en-us/Resources.resw
Original file line number Diff line number Diff line change
@@ -156,20 +156,17 @@
<data name="Settings_Personalization.Text" xml:space="preserve">
<value>Personalization</value>
</data>
<data name="Settings_Theme.Text" xml:space="preserve">
<value>Theme</value>
</data>
<data name="Settings_Theme_Light.Content" xml:space="preserve">
<data name="Settings_Theme_Light" xml:space="preserve">
<value>Light</value>
</data>
<data name="Settings_Theme_Dark.Content" xml:space="preserve">
<data name="Settings_Theme_Dark" xml:space="preserve">
<value>Dark</value>
</data>
<data name="Settings_Theme_Default.Content" xml:space="preserve">
<data name="Settings_Theme_Default" xml:space="preserve">
<value>Default</value>
</data>
<data name="Settings_About.Text" xml:space="preserve">
<value>About this application</value>
<value>About</value>
</data>
<data name="Settings_AboutDescription.Text" xml:space="preserve">
<value>Third-party desktop application for https://getpocket.com.</value>
@@ -320,10 +317,7 @@
<data name="Settings_Data_SyncBtn.Content" xml:space="preserve">
<value>Sync</value>
</data>
<data name="Settings_Language.Text" xml:space="preserve">
<value>Language</value>
</data>
<data name="Settings_Language_Default.Content" xml:space="preserve">
<data name="Settings_Language_Default" xml:space="preserve">
<value>Default</value>
</data>
<data name="LoginPage_Tips.Message" xml:space="preserve">
@@ -452,4 +446,34 @@
<data name="Settings_LogoutBtn.Content" xml:space="preserve">
<value>Log out</value>
</data>
<data name="Settings_About_Section.Description" xml:space="preserve">
<value>© 2024. All rights reserved.</value>
</data>
<data name="Settings_About_Section.Header" xml:space="preserve">
<value>Nuts - Save &amp; Read</value>
</data>
<data name="Settings_Data_Sync.Description" xml:space="preserve">
<value>Sync latest data manually</value>
</data>
<data name="Settings_Data_Sync.Header" xml:space="preserve">
<value>Sync data</value>
</data>
<data name="Settings_Language.Description" xml:space="preserve">
<value>Choose your preferred language</value>
</data>
<data name="Settings_Language.Header" xml:space="preserve">
<value>Language</value>
</data>
<data name="Settings_SwitchUser.Description" xml:space="preserve">
<value>Switch to another account</value>
</data>
<data name="Settings_SwitchUser.Header" xml:space="preserve">
<value>Switch user</value>
</data>
<data name="Settings_Theme.Description" xml:space="preserve">
<value>Choose your preferred theme</value>
</data>
<data name="Settings_Theme.Header" xml:space="preserve">
<value>Theme</value>
</data>
</root>
Loading

0 comments on commit 411861e

Please sign in to comment.