feat: Enhance Catalog Lite expiration handling and improve Italian localization
This commit is contained in:
parent
64525f5ead
commit
03dfe0f3a1
4 changed files with 30 additions and 14 deletions
|
|
@ -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

[assembly: AssemblyMetadata("CatalogLiteGeneratedExpirationDate", "$(CatalogLiteExpirationDate)")]
[assembly: AssemblyMetadata("CatalogLiteExpirationDate", "$(CatalogLiteExpirationDate)")]

namespace CatalogLite%3B

internal static class BuildExpiration
{
 public const string ExpirationDate = "$(CatalogLiteExpirationDate)"%3B
}" />
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue