lib_unity_purchase/Runtime/Stores/Android/GooglePlay/AAR/SkuDetailsQueryResponse.cs

34 lines
1.3 KiB
C#

using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using UnityEngine.Purchasing.Interfaces;
using UnityEngine.Purchasing.Models;
namespace UnityEngine.Purchasing
{
class SkuDetailsQueryResponse : ISkuDetailsQueryResponse
{
readonly ConcurrentBag<(IGoogleBillingResult, IEnumerable<AndroidJavaObject>)> m_Responses = new ConcurrentBag<(IGoogleBillingResult, IEnumerable<AndroidJavaObject>)>();
public void AddResponse(IGoogleBillingResult billingResult, IEnumerable<AndroidJavaObject> skuDetails)
{
m_Responses.Add((billingResult, skuDetails));
}
public List<AndroidJavaObject> SkuDetails()
{
return m_Responses.Where(response => response.Item1.responseCode == GoogleBillingResponseCode.Ok)
.SelectMany(response => response.Item2).ToList();
}
public bool IsRecoverable()
{
return m_Responses.Select(response => response.Item1).Any(IsRecoverable);
}
static bool IsRecoverable(IGoogleBillingResult billingResult)
{
return billingResult.responseCode == GoogleBillingResponseCode.ServiceUnavailable || billingResult.responseCode == GoogleBillingResponseCode.DeveloperError;
}
}
}