Skip to content

Commit 739e888

Browse files
Fixes : Upon logging out user was still connected to that room. Fixed that
1 parent a322559 commit 739e888

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Diff for: client/src/Components/Header.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Runner from './Tabs/Runner';
77
import UsersList from './Tabs/UsersList';
88
import UserChat from './Tabs/UserChat';
99
import ProfilePage from './Tabs/Profile';
10+
import { useRoom } from '../context/RoomProvider';
1011

1112
enum Tab {
1213
Files = 'files',
@@ -18,6 +19,7 @@ enum Tab {
1819

1920
const Header: React.FC = () => {
2021
const { logout } = useUserContext();
22+
const { leaveRoom } = useRoom();
2123
const [activeTab, setActiveTab] = useState<Tab>(Tab.Files);
2224
const iconSize = 20;
2325
const { files, setActiveFile, activeFile, handleRenameFile, deleteFile, renamingFileId, newFileName, setRenamingFileId, handleAddFile, setNewFileName } = useFiles();
@@ -75,7 +77,10 @@ const Header: React.FC = () => {
7577
<div onClick={() => setActiveTab(Tab.Profile)} className='space-x-2 cursor-pointer' title='Profile'>
7678
<User size={iconSize} />
7779
</div>
78-
<div onClick={logout} className='space-x-2 cursor-pointer' title='Logout'>
80+
<div onClick={() => {
81+
leaveRoom();
82+
logout();
83+
}} className='space-x-2 cursor-pointer' title='Logout'>
7984
<LogOut size={iconSize} />
8085
</div>
8186
</div>

Diff for: client/src/context/RoomProvider.tsx

+8
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type RoomContextType = {
2929
currentRoom: string | null;
3030
createRoom: () => void;
3131
joinRoom: (roomId: string) => void;
32+
leaveRoom: () => void;
3233
deleteRoom: (roomId: string) => void;
3334
isValidRoom: (roomId: string) => Promise<boolean>;
3435
usersInRoom: UserInRoom[];
@@ -117,6 +118,12 @@ export const RoomProvider: React.FC<{ children: React.ReactNode }> = ({ children
117118
});
118119
};
119120

121+
const leaveRoom = () => {
122+
socket.emit('leaveRoom', {currentRoom});
123+
setInRoom(false);
124+
setCurrentRoom(null);
125+
}
126+
120127
const deleteRoom = async (roomId: string) => {
121128
try {
122129
const { data } = await instance.delete(`/api/code/room/${roomId}`);
@@ -151,6 +158,7 @@ export const RoomProvider: React.FC<{ children: React.ReactNode }> = ({ children
151158
deleteRoom,
152159
isValidRoom,
153160
usersInRoom,
161+
leaveRoom
154162
};
155163

156164
return <RoomContext.Provider value={value}>{children}</RoomContext.Provider>;

0 commit comments

Comments
 (0)