refactor: remove `reloadRoomAfterLogin` from meteor (#35936)

feat/contextual-bar-accessibility
Júlia Jaeger Foresti 8 months ago committed by GitHub
parent 8de5b66aff
commit ff205b7675
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      apps/meteor/client/providers/UserProvider/UserProvider.tsx
  2. 37
      apps/meteor/client/providers/UserProvider/hooks/useReloadAfterLogin.ts
  3. 1
      apps/meteor/client/startup/index.ts
  4. 28
      apps/meteor/client/startup/reloadRoomAfterLogin.ts

@ -10,6 +10,7 @@ import { useEffect, useMemo, useRef } from 'react';
import { useClearRemovedRoomsHistory } from './hooks/useClearRemovedRoomsHistory';
import { useDeleteUser } from './hooks/useDeleteUser';
import { useEmailVerificationWarning } from './hooks/useEmailVerificationWarning';
import { useReloadAfterLogin } from './hooks/useReloadAfterLogin';
import { useUpdateAvatar } from './hooks/useUpdateAvatar';
import { Subscriptions, Rooms } from '../../../app/models/client';
import { getUserPreference } from '../../../app/utils/client';
@ -64,6 +65,7 @@ const UserProvider = ({ children }: UserProviderProps): ReactElement => {
useDeleteUser();
useUpdateAvatar();
useIdleConnection(userId);
useReloadAfterLogin(user);
const contextValue = useMemo(
(): ContextType<typeof UserContext> => ({

@ -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]);
};

@ -10,7 +10,6 @@ import './iframeCommands';
import './incomingMessages';
import './messageObserve';
import './messageTypes';
import './reloadRoomAfterLogin';
import './roles';
import './routes';
import './slashCommands';

@ -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…
Cancel
Save