private void OnCommentDelete(WorkshopComment comment) { _busyEdit.Task(async() => { try { await WorkshopHolder.Client.DeleteAsync($"{_url}/{comment.Id}"); Comments.Remove(comment); ++CommentsDeleted; } catch (Exception e) { NonfatalError.Notify("Failed to edit a comment", e); } }); }
private void OnCommentChange(WorkshopComment comment, string newMessage) { _busyEdit.Task(async() => { try { await WorkshopHolder.Client.PatchAsync($"{_url}/{comment.Id}", new { comment = newMessage }); } catch (Exception e) { NonfatalError.Notify("Failed to edit a comment", e); return; } try { comment.Message = (await WorkshopHolder.Client.GetAsync <WorkshopComment>($"{_url}/{comment.Id}")).Message; } catch (Exception e) { Logging.Warning(e); comment.Message = newMessage; } comment.ChangeTo = null; }); }
private void OnReport(WorkshopComment comment, string message) { _busyReport.Task(async() => { try { await WorkshopHolder.Client.PostAsync($"{_reportsUrl}{comment.Id}", new { message }); } catch (Exception e) { NonfatalError.Notify("Failed to send a report", e); return; } try { await WorkshopHolder.Client.GetAsync <WorkshopComment>($"{_url}/{comment.Id}"); } catch (WorkshopException e) when(e.Code == HttpStatusCode.NotFound) { Comments.Remove(comment); } catch (Exception e) { Logging.Warning(e); } }); }
private void OnLikeSet(WorkshopComment comment, bool likeSet) { if (_innerChange) { return; } if (_busyLike.Is) { _innerChange = true; comment.Liked = !likeSet; _innerChange = false; } _busyLike.Task(async() => { try { if (likeSet) { await WorkshopHolder.Client.PostAsync($"{_likesUrl}{comment.Id}"); } else { await WorkshopHolder.Client.DeleteAsync($"{_likesUrl}{comment.Id}"); } } catch (WorkshopException e) when(e.Code == HttpStatusCode.Conflict || e.Code == HttpStatusCode.NotFound) { // ignore such cases, as they usually mean desired task is already completed _innerChange = true; comment.Likes = likeSet ? comment.Likes - 1 : comment.Likes + 1; _innerChange = false; } catch (Exception e) { _innerChange = true; comment.Liked = !likeSet; _innerChange = false; NonfatalError.Notify(likeSet ? "Failed to send a like" : "Failed to delete a like", e); } }); }