static LimitedNotificationTrader GetTrader(ICurrencyPair currencyPair, IObservable <PriceDto> priceStream)
        {
            var trader = new LimitedNotificationTrader();

            trader.Initialize(priceStream, currencyPair);
            return(trader);
        }
        void SetupStreams(LimitedNotificationTrader trader)
        {
            trader.PriceStream
            .Where(price => !price.IsStale)
            .Subscribe(price =>
            {
                _price = price;
                _sellPriceLabel.SetText(price.ToBidPrice().ToAttributedNotificationString());
                _buyPriceLabel.SetText(price.ToAskPrice().ToAttributedNotificationString());
            })
            .Add(_compositeDisposable);

            trader.PriceStream
            .Where(price => price.IsStale)
            .Subscribe(price =>
            {
                _sellPriceLabel.SetText("-");
                _buyPriceLabel.SetText("-");
                _priceLabel.SetText("");
            })
            .Add(_compositeDisposable);

            trader.PriceStream
            .Where(price => !price.IsStale)
            .ToPriceMovementStream()
            .Subscribe(priceMovement =>
            {
                _arrowLabel.SetText(priceMovement.ToAttributedArrow(_price));
                _priceLabel.SetText(_price.Spread.ToString("0.0"));
                SetPricesHidden(false);
            })
            .Add(_compositeDisposable);
        }
        public override void DidReceiveLocalNotification(UILocalNotification localNotification, Action <WKUserNotificationInterfaceType> completionHandler)
        {
            _compositeDisposable.Dispose();
            _compositeDisposable = new CompositeDisposable();

            var trade        = GetTrade(localNotification);
            var currencyPair = GetCurrencyPair(localNotification, _priceSubject.AsObservable());

            SetupWormholePriceStream(trade);

            _trader = GetTrader(currencyPair, _priceSubject.AsObservable());
            _compositeDisposable.Add(_trader);

            SetupInterface(trade);
            SetupStreams(_trader);

            completionHandler(WKUserNotificationInterfaceType.Custom);
        }