[FIX] Omnichannel chat is broken the first time is taken (#4037)

* [FIX] Omnichannel chat is broken the first time is taken

* refactor how to get a room from db
This commit is contained in:
Reinaldo Neto 2022-04-18 16:35:50 -03:00 committed by GitHub
parent 0a67cb8096
commit 3c53d48a3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 27 additions and 9 deletions

View File

@ -16,7 +16,15 @@ import RoomTypeIcon from '../../containers/RoomTypeIcon';
import SafeAreaView from '../../containers/SafeAreaView';
import Status from '../../containers/Status';
import StatusBar from '../../containers/StatusBar';
import { IApplicationState, IBaseScreen, IRoom, ISubscription, IUser, TSubscriptionModel } from '../../definitions';
import {
IApplicationState,
IBaseScreen,
IRoom,
ISubscription,
IUser,
SubscriptionType,
TSubscriptionModel
} from '../../definitions';
import { withDimensions } from '../../dimensions';
import I18n from '../../i18n';
import database from '../../lib/database';
@ -33,6 +41,7 @@ import styles from './styles';
import { ERoomType } from '../../definitions/ERoomType';
import { E2E_ROOM_TYPES, SWITCH_TRACK_COLOR, themes } from '../../lib/constants';
import { compareServerVersion } from '../../lib/methods/helpers/compareServerVersion';
import { getSubscriptionByRoomId } from '../../lib/database/services/Subscription';
interface IRoomActionsViewProps extends IBaseScreen<ChatsStackParamList, 'RoomActionsView'> {
userId: string;
@ -139,15 +148,24 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
this.mounted = true;
const { room, member } = this.state;
if (room.rid) {
if (!room.id && !this.isOmnichannelPreview) {
try {
const result = await RocketChat.getChannelInfo(room.rid);
if (result.success) {
// @ts-ignore
this.setState({ room: { ...result.channel, rid: result.channel._id } });
if (!room.id) {
if (room.t === SubscriptionType.OMNICHANNEL) {
if (!this.isOmnichannelPreview) {
const result = await getSubscriptionByRoomId(room.rid);
if (result) {
this.setState({ room: result });
}
}
} else {
try {
const result = await RocketChat.getChannelInfo(room.rid);
if (result.success) {
// @ts-ignore
this.setState({ room: { ...result.channel, rid: result.channel._id } });
}
} catch (e) {
log(e);
}
} catch (e) {
log(e);
}
}