Skip to content

Commit

Permalink
feat: 프로필 이미지 데이터 없는 경우 기본 이미지 노출 #85
Browse files Browse the repository at this point in the history
  • Loading branch information
yemsu committed Jul 24, 2024
1 parent cdfaca9 commit d83d05c
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 11 deletions.
Binary file added public/images/common/default-profile-image.webp
Binary file not shown.
13 changes: 11 additions & 2 deletions src/shared/ui/header/ui/HeaderMyDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,13 @@ import { Dropdown } from '@/shared/ui/dropdown'

interface HeaderMyDropdownProps {
nickname: string
profileImage: string
}

export const HeaderMyDropdown = ({ nickname }: HeaderMyDropdownProps) => {
export const HeaderMyDropdown = ({
nickname,
profileImage,
}: HeaderMyDropdownProps) => {
const router = useRouter()
const path = usePathname()
const { logout } = useAuthStore()
Expand All @@ -30,7 +34,12 @@ export const HeaderMyDropdown = ({ nickname }: HeaderMyDropdownProps) => {
return (
<Dropdown.Container>
<Dropdown.Trigger title={`${nickname} (드롭다운 메뉴 열기)`}>
<MemberProfileImage nickname={nickname} onlyImg={true} isLink={false} />
<MemberProfileImage
nickname={nickname}
profileImage={profileImage}
onlyImg={true}
isLink={false}
/>
</Dropdown.Trigger>
<Dropdown.ContentBox>
<Dropdown.MenuList className="text-center">
Expand Down
1 change: 1 addition & 0 deletions src/shared/ui/header/ui/Notifications.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export const Notifications = ({ initialPagingData }: NotificationsProps) => {
>
<MemberProfileImage
nickname="임시닉네임"
profileImage=""
onlyImg={true}
className="pr-3sm"
/>
Expand Down
3 changes: 2 additions & 1 deletion src/widget/comment/ui/CommentItemContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export const CommentItemContent = ({
const {
content,
createdAt,
member: { nickname },
member: { nickname, profileImage },
} = comment

return (
Expand All @@ -35,6 +35,7 @@ export const CommentItemContent = ({
{type !== 'myComment' && (
<MemberProfileImage
nickname={nickname}
profileImage={profileImage}
size={type === 'reply' ? 'sm' : 'md'}
className="pr-1md"
onlyImg={true}
Expand Down
33 changes: 27 additions & 6 deletions src/widget/member-profile/ui/MemberProfileImage.tsx
Original file line number Diff line number Diff line change
@@ -1,29 +1,42 @@
import Image from 'next/image'
import Link from 'next/link'
import { PAGE_PATH } from '@/shared/config'
import { cn } from '@/shared/lib'
import { Sizes_3 } from '@/shared/types'

export interface MemberProfileImageProps {
nickname: string
profileImage: string
size?: Sizes_3
onlyImg?: boolean
isLink?: boolean
className?: string
}

const sizes = {
sm: 22,
md: 36,
lg: 160,
}

const sizeStyles = {
sm: 'h-[22px] w-[22px]',
md: 'h-[36px] w-[36px]',
lg: 'h-[160px] w-[160px]',
sm: `h-[${sizes.sm}px] w-[${sizes.sm}px]`,
md: `h-[${sizes.md}px] w-[${sizes.md}px]`,
lg: `h-[${sizes.lg}px] w-[${sizes.lg}px]`,
}

export const MemberProfileImage = ({
nickname,
profileImage,
size = 'md',
onlyImg = false,
isLink = true,
className,
}: MemberProfileImageProps) => {
const profileImageSrc = profileImage
? `${process.env.CONT_URL}/profile/${profileImage}`
: '/images/common/default-profile-image.webp'

return (
<Wrapper
isLink={isLink}
Expand All @@ -33,12 +46,20 @@ export const MemberProfileImage = ({
className,
)}
>
<span
<div
className={cn(
'block rounded-full border border-gray-70 bg-point',
'relative block overflow-hidden rounded-full border border-gray-70',
sizeStyles[size],
)}
></span>
>
<Image
src={profileImageSrc}
alt=""
fill
sizes={`${sizes[size]}px`}
style={{ objectFit: 'cover' }}
/>
</div>
{!onlyImg && <span>{nickname}</span>}
</Wrapper>
)
Expand Down
8 changes: 6 additions & 2 deletions src/widget/schematic-list/ui/SchemeListItemInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const infoStyles = {
export const SchemeListItemInfo = ({
direction,
data: {
member: { nickname },
member: { nickname, profileImage },
createdAt,
},
}: SchemeListItemInfoProps) => {
Expand All @@ -37,7 +37,11 @@ export const SchemeListItemInfo = ({
<div className={infoStyles[direction].wrap}>
<div className="flex items-center gap-2sm">
{direction === 'column' ? (
<MemberProfileImage nickname={nickname} size="sm" />
<MemberProfileImage
nickname={nickname}
profileImage={profileImage}
size="sm"
/>
) : (
<PostMetaInfo type="nickname" data={nickname} />
)}
Expand Down

0 comments on commit d83d05c

Please sign in to comment.