예제 #1
0
 internal static void Send(TweetInputInfo inputInfo)
 {
     Task.Run(async () =>
     {
         await inputInfo.DeletePreviousAsync();
         inputInfo.Send()
                  .Subscribe(tweetInputInfo =>
                  {
                      if (tweetInputInfo.PostedTweets != null)
                      {
                          InputAreaModel.PreviousPosted = tweetInputInfo;
                          BackstageModel.RegisterEvent(new PostSucceededEvent(tweetInputInfo));
                      }
                      else
                      {
                          var result = AnalysisFailedReason(tweetInputInfo);
                          if (result.Item1)
                          {
                              InputAreaModel.Drafts.Add(tweetInputInfo);
                          }
                          BackstageModel.RegisterEvent(new PostFailedEvent(tweetInputInfo, result.Item2));
                      }
                  }, ex => Debug.WriteLine(ex));
     });
 }
예제 #2
0
 public void ClearInput(string clearTo = "", bool stash = false)
 {
     if (stash && CanSaveToDraft)
     {
         InputAreaModel.Drafts.Add(InputInfo);
     }
     _inputInfo = new TweetInputInfo(clearTo);
     ApplyBaseSelectedAccounts();
     InputInfo.Accounts = AccountSelectionFlip.SelectedAccounts;
     RaisePropertyChanged(() => InputInfo);
     RaisePropertyChanged(() => InputText);
     RaisePropertyChanged(() => InReplyTo);
     RaisePropertyChanged(() => IsInReplyToEnabled);
     RaisePropertyChanged(() => DirectMessageTo);
     RaisePropertyChanged(() => IsDirectMessageEnabled);
     RaisePropertyChanged(() => AttachedImage);
     RaisePropertyChanged(() => IsImageAttached);
     RaisePropertyChanged(() => AttachedLocation);
     RaisePropertyChanged(() => IsLocationAttached);
     UpdateHashtagCandidates();
     UpdateTextCount();
 }
예제 #3
0
 public TweetInputInfoViewModel(InputAreaViewModel parent,
                                TweetInputInfo info, Action<TweetInputInfo> removeHandler)
 {
     Parent = parent;
     Model = info;
     _removeHandler = removeHandler;
 }
예제 #4
0
 private static Tuple<bool, string> AnalysisFailedReason(TweetInputInfo info)
 {
     if (info == null)
         throw new ArgumentNullException("info");
     if (info.ThrownException == null)
         throw new ArgumentException("info.ThrownException is null.");
     var msg = info.ThrownExceptionMessage;
     if (msg != null)
     {
         if (msg.Contains("duplicate"))
         {
             return Tuple.Create(false, "直近のツイートと重複しています。");
         }
         if (msg.Contains("User is over daily update limit."))
         {
             return Tuple.Create(true, "POST規制されています。");
         }
         // TODO: Implement more cases.
         return Tuple.Create(true, msg);
     }
     return Tuple.Create(true, info.ThrownException.Message);
 }
예제 #5
0
 internal static async void Send(TweetInputInfo inputInfo)
 {
     await inputInfo.DeletePrevious();
     inputInfo.Send()
              .Subscribe(_ =>
              {
                  if (_.PostedTweets != null)
                  {
                      InputAreaModel.PreviousPosted = _;
                      BackstageModel.RegisterEvent(new PostSucceededEvent(_));
                  }
                  else
                  {
                      var result = AnalysisFailedReason(_);
                      if (result.Item1)
                          InputAreaModel.Drafts.Add(_);
                      BackstageModel.RegisterEvent(new PostFailedEvent(_, result.Item2));
                  }
              }, ex => Debug.WriteLine(ex));
 }
예제 #6
0
 internal static async void Send(TweetInputInfo inputInfo)
 {
     await inputInfo.DeletePrevious();
     inputInfo.Send()
              .Subscribe(_ =>
              {
                  Debug.WriteLine("Completed!");
                  if (_.PostedTweets != null)
                  {
                      InputAreaModel.PreviousPosted = _;
                      BackpanelModel.RegisterEvent(new PostSucceededEvent(_));
                  }
                  else
                  {
                      Tuple<bool, string> result = AnalysisFailedReason(_);
                      if (result.Item1)
                          InputAreaModel.Drafts.Add(_);
                      BackpanelModel.RegisterEvent(new PostFailedEvent(_, result.Item2));
                  }
              }, ex =>
              {
                  Debug.WriteLine("Exception is thrown...");
                  Debug.WriteLine(ex);
              });
 }