feature/IO-3096-GlobalNotifications - Code Review Part 2

This commit is contained in:
Dave Richer
2025-03-03 23:11:03 -05:00
parent a57abec81b
commit 555bedbb6c
3 changed files with 67 additions and 58 deletions

View File

@@ -40,9 +40,9 @@ const JobWatcherToggle = ({ job, currentUser, bodyshop }) => {
// Extract watchers list
const jobWatchers = useMemo(() => watcherData?.job_watchers || [], [watcherData]);
const isWatching = useMemo(() => jobWatchers.some((w) => w.user_email === userEmail), [jobWatchers, userEmail]);
// Add watcher mutation
const isWatching = jobWatchers.some((w) => w.user_email === userEmail);
const [addWatcher, { loading: adding }] = useMutation(ADD_JOB_WATCHER, {
refetchQueries: [{ query: GET_JOB_WATCHERS, variables: { jobid } }]
});
@@ -81,12 +81,11 @@ const JobWatcherToggle = ({ job, currentUser, bodyshop }) => {
);
}
// Clear selection
setSelectedWatcher(null);
};
const handleTeamSelect = (team) => {
const selectedTeamMembers = JSON.parse(team); // Parse the array of emails
const selectedTeamMembers = JSON.parse(team);
const newWatchers = selectedTeamMembers.filter(
(email) => !jobWatchers.some((watcher) => watcher.user_email === email)
@@ -99,7 +98,6 @@ const JobWatcherToggle = ({ job, currentUser, bodyshop }) => {
);
});
// Clear selection
setSelectedTeam(null);
};
@@ -147,14 +145,12 @@ const JobWatcherToggle = ({ job, currentUser, bodyshop }) => {
style={{ minWidth: "100%" }}
options={bodyshop.employees.filter((e) => jobWatchers.every((w) => w.user_email !== e.user_email))}
placeholder={t("notifications.labels.employee-search")}
value={selectedWatcher} // Controlled value
value={selectedWatcher}
onChange={(value) => {
setSelectedWatcher(value); // Update selected state
handleWatcherSelect(value); // Add watcher logic
setSelectedWatcher(value);
handleWatcherSelect(value);
}}
/>
{/* Divider for UI separation */}
{/* Only show team selection if there are available teams */}
{Enhanced_Payroll && bodyshop?.employee_teams?.length > 0 && (
<>
<Divider />
@@ -172,11 +168,11 @@ const JobWatcherToggle = ({ job, currentUser, bodyshop }) => {
const employee = bodyshop.employees.find((e) => e.id === member.employeeid);
return employee ? employee.user_email : null;
})
.filter(Boolean); // Remove nulls
.filter(Boolean);
return {
value: JSON.stringify(teamMembers), // Store array as string
label: team.name // Use team name as label
value: JSON.stringify(teamMembers),
label: team.name
};
})}
/>