ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: отправка во внешний контур и source-side список

This commit is contained in:
DCCONSTRUCTIONS
2026-04-18 21:47:29 +03:00
parent 390bcdbf38
commit fb33f093de
28 changed files with 911 additions and 386 deletions
@@ -12,9 +12,12 @@ import { useTranslation } from "@plane/i18n";
import { Button } from "@plane/propel/button";
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
import type { TIssue } from "@plane/types";
import { EInboxIssueCurrentTab } from "@plane/types";
import { ToggleSwitch } from "@plane/ui";
import { useProject } from "@/hooks/store/use-project";
import { useProjectExternalContours } from "@/hooks/store/use-project-external-contours";
import { useWorkspace } from "@/hooks/store/use-workspace";
import { useAppRouter } from "@/hooks/use-app-router";
import { InboxIssueDescription } from "@/components/inbox/modals/create-modal/issue-description";
import { InboxIssueTitle } from "@/components/inbox/modals/create-modal/issue-title";
import { ExternalContoursCreateProperties } from "./create-properties";
@@ -39,9 +42,11 @@ type Props = {
export const ExternalContoursCreateRoot = observer(function ExternalContoursCreateRoot(props: Props) {
const { workspaceSlug, projectId, handleModalClose } = props;
const { t } = useTranslation();
const router = useAppRouter();
const { getWorkspaceBySlug } = useWorkspace();
const workspaceId = getWorkspaceBySlug(workspaceSlug)?.id;
const { currentProjectDetails } = useProject();
const { createRequest } = useProjectExternalContours();
const descriptionEditorRef = useRef<EditorRefApi>(null);
const [createMore, setCreateMore] = useState(false);
const [formSubmitting, setFormSubmitting] = useState(false);
@@ -67,15 +72,32 @@ export const ExternalContoursCreateRoot = observer(function ExternalContoursCrea
}
setFormSubmitting(true);
setToast({
type: TOAST_TYPE.INFO,
title: t("external_contours_page.modal.toast_title"),
message: t("external_contours_page.modal.toast_message"),
});
setFormSubmitting(false);
if (!createMore) {
handleModalClose();
try {
const createdRequest = await createRequest(workspaceSlug, projectId, formData);
setToast({
type: TOAST_TYPE.SUCCESS,
title: t("success"),
message: t("external_contours_page.modal.success_message"),
});
if (createMore) {
setFormData(defaultIssueData);
} else {
handleModalClose();
}
if (createdRequest?.id) {
router.push(`/${workspaceSlug}/projects/${projectId}/external-contours?currentTab=${EInboxIssueCurrentTab.OPEN}&inboxIssueId=${createdRequest.id}`);
}
} catch (error: any) {
setToast({
type: TOAST_TYPE.ERROR,
title: t("error"),
message: error?.error || t("external_contours_page.modal.error_message"),
});
} finally {
setFormSubmitting(false);
}
};