using System;
using System.Threading.Tasks;
using Shiny.Locations;

namespace ShinyPrismSample.Delegates
{
    public class GpsListener : IGpsListener
    {
        public event EventHandler<GpsReadingEventArgs> OnReadingReceived;

        void UpdateReading(IGpsReading reading)
        {
            OnReadingReceived?.Invoke(this, new GpsReadingEventArgs(reading));
        }


        public class LocationDelegate : IGpsDelegate
        {
            IGpsListener _gpsListener;

            public LocationDelegate(IGpsListener gpsListener)
            {
                _gpsListener = gpsListener;
            }

            public Task OnReading(IGpsReading reading)
            {
                (_gpsListener as GpsListener)?.UpdateReading(reading);
                return Task.CompletedTask;
            }
         }
    }
}