feat: Enhance Catalog Lite expiration handling and improve Italian localization

This commit is contained in:
Maddo 2026-05-26 22:33:46 +02:00
commit 03dfe0f3a1
4 changed files with 30 additions and 14 deletions

View file

@ -15,10 +15,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute"> <Compile Include="$(IntermediateOutputPath)CatalogLiteExpiration.g.cs" Visible="false" />
<_Parameter1>CatalogLiteExpirationDate</_Parameter1>
<_Parameter2>$(CatalogLiteExpirationDate)</_Parameter2>
</AssemblyAttribute>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -41,4 +38,11 @@
</PropertyGroup> </PropertyGroup>
<Error Condition="'$(_CatalogLiteExpirationDateIsIso)' != 'True'" Text="CatalogLiteExpirationDate must use yyyy-MM-dd format. Current value: $(CatalogLiteExpirationDate)" /> <Error Condition="'$(_CatalogLiteExpirationDateIsIso)' != 'True'" Text="CatalogLiteExpirationDate must use yyyy-MM-dd format. Current value: $(CatalogLiteExpirationDate)" />
</Target> </Target>
<Target Name="GenerateCatalogLiteExpirationSource" BeforeTargets="CoreCompile" DependsOnTargets="ValidateCatalogLiteExpirationDate">
<WriteLinesToFile
File="$(IntermediateOutputPath)CatalogLiteExpiration.g.cs"
Overwrite="true"
Lines="using System.Reflection%3B&#x0A;&#x0A;[assembly: AssemblyMetadata(&quot;CatalogLiteGeneratedExpirationDate&quot;, &quot;$(CatalogLiteExpirationDate)&quot;)]&#x0A;[assembly: AssemblyMetadata(&quot;CatalogLiteExpirationDate&quot;, &quot;$(CatalogLiteExpirationDate)&quot;)]&#x0A;&#x0A;namespace CatalogLite%3B&#x0A;&#x0A;internal static class BuildExpiration&#x0A;{&#x0A; public const string ExpirationDate = &quot;$(CatalogLiteExpirationDate)&quot;%3B&#x0A;}" />
</Target>
</Project> </Project>

View file

@ -5,23 +5,35 @@ namespace CatalogLite;
internal static class ExpirationGuard internal static class ExpirationGuard
{ {
private const string GeneratedMetadataKey = "CatalogLiteGeneratedExpirationDate";
private const string MetadataKey = "CatalogLiteExpirationDate"; private const string MetadataKey = "CatalogLiteExpirationDate";
public static bool IsExpired(out DateOnly? expirationDate) public static bool IsExpired(out DateOnly? expirationDate)
{ {
expirationDate = TryReadExpirationDate(); expirationDate = TryReadExpirationDate();
return expirationDate is null || DateOnly.FromDateTime(DateTime.Today) > expirationDate.Value; return expirationDate is null || DateOnly.FromDateTime(DateTime.Now) > expirationDate.Value;
} }
private static DateOnly? TryReadExpirationDate() private static DateOnly? TryReadExpirationDate()
{ {
var value = typeof(Program).Assembly if (TryParseDate(BuildExpiration.ExpirationDate, out var generatedDate))
.GetCustomAttributes<AssemblyMetadataAttribute>() {
.FirstOrDefault(attribute => string.Equals(attribute.Key, MetadataKey, StringComparison.Ordinal)) return generatedDate;
?.Value; }
return DateOnly.TryParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var date) var metadata = typeof(Program).Assembly.GetCustomAttributes<AssemblyMetadataAttribute>();
? date var metadataValue = metadata.FirstOrDefault(attribute => string.Equals(attribute.Key, GeneratedMetadataKey, StringComparison.Ordinal))?.Value
?? metadata.FirstOrDefault(attribute => string.Equals(attribute.Key, MetadataKey, StringComparison.Ordinal))?.Value;
return TryParseDate(metadataValue, out var metadataDate)
? metadataDate
: null; : null;
} }
private static bool TryParseDate(string? value, out DateOnly date)
{
var trimmedValue = value?.Trim();
return DateOnly.TryParseExact(trimmedValue, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)
|| DateOnly.TryParse(trimmedValue, CultureInfo.CurrentCulture, DateTimeStyles.None, out date);
}
} }

View file

@ -14,8 +14,8 @@ internal sealed class ExpiredWindow : Window
WindowStartupLocation = WindowStartupLocation.CenterScreen; WindowStartupLocation = WindowStartupLocation.CenterScreen;
var message = expirationDate is null var message = expirationDate is null
? "L'applicazione e scaduta e non puo essere utilizzata." ? "L'applicazione è scaduta e non può essere utilizzata."
: $"L'applicazione e scaduta il {expirationDate:dd/MM/yyyy} e non puo essere utilizzata."; : $"L'applicazione è scaduta il {expirationDate:dd/MM/yyyy} e non può essere utilizzata.";
var closeButton = new Button var closeButton = new Button
{ {

View file

@ -70,7 +70,7 @@ public sealed class ImageProcessingCoordinator
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogDebug(ex, "Errore durante l'aggiornamento della velocita"); _logger.LogDebug(ex, "Errore durante l'aggiornamento della velocità");
} }
}, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)); }, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));