using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Linq;
using ScenarioFlow.Tasks;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;

namespace HowToChooseTokenCode
{
	public class ButtonNotifier : MonoBehaviour, INextNotifier, ICancellationNotifier
	{
		[SerializeField]
		private Button nextButton;
		[SerializeField]
		private Button cancelButton;

		public UniTask NotifyNextAsync(CancellationToken cancellationToken)
		{
			return nextButton.OnClickAsAsyncEnumerable(cancellationToken: cancellationToken)
				.FirstOrDefaultAsync(cancellationToken: cancellationToken);

		}

		public UniTask NotifyCancellationAsync(CancellationToken cancellationToken)
		{
			return cancelButton.OnClickAsAsyncEnumerable(cancellationToken: cancellationToken)
				.FirstOrDefaultAsync(cancellationToken: cancellationToken);

		}
	}
}