88 lines
3.1 KiB
TypeScript
88 lines
3.1 KiB
TypeScript
import { useMemo } from 'react';
|
|
|
|
import { useGraphChangeReviewDialog } from './useGraphChangeReviewDialog';
|
|
import { useGraphCreateTaskDialog } from './useGraphCreateTaskDialog';
|
|
import { useGraphMemberDetailDialog } from './useGraphMemberDetailDialog';
|
|
import { useGraphSendMessageDialog } from './useGraphSendMessageDialog';
|
|
import { useGraphTaskActions } from './useGraphTaskActions';
|
|
import { useGraphTaskDetailDialog } from './useGraphTaskDetailDialog';
|
|
|
|
import type {
|
|
MemberActivityFilter,
|
|
MemberDetailTab,
|
|
} from '@renderer/components/team/members/memberDetailTypes';
|
|
|
|
interface OpenProfileOptions {
|
|
initialActivityFilter?: MemberActivityFilter;
|
|
initialTab?: MemberDetailTab;
|
|
}
|
|
|
|
export function useGraphSurfaceInteractions(teamName: string): {
|
|
dialogs: React.ReactNode;
|
|
onApproveTask: (taskId: string) => void;
|
|
onCancelTask: (taskId: string) => void;
|
|
onCompleteTask: (taskId: string) => void;
|
|
onDeleteTask: (taskId: string) => void;
|
|
onMoveBackToDone: (taskId: string) => void;
|
|
onRequestChanges: (taskId: string) => void;
|
|
onRequestReview: (taskId: string) => void;
|
|
onStartTask: (taskId: string) => void;
|
|
openCreateTask: (owner?: string) => void;
|
|
openMemberProfile: (memberName: string, options?: OpenProfileOptions) => void;
|
|
openSendMessage: (memberName?: string) => void;
|
|
openTaskChanges: (taskId: string, filePath?: string) => void;
|
|
openTaskDetail: (taskId: string) => void;
|
|
} {
|
|
const changeReview = useGraphChangeReviewDialog(teamName);
|
|
const createTask = useGraphCreateTaskDialog(teamName);
|
|
const sendMessage = useGraphSendMessageDialog(teamName);
|
|
const taskActions = useGraphTaskActions(teamName);
|
|
const taskDetail = useGraphTaskDetailDialog(teamName, {
|
|
onDeleteTask: taskActions.onDeleteTask,
|
|
onViewChanges: changeReview.openTaskChanges,
|
|
});
|
|
const memberDetail = useGraphMemberDetailDialog(teamName, {
|
|
onAssignTask: createTask.openCreateTaskDialog,
|
|
onSendMessage: sendMessage.openSendMessage,
|
|
onTaskClick: taskDetail.openTaskDetail,
|
|
onViewMemberChanges: changeReview.openMemberChanges,
|
|
});
|
|
|
|
const dialogs = useMemo(
|
|
() => (
|
|
<>
|
|
{createTask.dialog}
|
|
{sendMessage.dialog}
|
|
{taskActions.dialog}
|
|
{taskDetail.dialog}
|
|
{memberDetail.dialog}
|
|
{changeReview.dialog}
|
|
</>
|
|
),
|
|
[
|
|
changeReview.dialog,
|
|
createTask.dialog,
|
|
memberDetail.dialog,
|
|
sendMessage.dialog,
|
|
taskActions.dialog,
|
|
taskDetail.dialog,
|
|
]
|
|
);
|
|
|
|
return {
|
|
dialogs,
|
|
onApproveTask: taskActions.onApproveTask,
|
|
onCancelTask: taskActions.onCancelTask,
|
|
onCompleteTask: taskActions.onCompleteTask,
|
|
onDeleteTask: taskActions.onDeleteTask,
|
|
onMoveBackToDone: taskActions.onMoveBackToDone,
|
|
onRequestChanges: taskActions.onRequestChanges,
|
|
onRequestReview: taskActions.onRequestReview,
|
|
onStartTask: taskActions.onStartTask,
|
|
openCreateTask: createTask.openCreateTaskDialog,
|
|
openMemberProfile: memberDetail.openMemberProfile,
|
|
openSendMessage: sendMessage.openSendMessage,
|
|
openTaskChanges: changeReview.openTaskChanges,
|
|
openTaskDetail: taskDetail.openTaskDetail,
|
|
};
|
|
}
|