#nullable enable
using System;
using System.Collections.Generic;
using Uniject;
using UnityEngine.Purchasing.Extension;
namespace UnityEngine.Purchasing
{
///
/// Wraps an IStoreCallback executing methods on
/// the scripting thread.
///
internal class ScriptingStoreCallback : IStoreCallback
{
readonly IStoreCallback m_ForwardTo;
readonly IUtil m_Util;
public ScriptingStoreCallback(IStoreCallback forwardTo, IUtil util)
{
m_ForwardTo = forwardTo;
m_Util = util;
}
public ProductCollection products => m_ForwardTo.products;
[Obsolete]
public void OnSetupFailed(InitializationFailureReason reason)
{
m_Util.RunOnMainThread(() => m_ForwardTo.OnSetupFailed(reason, null));
}
public void OnSetupFailed(InitializationFailureReason reason, string? message)
{
m_Util.RunOnMainThread(() => m_ForwardTo.OnSetupFailed(reason, message));
}
public void OnProductsRetrieved(List products)
{
m_Util.RunOnMainThread(() => m_ForwardTo.OnProductsRetrieved(products));
}
public void OnPurchaseSucceeded(string id, string? receipt, string transactionID)
{
m_Util.RunOnMainThread(() => m_ForwardTo.OnPurchaseSucceeded(id, receipt, transactionID));
}
public void OnAllPurchasesRetrieved(List purchasedProducts)
{
m_Util.RunOnMainThread(() => m_ForwardTo.OnAllPurchasesRetrieved(purchasedProducts));
}
public void OnPurchaseFailed(PurchaseFailureDescription desc)
{
m_Util.RunOnMainThread(() => m_ForwardTo.OnPurchaseFailed(desc));
}
public bool useTransactionLog { get; set; }
}
}