#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; } } }