#include "fsIapFactory.h"
#if defined(fsANDROID)
#include "src/impl/scapix/android/fsCIAP.h"
#elif defined(IOS)
#include "src/impl/scapix/iOS/fsCIAP.h"
#endif
namespace
{
class fsIapPlatformService : public fsIapService
{
public:
explicit fsIapPlatformService(Observer* observer)
{
setObserver(observer);<--- Calling setObserver
}
void setObserver(Observer* observer) override<--- setObserver is a virtual function
{
mObserver = observer;
#if defined(fsANDROID) || defined(IOS)
IAPImpl::initialise(mObserver);
#endif
}
void queryProduct(const std::string& productId) override
{
#if defined(fsANDROID) || defined(IOS)
IAPImpl::queryProduct(productId);
#else
if (mObserver)
{
mObserver->onProductInvalid(productId);
}
#endif
}
void purchaseReadyProduct() override
{
#if defined(fsANDROID) || defined(IOS)
IAPImpl::purchaseReadyProduct();
#endif
}
void restorePurchases() override
{
#if defined(fsANDROID) || defined(IOS)
IAPImpl::restorePurchase();
#endif
}
void shutdown() override
{
#if defined(fsANDROID) || defined(IOS)
IAPImpl::shutdown();
#endif
mObserver = nullptr;
}
private:
Observer* mObserver{nullptr};
};
}
std::unique_ptr<fsIapService> fsIapServiceCreate(fsIapService::Observer* observer)
{
return std::make_unique<fsIapPlatformService>(observer);
}