private void onTickerEventCallback(PushMessageBase message) { if (!(message is TickerMessage ticker)) { return; } CurrencyViewEntity currency = viewModel.MarketTabs.SelectMany(market => market.Currencies).SingleOrDefault(c => c.Id == ticker.Id); if (currency != null) { asyncService.RunUiContext(async() => { double oldChange = currency.Price; double newChange = ticker.Last; mapper.Map(message, currency); if (oldChange.EqualInPercentRange(newChange)) { return; } if (newChange < oldChange) { currency.IsChangeDown = true; } else if (newChange > oldChange) { currency.IsChangeUp = true; } await Task.Delay(TimeSpan.FromMilliseconds(500)); if (newChange < oldChange) { currency.IsChangeDown = false; } else if (newChange > oldChange) { currency.IsChangeUp = false; } }).FireAndForget(); } }
private void onAppLoaded(AppLoadedMessage message) { settings = message.Settings; MarketTabViewModel market = viewModel.MarketTabs.SingleOrDefault(m => m.Name == settings.SelectedMarket); if (market != null) { market.IsSelected = true; } else { viewModel.MarketTabs[0].IsSelected = true; } List <CurrencyViewEntity> currencyEntities = viewModel.MarketTabs.SelectMany(m => m.Currencies).ToList(); CurrencyViewEntity cve = currencyEntities.SingleOrDefault(currency => currency.Id == settings.SelectedCurrency); if (cve != null) { cve.IsSelected = true; } else { if (viewModel.ShowFavorites) { cve = currencyEntities.FirstOrDefault(currency => currency.IsFavorite); } if (cve == null) { viewModel.MarketTabs[0].Currencies[0].IsSelected = true; } } currencyEntities.ForEach(currency => currency.IsFavorite = settings.Favorites.Contains(currency.Id)); viewModel.ShowFavorites = settings.ShowFavorites; }