feat: integrate Jira ticket linking in TaskCard
- Added functionality to generate Jira ticket URLs based on user preferences, enhancing task interactivity. - Updated UserPreferences to include Jira configuration, ensuring seamless integration with Jira settings. - Refactored TaskCard to conditionally render Jira links, improving user experience when interacting with Jira tasks.
This commit is contained in:
@@ -6,6 +6,7 @@ import { Card } from '@/components/ui/Card';
|
||||
import { Badge } from '@/components/ui/Badge';
|
||||
import { TagDisplay } from '@/components/ui/TagDisplay';
|
||||
import { useTasksContext } from '@/contexts/TasksContext';
|
||||
import { useUserPreferences } from '@/contexts/UserPreferencesContext';
|
||||
import { useDraggable } from '@dnd-kit/core';
|
||||
import { getPriorityConfig, getPriorityColorHex } from '@/lib/status-config';
|
||||
|
||||
@@ -23,6 +24,14 @@ export function TaskCard({ task, onDelete, onEdit, onUpdateTitle, compactView =
|
||||
const [showTooltip, setShowTooltip] = useState(false);
|
||||
const timeoutRef = useRef<NodeJS.Timeout | null>(null);
|
||||
const { tags: availableTags } = useTasksContext();
|
||||
const { preferences } = useUserPreferences();
|
||||
|
||||
// Helper pour construire l'URL Jira
|
||||
const getJiraTicketUrl = (jiraKey: string): string => {
|
||||
const baseUrl = preferences.jiraConfig.baseUrl;
|
||||
if (!baseUrl || !jiraKey) return '';
|
||||
return `${baseUrl}/browse/${jiraKey}`;
|
||||
};
|
||||
|
||||
// Configuration du draggable
|
||||
const {
|
||||
@@ -374,9 +383,29 @@ export function TaskCard({ task, onDelete, onEdit, onUpdateTitle, compactView =
|
||||
|
||||
<div className="flex items-center gap-2">
|
||||
{task.source !== 'manual' && task.source && (
|
||||
<Badge variant="outline" size="sm">
|
||||
{task.source === 'jira' && task.jiraKey ? task.jiraKey : task.source}
|
||||
</Badge>
|
||||
task.source === 'jira' && task.jiraKey ? (
|
||||
preferences.jiraConfig.baseUrl ? (
|
||||
<a
|
||||
href={getJiraTicketUrl(task.jiraKey)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
className="hover:scale-105 transition-transform"
|
||||
>
|
||||
<Badge variant="outline" size="sm" className="hover:bg-blue-500/10 hover:border-blue-400/50 cursor-pointer">
|
||||
{task.jiraKey}
|
||||
</Badge>
|
||||
</a>
|
||||
) : (
|
||||
<Badge variant="outline" size="sm">
|
||||
{task.jiraKey}
|
||||
</Badge>
|
||||
)
|
||||
) : (
|
||||
<Badge variant="outline" size="sm">
|
||||
{task.source}
|
||||
</Badge>
|
||||
)
|
||||
)}
|
||||
|
||||
{task.jiraProject && (
|
||||
|
||||
Reference in New Issue
Block a user