Add subscription pricing and Base drawing limit

This commit is contained in:
livio committed 2026-09-30 10:12:24 +02:00
1 parent ad64d6def0
commit 6a675ce635
15 files changed
+384 -37

No files matched your search

+14 -2
View File
@@ -2,13 +2,22 @@ namespace LMEMappeCatastaliApp.Services;
public interface IPlayBillingService
{
Task<IReadOnlyList<PlaySubscriptionPlan>> GetSubscriptionPlansAsync(CancellationToken cancellationToken = default);
Task<PlayBillingResult> RestoreAsync(CancellationToken cancellationToken = default);
Task<PlayBillingResult> PurchaseAsync(string basePlanId, CancellationToken cancellationToken = default);
}
public sealed record PlayBillingResult(bool Completed, bool HasActiveSubscription, bool UserCancelled, string Message)
public sealed record PlaySubscriptionPlan(string BasePlanId, string FormattedPrice, string BillingPeriod);
public sealed record PlayBillingResult(
bool Completed,
bool HasActiveSubscription,
bool UserCancelled,
string Message,
string? PurchaseToken = null)
{
public static PlayBillingResult Active(string message) => new(true, true, false, message);
public static PlayBillingResult Active(string message, string? purchaseToken = null) =>
new(true, true, false, message, purchaseToken);
public static PlayBillingResult Base(string message) => new(true, false, false, message);
public static PlayBillingResult Cancelled(string message) => new(false, false, true, message);
public static PlayBillingResult Failed(string message) => new(false, false, false, message);
@@ -16,6 +25,9 @@ public sealed record PlayBillingResult(bool Completed, bool HasActiveSubscriptio
public sealed class UnavailablePlayBillingService : IPlayBillingService
{
public Task<IReadOnlyList<PlaySubscriptionPlan>> GetSubscriptionPlansAsync(CancellationToken cancellationToken = default) =>
Task.FromResult<IReadOnlyList<PlaySubscriptionPlan>>([]);
public Task<PlayBillingResult> RestoreAsync(CancellationToken cancellationToken = default) =>
Task.FromResult(PlayBillingResult.Failed("Google Play Billing è disponibile solo nell'app Android installata da Google Play."));