diff --git a/web/package-lock.json b/web/package-lock.json index 8d0ce87..7f23645 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1426,7 +1426,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -2303,7 +2302,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2439,8 +2437,7 @@ "version": "4.1.18", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tapable": { "version": "2.3.0", @@ -2499,7 +2496,6 @@ "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -2559,7 +2555,6 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.27.tgz", "integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.27", "@vue/compiler-sfc": "3.5.27", diff --git a/web/src/components/ReassignModal.vue b/web/src/components/ReassignModal.vue index 48f2c59..109f4c0 100644 --- a/web/src/components/ReassignModal.vue +++ b/web/src/components/ReassignModal.vue @@ -60,12 +60,15 @@ export default { agents: { type: Array, required: true + }, + isSubmitting: { + type: Boolean, + default: false } }, emits: ['close', 'reassign'], setup(props, { emit }) { const selectedAgentId = ref('') - const isSubmitting = ref(false) // Filter out the currently assigned agent const availableAgents = computed(() => { @@ -81,26 +84,20 @@ export default { } }) - const handleSubmit = async () => { + const handleSubmit = () => { if (!selectedAgentId.value || !props.task) { return } - isSubmitting.value = true - try { - emit('reassign', { - taskId: props.task.id, - agentId: selectedAgentId.value - }) - selectedAgentId.value = '' - } finally { - isSubmitting.value = false - } + emit('reassign', { + taskId: props.task.id, + agentId: selectedAgentId.value + }) + selectedAgentId.value = '' } return { selectedAgentId, - isSubmitting, availableAgents, handleSubmit } diff --git a/web/src/views/ProjectDetail.vue b/web/src/views/ProjectDetail.vue index fe67135..8c5337e 100644 --- a/web/src/views/ProjectDetail.vue +++ b/web/src/views/ProjectDetail.vue @@ -222,6 +222,7 @@ :show="showReassignTaskModal" :task="reassigningTask" :agents="agents" + :is-submitting="isReassigningTask" @close="showReassignTaskModal = false" @reassign="handleReassignTask" /> @@ -346,6 +347,7 @@ export default { const showAddAgentModal = ref(false) const showAddTaskModal = ref(false) const showReassignTaskModal = ref(false) + const isReassigningTask = ref(false) const showAddContextModal = ref(false) const showViewContextModal = ref(false) const showDeleteConfirm = ref(false) @@ -977,6 +979,7 @@ get_project_contexts() { const handleReassignTask = async (reassignmentData) => { if (!reassigningTask.value) return + isReassigningTask.value = true try { const response = await fetch(`/api/tasks/${reassignmentData.taskId}/reassign`, { method: 'PUT', @@ -1007,6 +1010,8 @@ get_project_contexts() { } catch (error) { console.error('Failed to reassign task:', error) alert('Failed to reassign task. Please try again.') + } finally { + isReassigningTask.value = false } } @@ -1348,6 +1353,7 @@ The mcp.json file includes: showAddAgentModal, showAddTaskModal, showReassignTaskModal, + isReassigningTask, showAddContextModal, showViewContextModal, showDeleteConfirm,