fix: app won't open archived channels (#5135)

* getSubscriptionByRoomId, then if null do the request

* add getRoomByTypeAndName

* minor tweak

---------

Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
This commit is contained in:
Reinaldo Neto 2023-08-01 11:45:56 -03:00 committed by GitHub
parent 9ee26916b5
commit 5c5ff2d51f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 5 deletions

View File

@ -7,7 +7,9 @@ import {
SubscriptionType,
IUser,
IAvatarSuggestion,
IProfileParams
IProfileParams,
RoomType,
IServerRoom
} from '../../definitions';
import { ISpotlight } from '../../definitions/ISpotlight';
import { TEAM_TYPE } from '../../definitions/ITeam';
@ -334,6 +336,9 @@ export const getRoomInfo = (roomId: string) =>
// RC 0.72.0
sdk.get('rooms.info', { roomId });
export const getRoomByTypeAndName = (roomType: RoomType, roomName: string): Promise<IServerRoom> =>
sdk.methodCallWrapper('getRoomByTypeAndName', roomType, roomName);
export const getVisitorInfo = (visitorId: string) =>
// RC 2.3.0
sdk.get('livechat/visitors.info', { visitorId });

View File

@ -27,6 +27,7 @@ import { IApplicationState, IServerRoom, IUser, SubscriptionType } from '../../d
import styles from './styles';
import Options from './Options';
import { Services } from '../../lib/services';
import { getSubscriptionByRoomId } from '../../lib/database/services/Subscription';
interface IDirectoryViewProps {
navigation: CompositeNavigationProp<
@ -163,13 +164,20 @@ class DirectoryView extends React.Component<IDirectoryViewProps, IDirectoryViewS
if (result.success) {
this.goRoom({ rid: result.room._id, name: item.username, t: SubscriptionType.DIRECT });
}
} else if (['p', 'c'].includes(item.t) && !item.teamMain) {
const result = await Services.getRoomInfo(item._id);
if (result.success) {
return;
}
const subscription = await getSubscriptionByRoomId(item._id);
if (subscription) {
this.goRoom(subscription);
return;
}
if (['p', 'c'].includes(item.t) && !item.teamMain) {
const result = await Services.getRoomByTypeAndName(item.t, item.name || item.fname);
if (result) {
this.goRoom({
rid: item._id,
name: item.name,
joinCodeRequired: result.room.joinCodeRequired,
joinCodeRequired: result.joinCodeRequired,
t: item.t as SubscriptionType,
search: true
});