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

This commit is contained in:
DCCONSTRUCTIONS
2026-04-19 10:30:04 +03:00
parent 4dff521f7f
commit a4eaf4b247
15 changed files with 318 additions and 171 deletions
@@ -35,6 +35,19 @@ export class ExternalContourService extends APIService {
});
}
async updateRequest(
workspaceSlug: string,
projectId: string,
requestId: string,
data: Pick<Partial<TIssue>, "name" | "description_html">
): Promise<TExternalContourRequest> {
return this.patch(`/api/workspaces/${workspaceSlug}/projects/${projectId}/external-contours/${requestId}/`, data)
.then((response) => response?.data)
.catch((error) => {
throw error?.response?.data;
});
}
async listTargetProjects(workspaceSlug: string, projectId: string): Promise<TExternalContourTargetProject[]> {
return this.get(`/api/workspaces/${workspaceSlug}/projects/${projectId}/external-contours/targets/`)
.then((response) => response?.data)
@@ -34,6 +34,12 @@ export interface IProjectExternalContoursStore {
projectId: string,
data: Partial<TIssue> & { target_project_id?: string | null }
) => Promise<TExternalContourRequest | undefined>;
updateRequest: (
workspaceSlug: string,
projectId: string,
requestId: string,
data: Pick<Partial<TIssue>, "name" | "description_html">
) => Promise<TExternalContourRequest | undefined>;
decideRequest: (
workspaceSlug: string,
projectId: string,
@@ -95,6 +101,7 @@ export class ProjectExternalContoursStore implements IProjectExternalContoursSto
fetchRequests: action,
fetchRequestById: action,
createRequest: action,
updateRequest: action,
decideRequest: action,
replyToRequest: action,
handleCurrentTab: action,
@@ -235,6 +242,28 @@ export class ProjectExternalContoursStore implements IProjectExternalContoursSto
}
};
updateRequest = async (
workspaceSlug: string,
projectId: string,
requestId: string,
data: Pick<Partial<TIssue>, "name" | "description_html">
) => {
this.loader = "mutation-loading";
try {
const request = await this.externalContourService.updateRequest(workspaceSlug, projectId, requestId, data);
runInAction(() => {
this.upsertRequests([request]);
this.loader = undefined;
});
return request;
} catch (error) {
runInAction(() => {
this.loader = undefined;
});
throw error;
}
};
decideRequest = async (
workspaceSlug: string,
projectId: string,