11import React , { useState , useEffect } from "react" ;
22import { useRouter } from "next/router" ;
3+ import SkeletonUser from "./skeletonUser" ;
34import { MemberType , UserType } from "./type" ;
45import { getMembers } from "@/api/members" ;
56import { getUserInfo } from "@/api/user" ;
@@ -48,17 +49,16 @@ const HeaderBebridge: React.FC<HeaderBebridgeProps> = ({ dashboardId }) => {
4849 useEffect ( ( ) => {
4950 const fetchMembers = async ( ) => {
5051 try {
51- if ( dashboardId ) {
52- const members = await getMembers ( dashboardId ) ;
53- setMembers ( members ) ;
54- }
52+ const members = await getMembers ( dashboardId ) ;
53+ setMembers ( members ) ;
5554 } catch ( error ) {
5655 console . error ( "멤버 불러오기 실패:" , error ) ;
5756 } finally {
5857 setIsLoading ( false ) ;
5958 }
6059 } ;
6160
61+ if ( ! dashboardId ) return ;
6262 fetchMembers ( ) ;
6363 } , [ dashboardId ] ) ;
6464
@@ -80,7 +80,7 @@ const HeaderBebridge: React.FC<HeaderBebridgeProps> = ({ dashboardId }) => {
8080 < div className = "flex gap-[6px] md:gap-[16px] pr-[40px]" >
8181 < button
8282 onClick = { goToDashboardEdit }
83- className = "flex items-center justify-center w-[49px] h-[30px] md:w-[85px] md:h-[36px] lg:w-[88px] lg:h-[40px] rounded-[8px] border-[1px] border-[#D9D9D9] gap-[10px] cursor-pointer"
83+ className = "flex items-center justify-center w-[49px] h-[30px] md:w-[85px] md:h-[36px] lg:w-[88px] lg:h-[40px] rounded-[8px] border border-[#D9D9D9] gap-[10px] cursor-pointer"
8484 >
8585 < img
8686 src = "/svgs/settings.svg"
@@ -92,7 +92,7 @@ const HeaderBebridge: React.FC<HeaderBebridgeProps> = ({ dashboardId }) => {
9292
9393 < button
9494 onClick = { openInviteModal }
95- className = "flex items-center justify-center w-[73px] h-[30px] md:w-[109px] md:h-[36px] lg:w-[116px] lg:h-[40px] rounded-[8px] border-[1px] border-[#D9D9D9] gap-[10px] cursor-pointer"
95+ className = "flex items-center justify-center w-[73px] h-[30px] md:w-[109px] md:h-[36px] lg:w-[116px] lg:h-[40px] rounded-[8px] border border-[#D9D9D9] gap-[10px] cursor-pointer"
9696 >
9797 < img
9898 src = "/svgs/add-box.svg"
@@ -107,7 +107,7 @@ const HeaderBebridge: React.FC<HeaderBebridgeProps> = ({ dashboardId }) => {
107107 { /*4개의 프로필 아이콘 표시, 나머지 멤버 숫자 +n 아이콘으로 표시*/ }
108108 < div className = "flex -space-x-3" >
109109 { isLoading ? (
110- < p className = "font-16m text-gray1" > 로딩 중... </ p >
110+ < SkeletonUser / >
111111 ) : (
112112 < >
113113 { members . slice ( 0 , 4 ) . map ( ( member ) => (
@@ -138,23 +138,27 @@ const HeaderBebridge: React.FC<HeaderBebridgeProps> = ({ dashboardId }) => {
138138 </ div >
139139
140140 { /*유저 프로필 아이콘 & 유저 닉네임*/ }
141- { user && (
142- < div className = "flex items-center pr-[10px] md:pr-[30px] lg:pr-[80px] gap-[12px]" >
143- < div className = "w-[34px] h-[34px] md:w-[38px] md:h-[38px]" >
144- { user . profileImageUrl ? (
145- < img
146- src = { user . profileImageUrl }
147- alt = "유저 프로필 아이콘"
148- className = "w-full h-full rounded-full object-cover"
149- />
150- ) : (
151- < RandomProfile name = { user . nickname } />
152- ) }
141+ { isLoading ? (
142+ < SkeletonUser />
143+ ) : (
144+ user && (
145+ < div className = "flex items-center pr-[10px] md:pr-[30px] lg:pr-[80px] gap-[12px]" >
146+ < div className = "w-[34px] h-[34px] md:w-[38px] md:h-[38px]" >
147+ { user . profileImageUrl ? (
148+ < img
149+ src = { user . profileImageUrl }
150+ alt = "유저 프로필 아이콘"
151+ className = "w-full h-full rounded-full object-cover"
152+ />
153+ ) : (
154+ < RandomProfile name = { user . nickname } />
155+ ) }
156+ </ div >
157+ < span className = "hidden md:block text-black3 md:text-base md:font-medium" >
158+ { user . nickname }
159+ </ span >
153160 </ div >
154- < span className = "hidden md:block text-black3 md:text-base md:font-medium" >
155- { user . nickname }
156- </ span >
157- </ div >
161+ )
158162 ) }
159163 </ div >
160164 </ div >
0 commit comments