From 1721314c62fec3bb7176e8b17779431e4f13f6bd Mon Sep 17 00:00:00 2001 From: hjlarry Date: Sat, 13 Sep 2025 17:57:19 +0800 Subject: [PATCH] add frontend comment service --- web/service/workflow-comment.ts | 101 ++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 web/service/workflow-comment.ts diff --git a/web/service/workflow-comment.ts b/web/service/workflow-comment.ts new file mode 100644 index 0000000000..c4d530c63b --- /dev/null +++ b/web/service/workflow-comment.ts @@ -0,0 +1,101 @@ +import { del, get, post, put } from './base' +import type { CommonResponse } from '@/models/common' + +export type WorkflowComment = { + id: string + app_id: string + position_x: number + position_y: number + content: string + created_by: string + created_at: string + updated_at: string + resolved: boolean + resolved_by?: string + resolved_at?: string + mentioned_user_ids: string[] + replies_count: number + author: { + id: string + name: string + email: string + avatar?: string + } +} + +export type WorkflowCommentReply = { + id: string + comment_id: string + content: string + created_by: string + created_at: string + updated_at: string + mentioned_user_ids: string[] + author: { + id: string + name: string + email: string + avatar?: string + } +} + +export type CreateCommentParams = { + position_x: number + position_y: number + content: string + mentioned_user_ids?: string[] +} + +export type UpdateCommentParams = { + content: string + position_x?: number + position_y?: number + mentioned_user_ids?: string[] +} + +export type CreateReplyParams = { + content: string + mentioned_user_ids?: string[] +} + +export const fetchWorkflowComments = async (appId: string): Promise => { + const response = await get<{ data: WorkflowComment[] }>(`apps/${appId}/workflow/comments`) + return response.data +} + +export const createWorkflowComment = async (appId: string, params: CreateCommentParams): Promise => { + return post(`apps/${appId}/workflow/comments`, { body: params }) +} + +export const fetchWorkflowComment = async (appId: string, commentId: string): Promise => { + return get(`apps/${appId}/workflow/comments/${commentId}`) +} + +export const updateWorkflowComment = async (appId: string, commentId: string, params: UpdateCommentParams): Promise => { + return put(`apps/${appId}/workflow/comments/${commentId}`, { body: params }) +} + +export const deleteWorkflowComment = async (appId: string, commentId: string): Promise => { + return del(`apps/${appId}/workflow/comments/${commentId}`) +} + +export const resolveWorkflowComment = async (appId: string, commentId: string): Promise => { + return post(`apps/${appId}/workflow/comments/${commentId}/resolve`) +} + +export const createWorkflowCommentReply = async (appId: string, commentId: string, params: CreateReplyParams): Promise => { + return post(`apps/${appId}/workflow/comments/${commentId}/replies`, { body: params }) +} + +export const updateWorkflowCommentReply = async (appId: string, commentId: string, replyId: string, params: CreateReplyParams): Promise => { + return put(`apps/${appId}/workflow/comments/${commentId}/replies/${replyId}`, { body: params }) +} + +export const deleteWorkflowCommentReply = async (appId: string, commentId: string, replyId: string): Promise => { + return del(`apps/${appId}/workflow/comments/${commentId}/replies/${replyId}`) +} + +export const fetchMentionableUsers = async (appId: string) => { + const response = await get<{ users: Array<{ id: string; name: string; email: string; avatar?: string }> }>(`apps/${appId}/workflow/comments/mention-users`) + return response.users +}