Beispiel #1
0
        public App()
        {
            InitializeComponent();
            LoadStyles();

            DependencyService.Get <INotificationManager>().Initialize();

            var currenciesProvider = new CurrenciesProvider(CurrenciesConfigurationJson);

            var symbolsProvider = new SymbolsProvider(SymbolsConfiguration);

            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));

            AtomexApp.Start();

            StartViewModel startViewModel = new StartViewModel(AtomexApp);

            MainPage = new NavigationPage(new StartPage(startViewModel));
            startViewModel.Navigation = MainPage.Navigation;

            Current.RequestedThemeChanged += (s, a) =>
            {
                Device.BeginInvokeOnMainThread(SetAppTheme);
            };
            SetAppTheme();
        }
        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"); }
        }
Beispiel #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();
        }
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

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

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

            Log.Information("Application startup");

            var currenciesProvider = new CurrenciesProvider(CurrenciesConfiguration);
            var symbolsProvider    = new SymbolsProvider(SymbolsConfiguration, currenciesProvider);

            // init Atomix client app
            AtomixApp = new AtomixApp()
                        .UseCurrenciesProvider(currenciesProvider)
                        .UseSymbolsProvider(symbolsProvider)
                        .UseQuotesProvider(new BitfinexQuotesProvider(
                                               currencies: currenciesProvider.GetCurrencies(Network.MainNet),
                                               baseCurrency: BitfinexQuotesProvider.Usd))
                        .UseTerminal(new Terminal(Configuration));

            // init app updater
            Updater = new Updater()
                      //.UseLocalBinariesProvider(@"Atomix.Client.Wpf.Installer.msi")
                      //.UseLocalVersionProvider(@"version.json")
                      .UseHttpMetadataProvider("https://atomix.me/versions.json", TargetPlatform.Windows)
                      .UseMsiProductProvider("0779aaaa-2411-4948-b5bc-48f81b8c6143");

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

            mainView.DataContext = new MainViewModel(AtomixApp, mainView, mainView);
            mainView.Show();
            mainView.ShowStartDialog(new StartViewModel(AtomixApp, mainView));

            MainWindow = mainView;

            AtomixApp.Start();
            try { Updater.Start(); }
            catch (TimeoutException) { Log.Error("Failed to start the updater due to timeout"); }
        }
Beispiel #5
0
        public async Task <IBlockchainTransaction> CreateSwapPaymentTxTest()
        {
            var bitcoinApi = new Mock <IInOutBlockchainApi>();

            bitcoinApi.Setup(a => a.GetUnspentOutputsAsync(It.IsAny <string>(), null, new CancellationToken()))
            .Returns(Task.FromResult(GetTestOutputs(Common.Alice.PubKey, NBitcoin.Network.TestNet)));

            var litecoinApi = new Mock <IInOutBlockchainApi>();

            litecoinApi.Setup(a => a.GetUnspentOutputsAsync(It.IsAny <string>(), null, new CancellationToken()))
            .Returns(Task.FromResult(GetTestOutputs(Common.Bob.PubKey, AltNetworkSets.Litecoin.Testnet)));

            var tempCurrencies = new CurrenciesProvider(Common.CurrenciesConfigurationString)
                                 .GetCurrencies(Atomex.Core.Network.TestNet);

            var bitcoin = tempCurrencies.Get <BitcoinConfig>("BTC");

            bitcoin.BlockchainApi = bitcoinApi.Object;

            var litecoin = tempCurrencies.Get <LitecoinConfig>("LTC");

            litecoin.BlockchainApi = litecoinApi.Object;

            var aliceBtcAddress = Common.Alice.PubKey
                                  .GetAddress(ScriptPubKeyType.Legacy, bitcoin.Network)
                                  .ToString();

            var bobBtcAddress = Common.Bob.PubKey
                                .GetAddress(ScriptPubKeyType.Legacy, bitcoin.Network)
                                .ToString();

            const decimal lastPrice = 0.000001m;
            const decimal lastQty   = 10m;

            var swap = new Swap
            {
                Symbol = "LTC/BTC",
                Side   = Side.Buy,
                Price  = lastPrice,
                Qty    = lastQty
            };

            var amountInSatoshi = bitcoin.CoinToSatoshi(AmountHelper.QtyToSellAmount(swap.Side, swap.Qty, swap.Price, bitcoin.DigitsMultiplier));

            var outputs = (await new BlockchainTxOutputSource(bitcoin)
                           .GetAvailableOutputsAsync(new[] { aliceBtcAddress }))
                          .Cast <BitcoinBasedTxOutput>();

            var tx = await new BitcoinBasedSwapTransactionFactory()
                     .CreateSwapPaymentTxAsync(
                fromOutputs: outputs,
                amount: amountInSatoshi,
                refundAddress: aliceBtcAddress,
                toAddress: bobBtcAddress,
                lockTime: DateTimeOffset.UtcNow.AddHours(1),
                secretHash: Common.SecretHash,
                secretSize: Common.Secret.Length,
                currencyConfig: bitcoin)
                     .ConfigureAwait(false);

            Assert.NotNull(tx);
            //Assert.NotNull(redeemScript);

            return(tx);
        }