diff --git a/app/assets/javascripts/discourse/components/user-card-contents.js.es6 b/app/assets/javascripts/discourse/components/user-card-contents.js.es6 index d13fcd101c1..4849a917af8 100644 --- a/app/assets/javascripts/discourse/components/user-card-contents.js.es6 +++ b/app/assets/javascripts/discourse/components/user-card-contents.js.es6 @@ -195,6 +195,16 @@ export default Ember.Component.extend( this._close(); }, + ignoreUser() { + this.get("user").ignore(); + this._close(); + }, + + watchUser() { + this.get("user").watch(); + this._close(); + }, + showUser() { this.showUser(this.get("user")); this._close(); diff --git a/app/assets/javascripts/discourse/controllers/user.js.es6 b/app/assets/javascripts/discourse/controllers/user.js.es6 index e0b31bd1727..d6f577fe37f 100644 --- a/app/assets/javascripts/discourse/controllers/user.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user.js.es6 @@ -145,6 +145,16 @@ export default Ember.Controller.extend(CanCheckEmails, { adminDelete() { this.get("adminTools").deleteUser(this.get("model.id")); + }, + + ignoreUser() { + const user = this.get("model"); + user.ignore().then(() => user.set("ignored", true)); + }, + + watchUser() { + const user = this.get("model"); + user.watch().then(() => user.set("ignored", false)); } } }); diff --git a/app/assets/javascripts/discourse/models/user.js.es6 b/app/assets/javascripts/discourse/models/user.js.es6 index 428f08ba5bf..ab7f31538d6 100644 --- a/app/assets/javascripts/discourse/models/user.js.es6 +++ b/app/assets/javascripts/discourse/models/user.js.es6 @@ -615,6 +615,20 @@ const User = RestModel.extend({ } }, + ignore() { + return ajax(`${userPath(this.get("username"))}/ignore.json`, { + type: "PUT", + data: { ignored_user_id: this.get("id") } + }); + }, + + watch() { + return ajax(`${userPath(this.get("username"))}/ignore.json`, { + type: "DELETE", + data: { ignored_user_id: this.get("id") } + }); + }, + dismissBanner(bannerKey) { this.set("dismissed_banner_key", bannerKey); ajax(userPath(this.get("username") + ".json"), { diff --git a/app/assets/javascripts/discourse/templates/components/user-card-contents.hbs b/app/assets/javascripts/discourse/templates/components/user-card-contents.hbs index a7fc8cac358..e40a5a2abe6 100644 --- a/app/assets/javascripts/discourse/templates/components/user-card-contents.hbs +++ b/app/assets/javascripts/discourse/templates/components/user-card-contents.hbs @@ -48,6 +48,21 @@ icon="envelope" label="user.private_message"}} + {{#if user.can_ignore_user}} +
  • + {{#if user.ignored}} + {{d-button class="btn-default" + action=(action "watchUser") + icon="eye" + label="user.watch"}} + {{else}} + {{d-button class="btn-danger" + action=(action "ignoreUser") + icon="eye-slash" + label="user.ignore"}} + {{/if}} +
  • + {{/if}} {{/if}} {{#if showFilter}} diff --git a/app/assets/javascripts/discourse/templates/user.hbs b/app/assets/javascripts/discourse/templates/user.hbs index 0376714d9ad..755d9090f1f 100644 --- a/app/assets/javascripts/discourse/templates/user.hbs +++ b/app/assets/javascripts/discourse/templates/user.hbs @@ -43,12 +43,27 @@