using BestHTTP.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;

namespace BestHTTP.Examples.Helpers.Components
{
    public class Cookies : MonoBehaviour
    {
#pragma warning disable 0649
        [SerializeField]
        private Text _count;

        [SerializeField]
        private Text _size;

        [SerializeField]
        private Button _clear;
#pragma warning restore

        private void Start()
        {
            PluginEventHelper.OnEvent += OnPluginEvent;
            UpdateLabels();
        }

        private void OnDestroy()
        {
            PluginEventHelper.OnEvent -= OnPluginEvent;
        }

        private void OnPluginEvent(PluginEventInfo @event)
        {
#if !BESTHTTP_DISABLE_COOKIES
            if (@event.Event == PluginEvents.SaveCookieLibrary)
                UpdateLabels();
#endif
        }

        private void UpdateLabels()
        {
#if !BESTHTTP_DISABLE_COOKIES
            var cookies = BestHTTP.Cookies.CookieJar.GetAll();
            var size = cookies.Sum(c => c.GuessSize());

            this._count.text = cookies.Count.ToString("N0");
            this._size.text = size.ToString("N0");
#else
            this._count.text = "0";
            this._size.text = "0";
#endif
        }

        public void OnClearButtonClicked()
        {
#if !BESTHTTP_DISABLE_COOKIES
            BestHTTP.Cookies.CookieJar.Clear();
#endif
        }
    }
}
