From bbf477af697a2e49dc2446604f8bab540add4081 Mon Sep 17 00:00:00 2001 From: Jinjing <6427696+AmethystLiang@users.noreply.github.com> Date: Tue, 2 Jun 2026 10:30:23 -0700 Subject: [PATCH] Allow hiding Jira task source (#4479) * feat: allow hiding Jira task source * fix: address task source hide review finding --- src/renderer/src/components/TaskPage.tsx | 65 ++++++++++++++++-------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/src/renderer/src/components/TaskPage.tsx b/src/renderer/src/components/TaskPage.tsx index 1e0a9b274c8..8d8859e4087 100644 --- a/src/renderer/src/components/TaskPage.tsx +++ b/src/renderer/src/components/TaskPage.tsx @@ -2555,6 +2555,29 @@ export default function TaskPage(): React.JSX.Element { () => SOURCE_OPTIONS.filter((source) => visibleTaskProviders.includes(source.id)), [visibleTaskProviders] ) + const hideTaskSource = useCallback( + (provider: TaskProvider, label: string) => { + const visibleWithoutProvider = preferredVisibleTaskProviders.filter( + (visibleProvider) => visibleProvider !== provider + ) + // Why: an empty provider list normalizes back to "all providers"; keep + // one other source visible so opting out actually hides this provider. + const nextVisibleTaskProviders: TaskProvider[] = + visibleWithoutProvider.length > 0 ? visibleWithoutProvider : ['github'] + const nextDefaultTaskSource = resolveVisibleTaskProvider( + defaultTaskSource, + nextVisibleTaskProviders + ) + + void updateSettings({ + visibleTaskProviders: nextVisibleTaskProviders, + defaultTaskSource: nextDefaultTaskSource + }).catch(() => { + toast.error(`Failed to hide ${label}.`) + }) + }, + [defaultTaskSource, preferredVisibleTaskProviders, updateSettings] + ) // Why: seed the preset + query from the user's saved default synchronously // so the first fetch effect issues exactly one request keyed to the final @@ -4055,7 +4078,7 @@ export default function TaskPage(): React.JSX.Element { !newIssueOpen && !newLinearIssueOpen && !linearConnectOpen && - activeModal === 'none', + activeModal === 'none', 'tasks_open' ) @@ -4117,11 +4140,7 @@ export default function TaskPage(): React.JSX.Element { return sortedAvailableJiraProjects.filter((project) => getJiraProjectSearchText(project, includeJiraSiteNameInProjectLabel).includes(query) ) - }, [ - includeJiraSiteNameInProjectLabel, - newJiraIssueProjectQuery, - sortedAvailableJiraProjects - ]) + }, [includeJiraSiteNameInProjectLabel, newJiraIssueProjectQuery, sortedAvailableJiraProjects]) const newJiraIssueTargetProject = useMemo( () => @@ -7610,19 +7629,23 @@ export default function TaskPage(): React.JSX.Element {
Browse, edit, create, and start work from Jira issues directly from here.
- +