refactor(renderer): group Jira task creation and summary modules (#34413)

This commit is contained in:
Neil
2026-10-27 05:54:38 -07:00
committed by GitHub
parent 342b5357dc
commit 4583236a24
17 changed files with 34 additions and 30 deletions
+2 -2
View File
@@ -184,8 +184,8 @@
4 src/renderer/src/components/terminal/terminal-tab-bulk-actions.ts
2 src/renderer/src/components/terminal/terminal-tab-create.ts
2 src/renderer/src/components/use-new-linear-issue-projects.ts
4 src/renderer/src/components/use-task-page-jira-creation-metadata.ts
4 src/renderer/src/components/use-task-page-jira-issue-creation.ts
4 src/renderer/src/components/task-page/jira/use-task-page-jira-creation-metadata.ts
4 src/renderer/src/components/task-page/jira/use-task-page-jira-issue-creation.ts
1 src/renderer/src/components/use-task-page-jira-list-effects.ts
2 src/renderer/src/components/task-page/use-task-page-provider-metadata.ts
2 src/renderer/src/components/task-page/use-task-page-store-bindings.ts
@@ -76,7 +76,7 @@ const SUPPRESSED_REACT_DOCTOR_DIAGNOSTICS = new Map([
'react-doctor(no-adjust-state-on-prop-change)',
new Set([
'src/renderer/src/components/task-page/github/use-task-page-github-issue-draft.ts',
'src/renderer/src/components/use-task-page-jira-creation-state.ts'
'src/renderer/src/components/task-page/jira/use-task-page-jira-creation-state.ts'
])
],
[
+1 -1
View File
@@ -400,7 +400,7 @@
{
"files": [
"src/renderer/src/components/task-page/github/use-task-page-github-issue-draft.ts",
"src/renderer/src/components/use-task-page-jira-creation-state.ts"
"src/renderer/src/components/task-page/jira/use-task-page-jira-creation-state.ts"
],
"rules": [
"react-doctor/no-adjust-state-on-prop-change"
@@ -20,8 +20,8 @@ import { useTaskPageLinearBoard } from './linear/use-task-page-linear-board'
import { useTaskPageJiraListProjection } from '../use-task-page-jira-list-projection'
import { useTaskPageLinearCreationState } from './linear/use-task-page-linear-creation-state'
import { useTaskPageGitHubMutationState } from './github/use-task-page-github-mutation-state'
import { useTaskPageJiraCreationState } from '../use-task-page-jira-creation-state'
import { useTaskPageJiraCreationMetadata } from '../use-task-page-jira-creation-metadata'
import { useTaskPageJiraCreationState } from './jira/use-task-page-jira-creation-state'
import { useTaskPageJiraCreationMetadata } from './jira/use-task-page-jira-creation-metadata'
import { useTaskPageGitHubListProjection } from './github/use-task-page-github-list-projection'
import { useTaskPageGitHubSearchPagination } from './github/use-task-page-github-search-pagination'
import { useTaskPageGitHubLandingRefresh } from './github/use-task-page-github-landing-refresh'
@@ -31,8 +31,8 @@ import { useTaskPageWorkspaceActions } from './use-task-page-workspace-actions'
import { useTaskPageGitHubIssueCreation } from './github/use-task-page-github-issue-creation'
import { useTaskPageLinearProjectCreation } from './linear/use-task-page-linear-project-creation'
import { useTaskPageLinearIssueCreation } from './linear/use-task-page-linear-issue-creation'
import { useTaskPageJiraIssueCreation } from '../use-task-page-jira-issue-creation'
import { useTaskPageJiraSummaryGeneration } from '../use-task-page-jira-summary-generation'
import { useTaskPageJiraIssueCreation } from './jira/use-task-page-jira-issue-creation'
import { useTaskPageJiraSummaryGeneration } from './jira/use-task-page-jira-summary-generation'
import { useTaskPageGlobalEffects } from './use-task-page-global-effects'
import { useTaskPageLinearListEffects } from './linear/use-task-page-linear-list-effects'
import { useTaskPageLinearInOrcaEffects } from './linear/use-task-page-linear-in-orca-effects'
@@ -1,4 +1,4 @@
import type { TaskPageJiraCreationMetadataModel } from '../../use-task-page-jira-creation-metadata'
import type { TaskPageJiraCreationMetadataModel } from '../jira/use-task-page-jira-creation-metadata'
import { getWorkItemRepo } from '@/lib/work-item-repo-row'
import { useCallback, useMemo, useEffect } from 'react'
import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types'
@@ -2,7 +2,7 @@ import { useCallback } from 'react'
import type { TaskPageComposerActionsModel } from '../use-task-page-composer-actions'
import { getJiraSelfUser } from '@/components/jira-self-user'
import { JiraUserPicker, type JiraUserPickerFixedOption } from '@/components/jira-user-picker'
import { hasJiraAssigneeCreateField } from '@/components/task-page-jira-create-fields'
import { hasJiraAssigneeCreateField } from '@/components/task-page/jira/task-page-jira-create-fields'
import { getJiraProjectSelectionKey } from '@/components/task-page-jira-project-selection'
import { jiraListAssignableUsersForProject } from '@/runtime/runtime-jira-client'
import { translate } from '@/i18n/i18n'
@@ -34,7 +34,7 @@ import { Input } from '@/components/ui/input'
import {
getJiraCreateAllowedValueLabel,
isJiraScalarUserCreateField
} from '@/components/task-page-jira-create-fields'
} from '@/components/task-page/jira/task-page-jira-create-fields'
import { TaskPageJiraIssueAssigneeField } from './IssueAssigneeField'
import { TaskPageJiraIssueUserField } from './IssueUserField'
export function TaskPageJiraIssueDialog({
@@ -4,7 +4,7 @@ import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/re
import userEvent from '@testing-library/user-event'
import { afterEach, beforeEach, expect, it, vi } from 'vitest'
import { TaskPageJiraIssueDialog } from './IssueDialog'
import { useTaskPageJiraIssueCreation } from '../../use-task-page-jira-issue-creation'
import { useTaskPageJiraIssueCreation } from './use-task-page-jira-issue-creation'
import type { TaskPageComposerActionsModel } from '../use-task-page-composer-actions'
import type { JiraCreateField } from '../../../../../shared/jira/jira-types'
import type { TaskSourceContext } from '../../../../../shared/task-source-context'
@@ -16,9 +16,9 @@ const { search, create, getIssue } = vi.hoisted(() => ({
}))
vi.mock('@/runtime/runtime-jira-client', () => ({
jiraSearchUsers: search,
jiraCreateIssue: create,
jiraGetIssue: getIssue
}))
vi.mock('@/runtime/runtime-jira-user-fields-client', () => ({ jiraCreateIssue: create }))
afterEach(cleanup)
beforeEach(() => {
vi.resetAllMocks()
@@ -13,7 +13,7 @@ import {
isJiraUserCreateField,
isVisibleJiraCreateField
} from './task-page-jira-create-fields'
import type { JiraCreateField } from '../../../shared/jira/jira-types'
import type { JiraCreateField } from '../../../../../shared/jira/jira-types'
function field(overrides: Partial<JiraCreateField> = {}): JiraCreateField {
return { key: 'customfield_1', name: 'Custom', required: true, ...overrides }
@@ -1,5 +1,5 @@
import { buildJiraCreateTextAdf } from '@/components/jira-create-adf'
import type { JiraCreateField } from '../../../shared/jira/jira-types'
import type { JiraCreateField } from '../../../../../shared/jira/jira-types'
// 'assignee' is system here because the dialog renders a dedicated picker for it.
const JIRA_CREATE_SYSTEM_FIELD_KEYS = new Set([
@@ -1,8 +1,8 @@
import { useJiraCreateAssignee } from './use-jira-create-assignee'
import { useJiraCreateAssignee } from '../../use-jira-create-assignee'
import React, { useCallback, useEffect, useMemo } from 'react'
import { filterJiraProjectPickerProjects } from '@/components/jira-project-picker-filter'
import { isVisibleJiraCreateField } from '@/components/task-page-jira-create-fields'
import { isVisibleJiraCreateField } from '@/components/task-page/jira/task-page-jira-create-fields'
import {
compareJiraProjectsByDisplayLabel,
getJiraProjectSelectionKey
@@ -1,8 +1,8 @@
import type { TaskPageGitHubMutationStateModel } from './task-page/github/use-task-page-github-mutation-state'
import type { TaskPageGitHubMutationStateModel } from '../github/use-task-page-github-mutation-state'
import { useState, useRef, useEffect } from 'react'
import type { JiraIssueType, JiraCreateField } from '../../../shared/jira/jira-types'
import type { JiraIssueType, JiraCreateField } from '../../../../../shared/jira/jira-types'
import { useTaskCreationDraftRetention } from '@/components/use-task-creation-draft-retention'
import { writeNewJiraIssueDraft } from './task-page/task-page-draft-storage'
import { writeNewJiraIssueDraft } from '../task-page-draft-storage'
import { useTaskPageJiraCreationProjects } from './use-task-page-jira-creation-projects'
export function useTaskPageJiraCreationStatePrelude(model: TaskPageGitHubMutationStateModel) {
const {
@@ -1,10 +1,11 @@
import type { TaskPageLinearIssueCreationModel } from './task-page/linear/use-task-page-linear-issue-creation'
import type { TaskPageLinearIssueCreationModel } from '../linear/use-task-page-linear-issue-creation'
import { useCallback } from 'react'
import {
buildJiraCreateSubmission,
hasJiraAssigneeCreateField
} from '@/components/task-page-jira-create-fields'
import { jiraCreateIssue, jiraGetIssue } from '@/runtime/runtime-jira-client'
} from '@/components/task-page/jira/task-page-jira-create-fields'
import { jiraCreateIssue } from '@/runtime/runtime-jira-user-fields-client'
import { jiraGetIssue } from '@/runtime/runtime-jira-client'
import { toast } from 'sonner'
import { translate } from '@/i18n/i18n'
import { defaultScopeSource } from '@/lib/default-creation-host'
@@ -2,8 +2,11 @@
import { act, useState } from 'react'
import { renderHook, cleanup } from '@testing-library/react'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type { JiraIssueSummaryGenerationResult } from '../../../shared/jira/jira-issue-summary-generation'
import { LOCAL_EXECUTION_HOST_ID, toRuntimeExecutionHostId } from '../../../shared/execution-host'
import type { JiraIssueSummaryGenerationResult } from '../../../../../shared/jira/jira-issue-summary-generation'
import {
LOCAL_EXECUTION_HOST_ID,
toRuntimeExecutionHostId
} from '../../../../../shared/execution-host'
import { useTaskPageJiraSummaryGeneration } from './use-task-page-jira-summary-generation'
const mocks = vi.hoisted(() => ({ generate: vi.fn(), cancel: vi.fn(), error: vi.fn() }))
@@ -1,14 +1,14 @@
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { createBrowserUuid } from '@/lib/browser-uuid'
import { createNonSecureContextUuid as createBrowserUuid } from '../../../../../shared/non-secure-context-uuid'
import { isWebClientLocation } from '@/lib/web-client-location'
import { ipcOrRuntimeTargetForHostId } from '@/runtime/runtime-client-target'
import {
generateRuntimeJiraIssueSummary,
cancelRuntimeJiraIssueSummary
} from '@/runtime/runtime-jira-summary-generation-client'
import type { RuntimeClientTarget } from '../../../shared/runtime-client-target'
import type { JiraIssueSummaryGenerationRequest } from '../../../shared/jira/jira-issue-summary-generation'
import { getTaskSourceCacheScope } from '../../../shared/task-source-context'
import type { RuntimeClientTarget } from '../../../../../shared/runtime-client-target'
import type { JiraIssueSummaryGenerationRequest } from '../../../../../shared/jira/jira-issue-summary-generation'
import { getTaskSourceCacheScope } from '../../../../../shared/task-source-context'
import { translate } from '@/i18n/i18n'
import type { TaskPageJiraIssueCreationModel } from './use-task-page-jira-issue-creation'
@@ -1,4 +1,4 @@
import type { TaskPageJiraSummaryGenerationModel } from '../use-task-page-jira-summary-generation'
import type { TaskPageJiraSummaryGenerationModel } from './jira/use-task-page-jira-summary-generation'
import { useEffect } from 'react'
import { addAppKeyListener, removeAppKeyListener } from '@/lib/app-keyboard-router'
export function useTaskPageGlobalEffects(model: TaskPageJiraSummaryGenerationModel) {