refactor: remove `reloadRoomAfterLogin` from meteor (#35936)
parent
8de5b66aff
commit
ff205b7675
@ -0,0 +1,37 @@ |
||||
import type { IUser } from '@rocket.chat/core-typings'; |
||||
import { useRouter } from '@rocket.chat/ui-contexts'; |
||||
import { useEffect, useRef } from 'react'; |
||||
|
||||
import { LegacyRoomManager } from '../../../../app/ui-utils/client'; |
||||
import { roomCoordinator } from '../../../lib/rooms/roomCoordinator'; |
||||
|
||||
export const useReloadAfterLogin = (user: IUser | null) => { |
||||
const usernameRef = useRef<string>(); |
||||
const router = useRouter(); |
||||
|
||||
useEffect(() => { |
||||
const isNewUser = !usernameRef.current && user?.username; |
||||
const usernameChanged = user?.username && usernameRef.current !== user.username; |
||||
|
||||
if (isNewUser || usernameChanged) { |
||||
usernameRef.current = user.username; |
||||
|
||||
LegacyRoomManager.closeAllRooms(); |
||||
|
||||
const routeName = router.getRouteName(); |
||||
if (!routeName) { |
||||
return; |
||||
} |
||||
|
||||
const roomType = roomCoordinator.getRouteNameIdentifier(routeName); |
||||
if (roomType) { |
||||
router.navigate({ |
||||
name: routeName, |
||||
params: router.getRouteParameters(), |
||||
search: router.getSearchParameters(), |
||||
}); |
||||
} |
||||
} |
||||
// Purposely not cleaning up usernameRef - it needs to be persistent when logging out/in
|
||||
}, [router, user?.username]); |
||||
}; |
||||
@ -1,28 +0,0 @@ |
||||
import { Meteor } from 'meteor/meteor'; |
||||
import { Tracker } from 'meteor/tracker'; |
||||
|
||||
import { LegacyRoomManager } from '../../app/ui-utils/client'; |
||||
import { roomCoordinator } from '../lib/rooms/roomCoordinator'; |
||||
import { router } from '../providers/RouterProvider'; |
||||
|
||||
Meteor.startup(() => { |
||||
// Reload rooms after login
|
||||
let currentUsername: string | undefined = undefined; |
||||
Tracker.autorun(() => { |
||||
const user = Meteor.user(); |
||||
if (currentUsername === undefined && (user ? user.username : undefined)) { |
||||
currentUsername = user?.username; |
||||
LegacyRoomManager.closeAllRooms(); |
||||
// Reload only if the current route is a channel route
|
||||
const routeName = router.getRouteName(); |
||||
if (!routeName) { |
||||
return; |
||||
} |
||||
const roomType = roomCoordinator.getRouteNameIdentifier(routeName); |
||||
if (roomType) { |
||||
router; // TODO: fix this
|
||||
// router.navigate(0);
|
||||
} |
||||
} |
||||
}); |
||||
}); |
||||
Loading…
Reference in new issue