StarryEyes.ViewModels.Timelines.Statuses.StatusViewModel.FavoriteAndRetweetImmediate C# (CSharp) Method

FavoriteAndRetweetImmediate() private method

private FavoriteAndRetweetImmediate ( ) : void
return void
        public void FavoriteAndRetweetImmediate()
        {
            if (IsDirectMessage)
            {
                // disable on direct messages
                return;
            }
            if (!AssertQuickActionEnabled()) return;
            var accounts = GetImmediateAccounts()
                               .ToObservable()
                               .Publish();
            if (!IsFavorited)
            {
                var freq = new FavoriteRequest(Status, true);
                accounts.Do(a => Task.Run(() => Model.AddFavoritedUser(a.GetPseudoUser())))
                        .Do(_ => RaisePropertyChanged(() => IsFavorited))
                        .SelectMany(a => RequestQueue.EnqueueObservable(a, freq)
                                                     .Catch((Exception ex) =>
                                                     {
                                                         Task.Run(() => Model.RemoveFavoritedUser(a.Id));
                                                         return Observable.Empty<TwitterStatus>();
                                                     }))
                        .Do(_ => RaisePropertyChanged(() => IsFavorited))
                        .Subscribe();
            }
            if (!IsRetweeted)
            {
                var rreq = new RetweetRequest(Status, true);
                accounts.Do(a => Task.Run(() => Model.AddRetweetedUser(a.GetPseudoUser())))
                        .Do(_ => RaisePropertyChanged(() => IsRetweeted))
                        .SelectMany(a => RequestQueue.EnqueueObservable(a, rreq)
                                                     .Catch((Exception ex) =>
                                                     {
                                                         Task.Run(() => Model.RemoveRetweetedUser(a.Id));
                                                         return Observable.Empty<TwitterStatus>();
                                                     }))
                        .Do(_ => RaisePropertyChanged(() => IsRetweeted))
                        .Subscribe();
            }
            accounts.Connect();
        }