|
1 | 1 | import { CreateGuildModal } from '../components/modal/guild/CreateGuildModal' |
2 | 2 | import { ModalType, useModalStore } from '../store/modalStore' |
3 | 3 | import { useGuildsList } from '../hooks/guild/useGuildsList' |
4 | | -import { MemberContainer } from '../components/guild/MemberContainer' |
5 | | -import { ListSwitch } from '../components/guild/ListSwitch' |
6 | | -import { ActionBtnList } from '../components/guild/ActionBtnList' |
7 | 4 | import { DetectMemberModal } from '../components/modal/guild/DetectMemberModal' |
8 | 5 | import { useGuildMember } from '../hooks/guild/useGuildMember' |
9 | | -import { Empty } from '../components/common/Empty' |
10 | 6 | import { DetailMemberModal } from '../components/modal/guild/DetailMemberModal' |
11 | 7 | import { Loading } from '../components/common/Loading' |
12 | 8 | import { useState } from 'react' |
13 | 9 | import { Member, NexonMembers } from '../types/guild' |
14 | | -import { IoArrowBack } from 'react-icons/io5' |
15 | 10 | import { useNavigate } from 'react-router-dom' |
16 | 11 | import { useGuildDetect } from '../hooks/guild/useGuildDetect' |
17 | 12 | import { findMainCharacter } from '../apis/character/characterController' |
18 | 13 | import { AlertModal } from '../components/modal/common/AlertModal' |
| 14 | +import { RoomHeader } from '../components/room/RoomHeader' |
| 15 | +import { RoomActionBar } from '../components/room/RoomActionBar' |
| 16 | +import { RoomContent } from '../components/room/RoomContent' |
19 | 17 |
|
20 | 18 | const Room = () => { |
21 | 19 | const { activeModal, openModal } = useModalStore() |
@@ -96,63 +94,31 @@ const Room = () => { |
96 | 94 | return ( |
97 | 95 | <div className="w-full min-h-screen bg-gray-50"> |
98 | 96 | <div className="max-w-7xl mx-auto px-4 py-5"> |
99 | | - <div className="flex items-center gap-4 mb-5"> |
100 | | - <button |
101 | | - onClick={() => navigate('/rooms')} |
102 | | - className="p-2 hover:bg-gray-100 rounded-lg transition-colors" |
103 | | - title="뒤로 가기"> |
104 | | - <IoArrowBack className="text-xl text-gray-600" /> |
105 | | - </button> |
106 | | - <div> |
107 | | - <h1 className="text-2xl font-bold text-gray-900">길드 관리</h1> |
108 | | - <p className="text-sm text-gray-600 mt-1">길드원 정보 관리</p> |
109 | | - </div> |
110 | | - </div> |
| 97 | + <RoomHeader onBack={() => navigate('/rooms')} /> |
111 | 98 |
|
112 | 99 | <div className="bg-white rounded-xl shadow-sm border border-gray-100"> |
113 | | - <div className="p-6 border-b border-gray-100"> |
114 | | - <div className="flex justify-between items-center"> |
115 | | - <ActionBtnList |
116 | | - showModal={showModal} |
117 | | - guildList={guildList} |
118 | | - handleDetect={handleDetect} |
119 | | - refreshMember={refreshMember} |
120 | | - /> |
121 | | - {guildList.length > 0 && <ListSwitch />} |
122 | | - </div> |
123 | | - </div> |
| 100 | + <RoomActionBar |
| 101 | + showModal={showModal} |
| 102 | + guildList={guildList} |
| 103 | + handleDetect={handleDetect} |
| 104 | + refreshMember={refreshMember as (guildId: number) => void} |
| 105 | + /> |
124 | 106 |
|
125 | | - <div className="p-6"> |
126 | | - <div className="min-h-[600px]"> |
127 | | - {nexonMembersLoading && ( |
128 | | - <div className="flex justify-center items-center h-full"> |
129 | | - <div className="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-blue-500 mb-4"></div> |
130 | | - <p className="text-gray-600 font-medium"> |
131 | | - 캐릭터 정보를 불러오는 중... |
132 | | - </p> |
133 | | - </div> |
134 | | - )} |
135 | | - {guildList.length > 0 ? ( |
136 | | - <MemberContainer |
137 | | - members={selectMember?.memberDetailResponse as Member[]} |
138 | | - allMembers={nexonMembers as NexonMembers[]} |
139 | | - masterName={selectMember?.guildMasterName} |
140 | | - guildName={selectMember?.guildName} |
141 | | - onSelect={handleMemberSelect} |
142 | | - isMainGuild={selectMember?.guildName === main} |
143 | | - searchCharacter={searchCharacter} |
144 | | - setSearchCharacter={handleSearchCharacter} |
145 | | - onDeleteGuild={ |
146 | | - selectMember?.guildId |
147 | | - ? () => deleteGuild(selectMember.guildId as number) |
148 | | - : undefined |
149 | | - } |
150 | | - /> |
151 | | - ) : ( |
152 | | - <Empty text="길드를 선택해주세요" /> |
153 | | - )} |
154 | | - </div> |
155 | | - </div> |
| 107 | + <RoomContent |
| 108 | + nexonMembersLoading={nexonMembersLoading as boolean} |
| 109 | + guildList={guildList} |
| 110 | + selectMember={selectMember as NexonMembers} |
| 111 | + nexonMembers={nexonMembers as NexonMembers[]} |
| 112 | + main={main} |
| 113 | + searchCharacter={searchCharacter} |
| 114 | + onMemberSelect={handleMemberSelect} |
| 115 | + onSearchCharacter={handleSearchCharacter} |
| 116 | + onDeleteGuild={ |
| 117 | + selectMember?.guildId |
| 118 | + ? () => deleteGuild(selectMember.guildId as number) |
| 119 | + : undefined |
| 120 | + } |
| 121 | + /> |
156 | 122 | </div> |
157 | 123 | </div> |
158 | 124 |
|
|
0 commit comments