diff --git a/src/components/views/avatars/MemberPresenceAvatar.js b/src/components/views/avatars/MemberPresenceAvatar.js index 648b798b67a..49cfee2cffd 100644 --- a/src/components/views/avatars/MemberPresenceAvatar.js +++ b/src/components/views/avatars/MemberPresenceAvatar.js @@ -25,6 +25,7 @@ import dispatcher from "../../../dispatcher"; import * as ContextualMenu from "../../structures/ContextualMenu"; import SettingsStore from "../../../settings/SettingsStore"; +// This is an avatar with presence information and controls on it. module.exports = React.createClass({ displayName: 'MemberPresenceAvatar', @@ -44,8 +45,15 @@ module.exports = React.createClass({ }, getInitialState: function() { - const presenceState = this.props.member.user.presence; - const presenceMessage = this.props.member.user.presenceStatusMsg; + let presenceState = null; + let presenceMessage = null; + + // RoomMembers do not necessarily have a user. + if (this.props.member.user) { + presenceState = this.props.member.user.presence; + presenceMessage = this.props.member.user.presenceStatusMsg; + } + return { status: presenceState, message: presenceMessage, @@ -109,6 +117,8 @@ module.exports = React.createClass({ }); e.stopPropagation(); + + // XXX NB the following assumes that user is non-null, which is not valid // const presenceState = this.props.member.user.presence; // const presenceLastActiveAgo = this.props.member.user.lastActiveAgo; // const presenceLastTs = this.props.member.user.lastPresenceTs; @@ -133,7 +143,8 @@ module.exports = React.createClass({ ); // LABS: Disable presence management functions for now - if (!SettingsStore.isFeatureEnabled("feature_presence_management")) { + // Also disable the presence information if there's no status information + if (!SettingsStore.isFeatureEnabled("feature_presence_management") || !this.state.status) { statusNode = null; onClickFn = null; }