diff --git a/components/core/Profile.js b/components/core/Profile.js index 28b2dc7c..407dd44f 100644 --- a/components/core/Profile.js +++ b/components/core/Profile.js @@ -239,9 +239,11 @@ function UserEntry({ message, external, url, - userOnline, + checkStatus, showStatusIndicator, }) { + const isOnline = checkStatus({ id: user.id }); + return (
{external ? ( @@ -254,8 +256,8 @@ function UserEntry({
)} @@ -274,8 +276,8 @@ function UserEntry({
@@ -310,13 +312,11 @@ export default class Profile extends React.Component { }).length, fetched: false, tab: this.props.tab, - isOnline: false, }; componentDidMount = () => { this._handleUpdatePage(); this.filterByVisibility(); - this.checkStatus(); }; componentDidUpdate = (prevProps) => { @@ -404,11 +404,9 @@ export default class Profile extends React.Component { }); }; - checkStatus = () => { - const activeUsers = this.props.activeUsers; - const userId = this.props.data?.id; - - this.setState({ isOnline: activeUsers && activeUsers.includes(userId) }); + checkStatus = ({ id }) => { + const { activeUsers } = this.props; + return activeUsers && activeUsers.includes(id); }; render() { @@ -473,12 +471,13 @@ export default class Profile extends React.Component { ) : null}
); + return ( { this.props.onAction({ @@ -532,7 +531,7 @@ export default class Profile extends React.Component { key={relation.id} user={relation.owner} button={button} - userOnline={this.state.isOnline} + checkStatus={this.checkStatus} showStatusIndicator={this.props.isAuthenticated} onClick={() => { this.props.onAction({ @@ -581,8 +580,10 @@ export default class Profile extends React.Component {
)} diff --git a/scenes/SceneDirectory.js b/scenes/SceneDirectory.js index cdb3d013..6407f4c0 100644 --- a/scenes/SceneDirectory.js +++ b/scenes/SceneDirectory.js @@ -112,7 +112,9 @@ const STYLES_NAME = css` text-overflow: ellipsis; `; -function UserEntry({ user, button, onClick, message, userOnline }) { +function UserEntry({ user, button, onClick, message, checkStatus }) { + const isOnline = checkStatus({ id: user.id }); + return (
@@ -120,8 +122,8 @@ function UserEntry({ user, button, onClick, message, userOnline }) {
@@ -159,11 +161,6 @@ export default class SceneDirectory extends React.Component { state = { copyValue: "", contextMenu: null, - isOnline: false, - }; - - componentDidMount = () => { - this.checkStatus(); }; _handleCopy = (e, value) => { @@ -196,11 +193,10 @@ export default class SceneDirectory extends React.Component { }); }; - checkStatus = () => { - const activeUsers = this.props.activeUsers; - const userId = this.props.data?.id; + checkStatus = ({ id }) => { + const { activeUsers } = this.props; - this.setState({ isOnline: activeUsers && activeUsers.includes(userId) }); + return activeUsers && activeUsers.includes(id); }; render() { @@ -240,7 +236,7 @@ export default class SceneDirectory extends React.Component { key={relation.id} user={relation.user} button={button} - userOnline={this.state.isOnline} + checkStatus={this.checkStatus} onClick={() => { this.props.onAction({ type: "NAVIGATE", @@ -289,7 +285,7 @@ export default class SceneDirectory extends React.Component { key={relation.id} user={relation.owner} button={button} - userOnline={this.state.isOnline} + checkStatus={this.checkStatus} onClick={() => { this.props.onAction({ type: "NAVIGATE",