1- import type { RoomType } from '@rocket.chat/core-typings' ;
1+ import type { ISubscription , RoomType } from '@rocket.chat/core-typings' ;
22import { Box , States , StatesIcon , StatesSubtitle , StatesTitle } from '@rocket.chat/fuselage' ;
33import { Header } from '@rocket.chat/ui-client' ;
4- import { useEndpoint , useStream , useUserId } from '@rocket.chat/ui-contexts' ;
5- import { useQuery } from '@tanstack/react-query' ;
4+ import { useStream , useUserId } from '@rocket.chat/ui-contexts' ;
65import type { ReactElement } from 'react' ;
76import { lazy , Suspense , useEffect } from 'react' ;
87import { useTranslation } from 'react-i18next' ;
98
109import NotSubscribedRoom from './NotSubscribedRoom' ;
1110import RoomSkeleton from './RoomSkeleton' ;
1211import { useOpenRoom } from './hooks/useOpenRoom' ;
13- import { LegacyRoomManager } from '../../../app/ui-utils/client' ;
1412import { SubscriptionsCachedStore } from '../../cachedStores' ;
1513import { getErrorMessage } from '../../lib/errorHandling' ;
1614import { NotAuthorizedError } from '../../lib/errors/NotAuthorizedError' ;
1715import { NotSubscribedToRoomError } from '../../lib/errors/NotSubscribedToRoomError' ;
1816import { OldUrlRoomError } from '../../lib/errors/OldUrlRoomError' ;
1917import { RoomNotFoundError } from '../../lib/errors/RoomNotFoundError' ;
20- import { subscriptionsQueryKeys } from '../../lib/queryKeys' ;
21- import { mapSubscriptionFromApi } from '../../lib/utils/mapSubscriptionFromApi' ;
2218
2319const RoomProvider = lazy ( ( ) => import ( './providers/RoomProvider' ) ) ;
2420const RoomNotFound = lazy ( ( ) => import ( './RoomNotFound' ) ) ;
@@ -34,47 +30,23 @@ type RoomOpenerProps = {
3430const RoomOpenerEmbedded = ( { type, reference } : RoomOpenerProps ) : ReactElement => {
3531 const { data, error, isSuccess, isError, isLoading } = useOpenRoom ( { type, reference } ) ;
3632 const uid = useUserId ( ) ;
37-
38- const getSubscription = useEndpoint ( 'GET' , '/v1/subscriptions.getOne' ) ;
39-
4033 const subscribeToNotifyUser = useStream ( 'notify-user' ) ;
4134
4235 const rid = data ?. rid ;
43- const { data : subscriptionData , refetch } = useQuery ( {
44- queryKey : rid ? subscriptionsQueryKeys . subscription ( rid ) : [ ] ,
45- queryFn : ( ) => {
46- if ( ! rid ) {
47- throw new Error ( 'Room not found' ) ;
48- }
49- return getSubscription ( { roomId : rid } ) ;
50- } ,
51- enabled : ! ! rid ,
52- } ) ;
5336
5437 useEffect ( ( ) => {
55- if ( ! subscriptionData ?. subscription ) {
38+ if ( ! uid || ! rid ) {
5639 return ;
5740 }
5841
59- SubscriptionsCachedStore . upsertSubscription ( mapSubscriptionFromApi ( subscriptionData . subscription ) ) ;
60-
61- // yes this must be done here, this is already called in useOpenRoom, but it skips subscription streams because of the subscriptions list is empty
62- // now that we inserted the subscription, we can open the room
63- LegacyRoomManager . open ( { typeName : type + reference , rid : subscriptionData . subscription . rid } ) ;
64- } , [ subscriptionData , type , rid , reference ] ) ;
65-
66- useEffect ( ( ) => {
67- if ( ! uid ) {
68- return ;
69- }
7042 return subscribeToNotifyUser ( `${ uid } /subscriptions-changed` , ( event , sub ) => {
7143 if ( sub . rid !== rid || event === 'removed' ) {
7244 return ;
7345 }
7446
75- refetch ( ) ;
47+ SubscriptionsCachedStore . upsertSubscription ( sub as ISubscription ) ;
7648 } ) ;
77- } , [ refetch , rid , subscribeToNotifyUser , uid ] ) ;
49+ } , [ rid , subscribeToNotifyUser , uid ] ) ;
7850
7951 const { t } = useTranslation ( ) ;
8052
0 commit comments