Skip to content

Commit

Permalink
Regression: Fix RoomItem's loading status (#4835)
Browse files Browse the repository at this point in the history
  • Loading branch information
dnlsilva authored and diegolmello committed Jan 24, 2023
1 parent f34b5b5 commit 9cf6981
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 5 deletions.
8 changes: 3 additions & 5 deletions app/containers/RoomItem/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import React, { useEffect, useReducer, useRef } from 'react';
import { Subscription } from 'rxjs';

import I18n from '../../i18n';
import { useAppSelector } from '../../lib/hooks';
import { getUserPresence } from '../../lib/methods';
import { isGroupChat } from '../../lib/methods/helpers';
import { formatDate } from '../../lib/methods/helpers/room';
import { IRoomItemContainerProps } from './interfaces';
import RoomItem from './RoomItem';
import { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from './styles';
import { useUserStatus } from './useUserStatus';

export { ROW_HEIGHT, ROW_HEIGHT_CONDENSED };

Expand Down Expand Up @@ -42,11 +42,11 @@ const RoomItemContainer = React.memo(
const isRead = getIsRead(item);
const date = item.roomUpdatedAt && formatDate(item.roomUpdatedAt);
const alert = item.alert || item.tunread?.length;
const connected = useAppSelector(state => state.meteor.connected);
const userStatus = useAppSelector(state => state.activeUsers[id || '']?.status);
const [_, forceUpdate] = useReducer(x => x + 1, 1);
const roomSubscription = useRef<Subscription | null>(null);

const { connected, status } = useUserStatus(item.t, item?.visitor?.status, id);

useEffect(() => {
const init = () => {
if (item?.observe) {
Expand Down Expand Up @@ -85,8 +85,6 @@ const RoomItemContainer = React.memo(
accessibilityLabel = `, ${I18n.t('last_message')} ${date}`;
}

const status = item.t === 'l' ? item.visitor?.status || item.v?.status : userStatus;

return (
<RoomItem
name={name}
Expand Down
24 changes: 24 additions & 0 deletions app/containers/RoomItem/useUserStatus.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { TUserStatus } from '../../definitions';
import { useAppSelector } from '../../lib/hooks';
import { RoomTypes } from '../../lib/methods';

export const useUserStatus = (
type: RoomTypes,
liveChatStatus?: TUserStatus,
id?: string
): { connected: boolean; status: TUserStatus } => {
const connected = useAppSelector(state => state.meteor.connected);
const userStatus = useAppSelector(state => state.activeUsers[id || '']?.status);
let status = 'loading';
if (connected) {
if (type === 'd') {
status = userStatus || 'loading';
} else if (type === 'l' && liveChatStatus) {
status = liveChatStatus;
}
}
return {
connected,
status: status as TUserStatus
};
};

0 comments on commit 9cf6981

Please sign in to comment.