fix(frontend): The suggested tasks section only filters the tasks by the repository’s title. (#9606)

This commit is contained in:
Hiep Le 2025-07-08 21:24:30 +07:00 committed by GitHub
parent aa2cacab44
commit 2a833325e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 21 additions and 16 deletions

View File

@ -252,8 +252,6 @@ describe("RepositorySelectionForm", () => {
expect(searchedRepo).toBeInTheDocument();
await userEvent.click(searchedRepo);
expect(mockOnRepoSelection).toHaveBeenCalledWith(
MOCK_SEARCH_REPOS[0].full_name,
);
expect(mockOnRepoSelection).toHaveBeenCalledWith(MOCK_SEARCH_REPOS[0]);
});
});

View File

@ -4,9 +4,10 @@ import { RepositorySelectionForm } from "./repo-selection-form";
import { useConfig } from "#/hooks/query/use-config";
import { RepoProviderLinks } from "./repo-provider-links";
import { useUserProviders } from "#/hooks/use-user-providers";
import { GitRepository } from "#/types/git";
interface RepoConnectorProps {
onRepoSelection: (repoTitle: string | null) => void;
onRepoSelection: (repo: GitRepository | null) => void;
}
export function RepoConnector({ onRepoSelection }: RepoConnectorProps) {

View File

@ -19,7 +19,7 @@ import {
} from "./repository-selection";
interface RepositorySelectionFormProps {
onRepoSelection: (repoTitle: string | null) => void;
onRepoSelection: (repo: GitRepository | null) => void;
}
export function RepositorySelectionForm({
@ -94,8 +94,7 @@ export function RepositorySelectionForm({
const handleRepoSelection = (key: React.Key | null) => {
const selectedRepo = allRepositories?.find((repo) => repo.id === key);
if (selectedRepo) onRepoSelection(selectedRepo.full_name);
if (selectedRepo) onRepoSelection(selectedRepo);
setSelectedRepository(selectedRepo || null);
setSelectedBranch(null); // Reset branch selection when repo changes
branchManuallyClearedRef.current = false; // Reset the flag when repo changes

View File

@ -6,16 +6,24 @@ import { TaskSuggestionsSkeleton } from "./task-suggestions-skeleton";
import { cn } from "#/utils/utils";
import { I18nKey } from "#/i18n/declaration";
import { TooltipButton } from "#/components/shared/buttons/tooltip-button";
import { GitRepository } from "#/types/git";
interface TaskSuggestionsProps {
filterFor?: string | null;
filterFor?: GitRepository | null;
}
export function TaskSuggestions({ filterFor }: TaskSuggestionsProps) {
const { t } = useTranslation();
const { data: tasks, isLoading } = useSuggestedTasks();
const suggestedTasks = filterFor
? tasks?.filter((task) => task.title === filterFor)
? tasks?.filter(
(element) =>
element.title === filterFor.full_name &&
!!element.tasks.find(
(task) => task.git_provider === filterFor.git_provider,
),
)
: tasks;
const hasSuggestedTasks = suggestedTasks && suggestedTasks.length > 0;

View File

@ -4,14 +4,15 @@ import { HomeHeader } from "#/components/features/home/home-header";
import { RepoConnector } from "#/components/features/home/repo-connector";
import { TaskSuggestions } from "#/components/features/home/tasks/task-suggestions";
import { useUserProviders } from "#/hooks/use-user-providers";
import { GitRepository } from "#/types/git";
<PrefetchPageLinks page="/conversations/:conversationId" />;
function HomeScreen() {
const { providers } = useUserProviders();
const [selectedRepoTitle, setSelectedRepoTitle] = React.useState<
string | null
>(null);
const [selectedRepo, setSelectedRepo] = React.useState<GitRepository | null>(
null,
);
const providersAreSet = providers.length > 0;
@ -25,11 +26,9 @@ function HomeScreen() {
<hr className="border-[#717888]" />
<main className="flex flex-col lg:flex-row justify-between gap-8">
<RepoConnector
onRepoSelection={(title) => setSelectedRepoTitle(title)}
/>
<RepoConnector onRepoSelection={(repo) => setSelectedRepo(repo)} />
<hr className="md:hidden border-[#717888]" />
{providersAreSet && <TaskSuggestions filterFor={selectedRepoTitle} />}
{providersAreSet && <TaskSuggestions filterFor={selectedRepo} />}
</main>
</div>
);