File size: 1,622 Bytes
4bae792
 
 
 
 
 
 
aa61a49
4bae792
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91939c2
4bae792
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aa61a49
4bae792
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { useSelector, useDispatch } from "react-redux";
import CreateSpaceGuide from "./createspace/CreateSpaceGuide";
import SettingsMenu from "./settings/SettingsMenu";
import DMList from "./roomlist/DMList";
import SpaceRoomList from "./roomlist/SpaceRoomList";
import { setActiveRoom, setSearchQuery } from "../store/slices/appSlice";

function RoomList({ activeView, activeSpace, activeRoom, searchQuery, createTab, onCreateTabChange, onCreateRoomClick }) {
  const dispatch = useDispatch();
  const appState = useSelector((state) => state.app);

  const view = activeView || appState.activeView;
  const space = activeSpace || appState.activeSpace;
  const room = activeRoom || appState.activeRoom;
  const query = searchQuery !== undefined ? searchQuery : appState.searchQuery;

  const handleSetActiveRoom = (roomId) => {
    dispatch(setActiveRoom(roomId));
  };

  const handleSetSearchQuery = (query) => {
    dispatch(setSearchQuery(query));
  };

  if (view === "createSpace") {
    return <CreateSpaceGuide onTabChange={onCreateTabChange} />;
  }

  if (view === "settings") {
    return <SettingsMenu />;
  }

  if (view === "messages") {
    return (
      <DMList
        activeRoom={room}
        setActiveRoom={handleSetActiveRoom}
        searchQuery={query}
        setSearchQuery={handleSetSearchQuery}
      />
    );
  }

  return (
    <SpaceRoomList
      activeSpace={space}
      activeRoom={room}
      setActiveRoom={handleSetActiveRoom}
      searchQuery={query}
      setSearchQuery={handleSetSearchQuery}
      onCreateRoomClick={onCreateRoomClick}
    />
  );
}

export default RoomList;