Feat: fix profile avatars in comments

This reverts the change to the comment content body component in the previous commit.
This commit is contained in:
Aaron William Po
2023-11-06 15:56:25 -05:00
parent fe778f83e1
commit 3b973252fc
4 changed files with 72 additions and 72 deletions

View File

@@ -4,7 +4,7 @@ import { FC, useState } from 'react';
import { useInView } from 'react-intersection-observer'; import { useInView } from 'react-intersection-observer';
import { z } from 'zod'; import { z } from 'zod';
import CreateCommentValidationSchema from '@/services/schema/CommentSchema/CreateCommentValidationSchema'; import CreateCommentValidationSchema from '@/services/schema/CommentSchema/CreateCommentValidationSchema';
import Image from 'next/image';
import CommentContentBody from './CommentContentBody'; import CommentContentBody from './CommentContentBody';
import EditCommentBody from './EditCommentBody'; import EditCommentBody from './EditCommentBody';
@@ -28,19 +28,36 @@ const CommentCardBody: FC<CommentCardProps> = ({
}) => { }) => {
const [inEditMode, setInEditMode] = useState(false); const [inEditMode, setInEditMode] = useState(false);
const { userAvatar } = comment.postedBy;
return ( return (
<div ref={ref}> <div ref={ref} className="flex">
{!inEditMode ? ( <div className="w-[12%] py-4 justify-center">
<CommentContentBody comment={comment} setInEditMode={setInEditMode} /> <div className="px-1 mask mask-circle">
) : ( {!userAvatar ? null : (
<EditCommentBody <Image
comment={comment} src={userAvatar.path}
mutate={mutate} alt="user avatar"
setInEditMode={setInEditMode} width={1000}
handleDeleteRequest={handleDeleteRequest} height={1000}
handleEditRequest={handleEditRequest} className="h-full w-full"
/> />
)} )}
</div>
</div>
<div className="w-[88%] h-full">
{!inEditMode ? (
<CommentContentBody comment={comment} setInEditMode={setInEditMode} />
) : (
<EditCommentBody
comment={comment}
mutate={mutate}
setInEditMode={setInEditMode}
handleDeleteRequest={handleDeleteRequest}
handleEditRequest={handleEditRequest}
/>
)}
</div>
</div> </div>
); );
}; };

View File

@@ -5,7 +5,7 @@ import { Dispatch, FC, SetStateAction, useContext } from 'react';
import { Rating } from 'react-daisyui'; import { Rating } from 'react-daisyui';
import Link from 'next/link'; import Link from 'next/link';
import CommentQueryResult from '@/services/schema/CommentSchema/CommentQueryResult'; import CommentQueryResult from '@/services/schema/CommentSchema/CommentQueryResult';
import Image from 'next/image';
import { z } from 'zod'; import { z } from 'zod';
import CommentCardDropdown from './CommentCardDropdown'; import CommentCardDropdown from './CommentCardDropdown';
@@ -19,65 +19,47 @@ const CommentContentBody: FC<CommentContentBodyProps> = ({ comment, setInEditMod
const timeDistance = useTimeDistance(new Date(comment.createdAt)); const timeDistance = useTimeDistance(new Date(comment.createdAt));
return ( return (
<div className="card-body animate-in fade-in-10"> <div className="pr-3 py-4 animate-in fade-in-10 space-y-1">
<div className="flex space-x-5"> <div className="space-y-2">
<div className="w-2/12 avatar display flex items-center justify-center"> <div className="flex flex-row justify-between">
<div className="w-28 h-28 rounded-full ring ring-primary">
{comment.postedBy.userAvatar ? (
<Image
src={comment.postedBy.userAvatar.path}
alt={comment.postedBy.userAvatar.alt}
width={200}
height={200}
/>
) : (
<div className="flex items-center justify-center w-full h-full text-2xl font-bold text-white bg-primary rounded-full">
{comment.postedBy.username[0]}
</div>
)}
</div>
</div>
<div className="w-10/12 space-y-2">
<div className="flex flex-row justify-between">
<div>
<p className="font-semibold sm:text-2xl">
<Link href={`/users/${comment.postedBy.id}`} className="link-hover link">
{comment.postedBy.username}
</Link>
</p>
<span className="italic">
posted{' '}
<time
className="tooltip tooltip-bottom"
data-tip={format(new Date(comment.createdAt), 'MM/dd/yyyy')}
>
{timeDistance}
</time>{' '}
ago
</span>
</div>
{user && (
<CommentCardDropdown comment={comment} setInEditMode={setInEditMode} />
)}
</div>
<div className="space-y-1">
<Rating value={comment.rating}>
{Array.from({ length: 5 }).map((val, index) => (
<Rating.Item
name="rating-1"
className="mask mask-star cursor-default"
disabled
aria-disabled
key={index}
/>
))}
</Rating>
</div>
<div> <div>
<p>{comment.content}</p> <p className="font-semibold sm:text-2xl">
<Link href={`/users/${comment.postedBy.id}`} className="link-hover link">
{comment.postedBy.username}
</Link>
</p>
<span className="italic">
posted{' '}
<time
className="tooltip tooltip-bottom"
data-tip={format(new Date(comment.createdAt), 'MM/dd/yyyy')}
>
{timeDistance}
</time>{' '}
ago
</span>
</div> </div>
{user && (
<CommentCardDropdown comment={comment} setInEditMode={setInEditMode} />
)}
</div> </div>
<div className="space-y-1">
<Rating value={comment.rating}>
{Array.from({ length: 5 }).map((val, index) => (
<Rating.Item
name="rating-1"
className="mask mask-star cursor-default"
disabled
aria-disabled
key={index}
/>
))}
</Rating>
</div>
</div>
<div>
<p className="text-sm">{comment.content}</p>
</div> </div>
</div> </div>
); );

View File

@@ -81,7 +81,7 @@ const EditCommentBody: FC<EditCommentBodyProps> = ({
}; };
return ( return (
<div className="card-body animate-in fade-in-10"> <div className="pr-3 py-4 animate-in fade-in-10">
<form onSubmit={handleSubmit(onEdit)} className="space-y-3"> <form onSubmit={handleSubmit(onEdit)} className="space-y-3">
<div> <div>
<FormInfo> <FormInfo>

View File

@@ -18,8 +18,9 @@ const createNewUserAvatars = async ({
}: CreateNewUserAvatarsArgs) => { }: CreateNewUserAvatarsArgs) => {
const userAvatars: UserAvatarData[] = []; const userAvatars: UserAvatarData[] = [];
const path = imageUrls[Math.floor(Math.random() * imageUrls.length)];
users.forEach((user) => { users.forEach((user) => {
const path = imageUrls[Math.floor(Math.random() * imageUrls.length)];
userAvatars.push({ userAvatars.push({
path, path,
alt: `${user.firstName} ${user.lastName}`, alt: `${user.firstName} ${user.lastName}`,