using drinkMe.Client.Services;
using drinkMe.Client.Services.Interfaces;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Blazored.LocalStorage;
using System.Text.Json;

namespace drinkMe.Client
{
	public class Program
	{
		public static async Task Main(string[] args)
		{
			var builder = WebAssemblyHostBuilder.CreateDefault(args);
			builder.RootComponents.Add<App>("#app");

			builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) })
				.AddScoped<IDataService, DataService>()
				.AddScoped<IPriceService, PriceService>()
				.AddScoped<IPaymentService, PaymentService>();

			builder.Services.AddBlazoredLocalStorage(config =>
			{
				config.JsonSerializerOptions.WriteIndented = false;
				config.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
				config.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
			});

			await builder.Build().RunAsync();
		}
	}
}
