From 1354d96025565181d0bd9e520a3906d051fadb94 Mon Sep 17 00:00:00 2001 From: Andrei Dodu Date: Tue, 23 May 2023 21:21:28 +0200 Subject: [PATCH] fix: bug regarding creating twice jobInstance --- .../job/panels/UserJobItemPanel.tsx | 19 ++++--------- src/components/message/JobInfoSidebar.tsx | 23 ++++++++++++--- src/components/rateUser.tsx | 28 ++++++++----------- 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/src/components/job/panels/UserJobItemPanel.tsx b/src/components/job/panels/UserJobItemPanel.tsx index 4c25645..52e91da 100644 --- a/src/components/job/panels/UserJobItemPanel.tsx +++ b/src/components/job/panels/UserJobItemPanel.tsx @@ -11,10 +11,12 @@ import JobInstanceConst from '../../../consts/JobInstanceConst'; interface UserJobItemPanelProps { job: Job; workerId: number; + jobInstanceProp: JobInstance; } export default function UserJobItemPanel({ job, workerId, + jobInstanceProp, }: UserJobItemPanelProps) { const [acceptJobButtonLabel] = useState( JobService.calulateAcceptButtonLabel(job) @@ -24,19 +26,10 @@ export default function UserJobItemPanel({ const [showJobInstanceStatus, setShowJobInstanceStatus] = useState(); useEffect(() => { - const jobId = job.id; - GenericApiService.get( - `api/v1/jobInstance/private/jobId/${jobId}/workerId/${workerId}` - ).then((jobInstance: JobInstance) => { - if (jobInstance === null) { - // it's ok - return; - } - setJobInstance(jobInstance); - setJobInstanceStatus( - JobInstanceService.retrieveHumanableStatus(jobInstance.status) - ); - }); + setJobInstance(jobInstanceProp); + setJobInstanceStatus( + JobInstanceService.retrieveHumanableStatus(jobInstanceProp.status) + ); }, []); useEffect(() => { diff --git a/src/components/message/JobInfoSidebar.tsx b/src/components/message/JobInfoSidebar.tsx index 520ff7e..183af17 100644 --- a/src/components/message/JobInfoSidebar.tsx +++ b/src/components/message/JobInfoSidebar.tsx @@ -17,6 +17,7 @@ import Title from '../job/Header'; import UserJobItemPanel from '../job/panels/UserJobItemPanel'; import RateUser from '../rateUser'; import UserService from '../../service/UserService'; +import JobInstance from '../../dto/JobInstance'; export default function JobInfoSidebar() { const { roomId } = useParams(); @@ -89,6 +90,15 @@ const SidebarContent = ({ const [targetUserId] = useState( UserService.getUser().id === job?.author?.id ? workerId : job?.author?.id ); + const [jobInstance, setJobInstance] = useState(); + + useEffect(() => { + GenericApiService.get( + `api/v1/jobInstance/private/jobId/${job?.id}/workerId/${workerId}` + ).then((jobInstance: JobInstance) => { + setJobInstance(jobInstance); + }); + }, []); return ( @@ -102,12 +112,17 @@ const SidebarContent = ({ {job?.author?.username}] {job?.description} - {job && } + {jobInstance && job && ( + + )} Rate user: - {job && job.id && job.author && job.author.id && targetUserId && ( + {jobInstance && targetUserId && ( diff --git a/src/components/rateUser.tsx b/src/components/rateUser.tsx index 4bd130b..2cafaed 100644 --- a/src/components/rateUser.tsx +++ b/src/components/rateUser.tsx @@ -6,15 +6,13 @@ import Rating from '../dto/Rating'; import JobInstance from '../dto/JobInstance'; export default function RateUser({ - jobId, targetUserId, raterUserId, - workerId, + jobInstanceProp, }: { - workerId: number; - jobId: number; raterUserId: number; targetUserId: number; + jobInstanceProp: JobInstance; }) { const [enabled, setEnabled] = useState>( Array.from(Array(5).keys()).map(() => false) @@ -27,19 +25,15 @@ export default function RateUser({ const [jobInstance, setJobInstance] = useState(); useEffect(() => { - GenericApiService.get( - `api/v1/jobInstance/private/jobId/${jobId}/workerId/${workerId}` - ).then((jobInstance: JobInstance) => { - setJobInstance(jobInstance); - GenericApiService.get( - `api/v1/rating/jobInstanceId/${jobInstance.id}/targetUserId/${targetUserId}` - ).then((rating: Rating | null) => { - setRating(rating); - if (rating) { - setRatingValue(rating?.rating - 1); - updateColors(rating?.rating - 1); - } - }); + setJobInstance(jobInstanceProp); + GenericApiService.get( + `api/v1/rating/jobInstanceId/${jobInstanceProp.id}/targetUserId/${targetUserId}` + ).then((rating: Rating | null) => { + setRating(rating); + if (rating) { + setRatingValue(rating?.rating - 1); + updateColors(rating?.rating - 1); + } }); }, []);