From aa40a07d7304be291085bc0a710445344597c161 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 13 May 2020 13:26:24 +0800 Subject: [PATCH] FIX: Throttle typing function in discourse-presence. --- .../components/composer-presence-display.js.es6 | 16 +++++++++++++--- .../javascripts/discourse/lib/presence.js.es6 | 13 +------------ .../discourse/services/presence-manager.js.es6 | 5 ----- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/plugins/discourse-presence/assets/javascripts/discourse/components/composer-presence-display.js.es6 b/plugins/discourse-presence/assets/javascripts/discourse/components/composer-presence-display.js.es6 index 6f94bad9935..c8bde292e85 100644 --- a/plugins/discourse-presence/assets/javascripts/discourse/components/composer-presence-display.js.es6 +++ b/plugins/discourse-presence/assets/javascripts/discourse/components/composer-presence-display.js.es6 @@ -1,12 +1,18 @@ import Component from "@ember/component"; -import { cancel } from "@ember/runloop"; +import { cancel, throttle } from "@ember/runloop"; import { equal, gt } from "@ember/object/computed"; import { inject as service } from "@ember/service"; import discourseComputed, { observes, on } from "discourse-common/utils/decorators"; -import { REPLYING, CLOSED, EDITING, COMPOSER_TYPE } from "../lib/presence"; +import { + REPLYING, + CLOSED, + EDITING, + COMPOSER_TYPE, + KEEP_ALIVE_DURATION_SECONDS +} from "../lib/presence"; import { REPLY, EDIT } from "discourse/models/composer"; export default Component.extend({ @@ -55,6 +61,10 @@ export default Component.extend({ @observes("reply", "title") typing() { + throttle(this, this._typing, KEEP_ALIVE_DURATION_SECONDS * 1000); + }, + + _typing() { const action = this.action; if (action !== REPLY && action !== EDIT) { @@ -70,7 +80,7 @@ export default Component.extend({ this._prevPublishData = data; - this._throttle = this.presenceManager.throttlePublish( + this._throttle = this.presenceManager.publish( data.topicId, data.state, data.whisper, diff --git a/plugins/discourse-presence/assets/javascripts/discourse/lib/presence.js.es6 b/plugins/discourse-presence/assets/javascripts/discourse/lib/presence.js.es6 index 57eedc05255..7bf057fd8d8 100644 --- a/plugins/discourse-presence/assets/javascripts/discourse/lib/presence.js.es6 +++ b/plugins/discourse-presence/assets/javascripts/discourse/lib/presence.js.es6 @@ -1,5 +1,5 @@ import EmberObject from "@ember/object"; -import { cancel, later, throttle } from "@ember/runloop"; +import { cancel, later } from "@ember/runloop"; import { ajax } from "discourse/lib/ajax"; import discourseComputed from "discourse-common/utils/decorators"; @@ -99,17 +99,6 @@ const Presence = EmberObject.extend({ return `/presence/${topicId}`; }, - throttlePublish(state, whisper, postId) { - return throttle( - this, - this.publish, - state, - whisper, - postId, - KEEP_ALIVE_DURATION_SECONDS * 1000 - ); - }, - publish(state, whisper, postId) { if (this.get("currentUser.hide_profile_and_presence")) return; diff --git a/plugins/discourse-presence/assets/javascripts/discourse/services/presence-manager.js.es6 b/plugins/discourse-presence/assets/javascripts/discourse/services/presence-manager.js.es6 index 1aaca2d1ac3..63af48d1948 100644 --- a/plugins/discourse-presence/assets/javascripts/discourse/services/presence-manager.js.es6 +++ b/plugins/discourse-presence/assets/javascripts/discourse/services/presence-manager.js.es6 @@ -36,11 +36,6 @@ const PresenceManager = Service.extend({ return this._getPresence(topicId).editingUsers; }, - throttlePublish(topicId, state, whisper, postId) { - if (!topicId) return; - return this._getPresence(topicId).throttlePublish(state, whisper, postId); - }, - publish(topicId, state, whisper, postId) { if (!topicId) return; return this._getPresence(topicId).publish(state, whisper, postId);