feature/IO-3096-GlobalNotifications - Code Review Part 2
This commit is contained in:
@@ -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
|
||||
};
|
||||
})}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user