diff --git a/ui/src/pages/CompanySkills.tsx b/ui/src/pages/CompanySkills.tsx index e79d7556f8f..c738b13670f 100644 --- a/ui/src/pages/CompanySkills.tsx +++ b/ui/src/pages/CompanySkills.tsx @@ -4343,13 +4343,22 @@ export function CompanySkills() { if (moveAfterCreateSkillIds.length > 0) { const ids = moveAfterCreateSkillIds; setMoveAfterCreateSkillIds([]); - await Promise.all(ids.map((itemId) => - foldersApi.moveItem(selectedCompanyId!, { kind: "skill", itemId, folderId: folder.id }) - )); - await Promise.all([ - queryClient.invalidateQueries({ queryKey: queryKeys.companySkills.list(selectedCompanyId!) }), - queryClient.invalidateQueries({ queryKey: queryKeys.folders.list(selectedCompanyId!, "skill") }), - ]); + try { + await Promise.all(ids.map((itemId) => + foldersApi.moveItem(selectedCompanyId!, { kind: "skill", itemId, folderId: folder.id }) + )); + await Promise.all([ + queryClient.invalidateQueries({ queryKey: queryKeys.companySkills.list(selectedCompanyId!) }), + queryClient.invalidateQueries({ queryKey: queryKeys.folders.list(selectedCompanyId!, "skill") }), + ]); + } catch (moveError) { + pushToast({ + tone: "error", + title: "Folder created, move failed", + body: moveError instanceof Error ? moveError.message : "Failed to move the selected skills.", + }); + return; + } } else { setFolderSelection(folder.id); } @@ -4419,14 +4428,22 @@ export function CompanySkills() { async function moveSelectedSkills(folderId: string | null) { const ids = selectedSkillIds; if (ids.length === 0) return; - await Promise.all(ids.map((itemId) => foldersApi.moveItem(selectedCompanyId!, { kind: "skill", itemId, folderId }))); - setSelectedSkillIds([]); - setSelectMode(false); - await Promise.all([ - queryClient.invalidateQueries({ queryKey: queryKeys.companySkills.list(selectedCompanyId!) }), - queryClient.invalidateQueries({ queryKey: queryKeys.folders.list(selectedCompanyId!, "skill") }), - ]); - pushToast({ tone: "success", title: "Skills moved", body: `${ids.length} skill${ids.length === 1 ? "" : "s"} filed.` }); + try { + await Promise.all(ids.map((itemId) => foldersApi.moveItem(selectedCompanyId!, { kind: "skill", itemId, folderId }))); + setSelectedSkillIds([]); + setSelectMode(false); + await Promise.all([ + queryClient.invalidateQueries({ queryKey: queryKeys.companySkills.list(selectedCompanyId!) }), + queryClient.invalidateQueries({ queryKey: queryKeys.folders.list(selectedCompanyId!, "skill") }), + ]); + pushToast({ tone: "success", title: "Skills moved", body: `${ids.length} skill${ids.length === 1 ? "" : "s"} filed.` }); + } catch (moveError) { + pushToast({ + tone: "error", + title: "Failed to move skills", + body: moveError instanceof Error ? moveError.message : "Failed to move the selected skills.", + }); + } } const eligibleAgentsForAttach = useMemo(() => { diff --git a/ui/src/pages/Routines.tsx b/ui/src/pages/Routines.tsx index d70f1928dfb..0f40c567f73 100644 --- a/ui/src/pages/Routines.tsx +++ b/ui/src/pages/Routines.tsx @@ -438,13 +438,22 @@ export function Routines() { if (moveAfterCreateIds.length > 0) { const ids = moveAfterCreateIds; setMoveAfterCreateIds([]); - await Promise.all(ids.map((itemId) => - foldersApi.moveItem(selectedCompanyId!, { kind: "routine", itemId, folderId: folder.id }) - )); - await Promise.all([ - queryClient.invalidateQueries({ queryKey: queryKeys.routines.list(selectedCompanyId!) }), - queryClient.invalidateQueries({ queryKey: queryKeys.folders.list(selectedCompanyId!, "routine") }), - ]); + try { + await Promise.all(ids.map((itemId) => + foldersApi.moveItem(selectedCompanyId!, { kind: "routine", itemId, folderId: folder.id }) + )); + await Promise.all([ + queryClient.invalidateQueries({ queryKey: queryKeys.routines.list(selectedCompanyId!) }), + queryClient.invalidateQueries({ queryKey: queryKeys.folders.list(selectedCompanyId!, "routine") }), + ]); + } catch (moveError) { + pushToast({ + title: "Folder created, move failed", + body: moveError instanceof Error ? moveError.message : "Paperclip could not move the selected routines.", + tone: "error", + }); + return; + } } else { setFolderSelection(folder.id); } @@ -703,14 +712,22 @@ export function Routines() { async function moveSelectedRoutines(folderId: string | null) { const ids = selectedRoutineIds; if (ids.length === 0) return; - await Promise.all(ids.map((itemId) => foldersApi.moveItem(selectedCompanyId!, { kind: "routine", itemId, folderId }))); - setSelectedRoutineIds([]); - setSelectMode(false); - await Promise.all([ - queryClient.invalidateQueries({ queryKey: queryKeys.routines.list(selectedCompanyId!) }), - queryClient.invalidateQueries({ queryKey: queryKeys.folders.list(selectedCompanyId!, "routine") }), - ]); - pushToast({ title: "Routines moved", body: `${ids.length} routine${ids.length === 1 ? "" : "s"} filed.`, tone: "success" }); + try { + await Promise.all(ids.map((itemId) => foldersApi.moveItem(selectedCompanyId!, { kind: "routine", itemId, folderId }))); + setSelectedRoutineIds([]); + setSelectMode(false); + await Promise.all([ + queryClient.invalidateQueries({ queryKey: queryKeys.routines.list(selectedCompanyId!) }), + queryClient.invalidateQueries({ queryKey: queryKeys.folders.list(selectedCompanyId!, "routine") }), + ]); + pushToast({ title: "Routines moved", body: `${ids.length} routine${ids.length === 1 ? "" : "s"} filed.`, tone: "success" }); + } catch (moveError) { + pushToast({ + title: "Failed to move routines", + body: moveError instanceof Error ? moveError.message : "Paperclip could not move the selected routines.", + tone: "error", + }); + } } function handleRunNow(routine: RoutineListItem) {