Пример #1
0
        protected override void OnExit(ExitEventArgs e)
        {
            // the app is already running
            if (e.ApplicationExitCode == 300)
            {
                SingleApp.CloseAndSwitch();
                base.OnExit(e);
                return;
            }

            AtomexApp.Stop();
            try { Updater.Stop(); }
            catch (TimeoutException) { Log.Error("Failed to stop the updater due to timeout"); }

            // update has been requested
            if (e.ApplicationExitCode == 101)
            {
                try
                {
                    Updater.RunUpdate();
                    Log.Information("Update scheduled");
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "Failed to schedule update");
                }
            }

            Log.Information("Application shutdown");

            SingleApp.Close();
            base.OnExit(e);
        }
Пример #2
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            //Current.Resources.MergedDictionaries.Add(new ResourceDictionary()
            //{
            //    Source = new Uri("Themes/blue.xaml", UriKind.Relative)
            //});

            // ensure there are no other instances of the app
            //if (!SingleApp.TryStart("AtomexApp"))
            //{
            //    Current.Shutdown(300);
            //    return;
            //}

            // init logger
            Log.Logger = new LoggerConfiguration()
                         .ReadFrom.Configuration(Configuration)
                         .CreateLogger();

            Log.Information("Application startup");

            var currenciesProvider = new CurrenciesProvider(CurrenciesConfigurationJson);
            var symbolsProvider    = new SymbolsProvider(SymbolsConfiguration);

            // init Atomex client app
            AtomexApp = new AtomexApp()
                        .UseCurrenciesProvider(currenciesProvider)
                        .UseSymbolsProvider(symbolsProvider)
                        .UseCurrenciesUpdater(new CurrenciesUpdater(currenciesProvider))
                        .UseSymbolsUpdater(new SymbolsUpdater(symbolsProvider))
                        .UseQuotesProvider(new BitfinexQuotesProvider(
                                               currencies: currenciesProvider.GetCurrencies(Network.MainNet),
                                               baseCurrency: BitfinexQuotesProvider.Usd));

            // init app updater
            Updater = new Updater()
                      //.UseLocalBinariesProvider(@"Atomex.Client.Wpf.Installer.msi")
                      //.UseLocalVersionProvider(@"version.json")
                      .UseHttpMetadataProvider("https://atomex.me/versions.json", TargetPlatform.Windows)
                      .UseMsiProductProvider("DB7FCF8D-E0C6-4C99-A6B1-3FB6D703F97E");

            // init & show main view
            var mainView = new MainWindow();

            mainView.DataContext = new MainViewModel(AtomexApp, mainView, mainView);
            mainView.Show();
            mainView.ShowDialog(Dialogs.Start, new StartViewModel(AtomexApp, mainView));

            MainWindow = mainView;

            AtomexApp.Start();
            try { Updater.Start(); }
            catch (TimeoutException) { Log.Error("Failed to start the updater due to timeout"); }
        }
Пример #3
0
        public override void OnFrameworkInitializationCompleted()
        {
            TemplateService = new TemplateService();
            ImageService    = new ImageService();
            Clipboard       = AvaloniaLocator.Current.GetService <IClipboard>();

            // init logger
            Log.Logger = new LoggerConfiguration()
#if DEBUG
                         .ReadFrom.Configuration(Configuration)
#else
                         .WriteTo.Sentry(o =>
            {
                o.Dsn = new Dsn("https://[email protected]/8");
                // Debug and higher are stored as breadcrumbs (default is Information)
                o.MinimumBreadcrumbLevel = LogEventLevel.Information;
                // Warning and higher is sent as event (default is Error)
                o.MinimumEventLevel = LogEventLevel.Error;
            })
#endif
                         .CreateLogger();

            var currenciesProvider = new CurrenciesProvider(CurrenciesConfigurationString);
            var symbolsProvider    = new SymbolsProvider(SymbolsConfiguration);

            // init Atomex client app
            AtomexApp = new AtomexApp()
                        .UseCurrenciesProvider(currenciesProvider)
                        .UseSymbolsProvider(symbolsProvider)
                        .UseCurrenciesUpdater(new CurrenciesUpdater(currenciesProvider))
                        .UseSymbolsUpdater(new SymbolsUpdater(symbolsProvider))
                        .UseQuotesProvider(new BitfinexQuotesProvider(
                                               currencies: currenciesProvider.GetCurrencies(Network.MainNet),
                                               baseCurrency: BitfinexQuotesProvider.Usd));

            if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
            {
                var mainWindow = new MainWindow();
                DialogService = new DialogService <DialogServiceView>(mainWindow);
                var mainWindowViewModel = new MainWindowViewModel(AtomexApp, mainWindow);

                mainWindow.DataContext = mainWindowViewModel;
                desktop.MainWindow     = mainWindow;

                desktop.Exit += OnExit;

                // var sink = new InMemorySink(mainWindowViewModel.LogEvent);
                // Log.Logger = new LoggerConfiguration()
                //     .WriteTo.Sink(sink)
                //     .CreateLogger();
            }

            AtomexApp.Start();

            base.OnFrameworkInitializationCompleted();
        }
Пример #4
0
 void OnExit(object sender, ControlledApplicationLifetimeExitEventArgs e)
 {
     Log.Information("Application shutdown");
     try
     {
         AtomexApp.Stop();
     }
     catch (Exception)
     {
         Log.Error("Error stopping Atomex in OnExit");
     }
 }