using Elwig.Helpers;
using System;
using System.Diagnostics;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using System.Windows;

namespace Elwig.Dialogs {
    public partial class UpdateDialog : Window {

        public string Version { get; private set; }
        public string Url { get; private set; }

        public UpdateDialog(string version, string url, long size) {
            Version = version;
            Url = url;
            InitializeComponent();
            VersionText.Text = version;
            SizeText.Text = $"{size / 1024 / 1024}";
        }

        private async void InstallButton_Click(object sender, RoutedEventArgs evt) {
            Description.Visibility = Visibility.Hidden;
            ProgressBar.Visibility = Visibility.Visible;
            InstallButton.IsEnabled = false;
            await Install();
            DialogResult = true;
            Close();
        }

        public async Task Install() {
            var fileName = Path.Combine(App.TempPath, $"Elwig-{Version}.exe");
            {
                using var stream = new FileStream(fileName, FileMode.Create);
                using var client = new HttpClient() {
                    Timeout = TimeSpan.FromSeconds(5),
                };
                await client.DownloadAsync(Url, stream, new Progress<double>(p => {
                    ProgressBar.Value = p * 100.0;
                }));
            }

            Process.Start(fileName);
        }
    }
}