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)); }); }
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(); }
public TweetInputInfoViewModel(InputAreaViewModel parent, TweetInputInfo info, Action<TweetInputInfo> removeHandler) { Parent = parent; Model = info; _removeHandler = removeHandler; }
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); }
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)); }
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); }); }