summaryrefslogtreecommitdiffstats
path: root/webapp/stores/user_typing_store.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/stores/user_typing_store.jsx')
-rw-r--r--webapp/stores/user_typing_store.jsx108
1 files changed, 0 insertions, 108 deletions
diff --git a/webapp/stores/user_typing_store.jsx b/webapp/stores/user_typing_store.jsx
deleted file mode 100644
index 39805fdb4..000000000
--- a/webapp/stores/user_typing_store.jsx
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
-import UserStore from 'stores/user_store.jsx';
-import EventEmitter from 'events';
-import * as Utils from 'utils/utils.jsx';
-
-import Constants from 'utils/constants.jsx';
-const ActionTypes = Constants.ActionTypes;
-
-const CHANGE_EVENT = 'change';
-
-class UserTypingStoreClass extends EventEmitter {
- constructor() {
- super();
-
- // All typeing users by channel
- // this.typingUsers.[channelId+postParentId].user if present then user us typing
- // Value is timeout to remove user
- this.typingUsers = {};
- }
-
- emitChange() {
- this.emit(CHANGE_EVENT);
- }
-
- addChangeListener(callback) {
- this.on(CHANGE_EVENT, callback);
- }
-
- removeChangeListener(callback) {
- this.removeListener(CHANGE_EVENT, callback);
- }
-
- nameFromId(userId) {
- let name = Utils.localizeMessage('msg_typing.someone', 'Someone');
- if (UserStore.hasProfile(userId)) {
- name = Utils.displayUsername(userId);
- }
- return name;
- }
-
- userTyping(channelId, userId, postParentId) {
- const name = this.nameFromId(userId);
-
- // Key representing a location where users can type
- const loc = channelId + postParentId;
-
- // Create entry
- if (!this.typingUsers[loc]) {
- this.typingUsers[loc] = {};
- }
-
- // If we already have this user, clear it's timeout to be deleted
- if (this.typingUsers[loc][name]) {
- clearTimeout(this.typingUsers[loc][name].timeout);
- }
-
- // Set the user and a timeout to remove it
- this.typingUsers[loc][name] = setTimeout(() => {
- Reflect.deleteProperty(this.typingUsers[loc], name);
- if (this.typingUsers[loc] === {}) {
- Reflect.deleteProperty(this.typingUsers, loc);
- }
- this.emitChange();
- }, parseInt(window.mm_config.TimeBetweenUserTypingUpdatesMilliseconds, 10));
- this.emitChange();
- }
-
- getUsersTyping(channelId, postParentId) {
- // Key representing a location where users can type
- const loc = channelId + postParentId;
-
- return this.typingUsers[loc];
- }
-
- userPosted(userId, channelId, postParentId) {
- const name = this.nameFromId(userId);
- const loc = channelId + postParentId;
-
- if (this.typingUsers[loc]) {
- clearTimeout(this.typingUsers[loc][name]);
- Reflect.deleteProperty(this.typingUsers[loc], name);
- if (this.typingUsers[loc] === {}) {
- Reflect.deleteProperty(this.typingUsers, loc);
- }
- this.emitChange();
- }
- }
-}
-
-var UserTypingStore = new UserTypingStoreClass();
-
-UserTypingStore.dispatchToken = AppDispatcher.register((payload) => {
- var action = payload.action;
-
- switch (action.type) {
- case ActionTypes.RECEIVED_POST:
- UserTypingStore.userPosted(action.post.user_id, action.post.channel_id, action.post.parent_id);
- break;
- case ActionTypes.USER_TYPING:
- UserTypingStore.userTyping(action.channelId, action.userId, action.postParentId);
- break;
- }
-});
-
-export default UserTypingStore;