#nullable enable
using System;
using IGP.UnitySDK;
using IGP.UnitySDK.Compliance;
using UnityEngine;

public sealed class IGPExampleCompliance : MonoBehaviour
{
    [SerializeField] private IGPRuntimeManager? runtime = null;
    private IDisposable? subscription;

    private void OnEnable()
    {
        runtime ??= FindObjectOfType<IGPRuntimeManager>();
        if (runtime != null)
        {
            subscription = IGPCompliance.SubscribeAntiAddictionEvents(runtime, ApplyStatus);
        }
    }

    private void OnDisable()
    {
        subscription?.Dispose();
        subscription = null;
    }

    public async void Refresh()
    {
        if (runtime != null)
        {
            ApplyStatus(await IGPCompliance.RefreshAntiAddictionEventAsync(runtime));
        }
    }

    private static void ApplyStatus(IGPAntiAddictionComplianceEvent status)
    {
        if (status.action == IGPAntiAddictionComplianceActions.Block)
        {
            Debug.LogWarning(status.message);
        }
    }
}
