Skip to content

Commit

Permalink
NS-50 Added unassign from manifest
Browse files Browse the repository at this point in the history
  • Loading branch information
stephenwf committed Nov 23, 2023
1 parent 7df10a1 commit d48abf3
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ export const AssignManifestToUser: React.FC = () => {
throwOnError: true,
}
);
const [unassignUser] = useMutation(
async (taskId: string) => {
if (projectId) {
await api.updateTask(taskId, { status: -1, status_text: 'unassigned' });
}
},
{
throwOnError: true,
}
);

if (project.claimGranularity === 'canvas' /*|| project.contributionMode !== 'transcription'*/) {
return null;
Expand All @@ -47,7 +57,7 @@ export const AssignManifestToUser: React.FC = () => {
<ModalButton
as={Button}
title={t('Assign manifest to user')}
render={() => <AssignUserToManifestTask onAssign={assignUser} />}
render={() => <AssignUserToManifestTask onAssign={assignUser} onUnassign={unassignUser} />}
>
{t('Assign')}
</ModalButton>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ import { TableContainer, TableRow, TableRowLabel } from '../../../shared/layout/
import { AutocompleteUser, UserAutocomplete } from '../../../shared/components/UserAutocomplete';
import { useManifestTask } from '../../hooks/use-manifest-task';

export const AssignUserToManifestTask: React.FC<{ onAssign: (user: AutocompleteUser) => Promise<void> }> = ({
onAssign,
}) => {
export const AssignUserToManifestTask: React.FC<{
onAssign: (user: AutocompleteUser) => Promise<void>;
onUnassign: (taskId: string) => Promise<void>;
}> = ({ onAssign, onUnassign }) => {
const { t } = useTranslation();
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState('');
Expand Down Expand Up @@ -44,6 +45,19 @@ export const AssignUserToManifestTask: React.FC<{ onAssign: (user: AutocompleteU
}
};

const unassignManifest = (taskId: string) => {
setError('');
setIsLoading(true);
onUnassign(taskId)
.then(async () => {
await refetch();
setIsLoading(false);
})
.catch((err: ApiError) => {
setError(err.message);
});
};

const alreadyAssigned = crowdsourcingManifestTasks
.map(task => {
const user = task.assignee ? parseUrn(task.assignee.id) : null;
Expand Down Expand Up @@ -78,6 +92,11 @@ export const AssignUserToManifestTask: React.FC<{ onAssign: (user: AutocompleteU
t('unassigned')
)}
<TableRowLabel $flex>{task.name}</TableRowLabel>
<TableRowLabel>
<Button $error onClick={() => unassignManifest(task.id as string)}>
{t('Unassign')}
</Button>
</TableRowLabel>
</TableRow>
))}
</TableContainer>
Expand Down

0 comments on commit d48abf3

Please sign in to comment.