Skip to content

Commit 76fdc79

Browse files
committed
wrap incremental search code w/ feature flag
1 parent efe9604 commit 76fdc79

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

components/dashboard/src/data/featureflag-query.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const featureFlags = {
2626
gitpod_desktop_use_local_ssh_proxy: false,
2727
supervisor_live_git_status: false,
2828
enabledOrbitalDiscoveries: "",
29+
newProjectIncrementalRepoSearchBBS: false,
2930
};
3031

3132
type FeatureFlags = typeof featureFlags;

components/dashboard/src/data/git-providers/provider-repositories-query.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { useCurrentUser } from "../../user-context";
1010
import { CancellationTokenSource } from "vscode-jsonrpc";
1111
import { useAuthProviders } from "../auth-providers/auth-provider-query";
1212
import { GetProviderRepositoriesParams } from "@gitpod/gitpod-protocol";
13+
import { useFeatureFlag } from "../featureflag-query";
1314

1415
type UseProviderRepositoriesQueryArgs = {
1516
providerHost: string;
@@ -22,13 +23,15 @@ export const useProviderRepositoriesForUser = ({
2223
search,
2324
}: UseProviderRepositoriesQueryArgs) => {
2425
const user = useCurrentUser();
26+
const newProjectIncrementalRepoSearchBBS = useFeatureFlag("newProjectIncrementalRepoSearchBBS");
2527
const { data: authProviders } = useAuthProviders();
2628
const selectedProvider = authProviders?.find((p) => p.host === providerHost);
2729

2830
const queryKey: any[] = ["provider-repositories", { userId: user?.id }, { providerHost, installationId }];
2931

3032
const isBitbucketServer = selectedProvider?.authProviderType === "BitbucketServer";
31-
if (isBitbucketServer) {
33+
const enableIncrementalSearch = isBitbucketServer && newProjectIncrementalRepoSearchBBS;
34+
if (enableIncrementalSearch) {
3235
queryKey.push({ search });
3336
}
3437

@@ -47,8 +50,8 @@ export const useProviderRepositoriesForUser = ({
4750
hints: { installationId },
4851
};
4952

50-
// TODO: Have this be the default for all providers
51-
if (isBitbucketServer) {
53+
// TODO: Have this be the default for all provider types
54+
if (enableIncrementalSearch) {
5255
params.searchString = search;
5356
params.limit = 50;
5457
params.maxPages = 1;

components/dashboard/src/projects/new-project/NewProjectRepoSelection.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { useProviderRepositoriesForUser } from "../../data/git-providers/provide
2020
import { openReconfigureWindow } from "./reconfigure-github";
2121
import { NewProjectCreateFromURL } from "./NewProjectCreateFromURL";
2222
import { useStateWithDebounce } from "../../hooks/use-state-with-debounce";
23+
import { useFeatureFlag } from "../../data/featureflag-query";
2324

2425
type Props = {
2526
selectedProvider?: AuthProviderInfo;
@@ -28,6 +29,7 @@ type Props = {
2829
};
2930
export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProjectCreated, onChangeGitProvider }) => {
3031
const { toast } = useToast();
32+
const newProjectIncrementalRepoSearchBBS = useFeatureFlag("newProjectIncrementalRepoSearchBBS");
3133
const { data: isGitHubAppEnabled } = useIsGithubAppEnabled();
3234
const areGitHubWebhooksUnauthorized = useAreGithubWebhooksUnauthorized(selectedProvider?.host ?? "");
3335
const createProject = useCreateProject();
@@ -57,6 +59,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
5759
const noReposAvailable = !!(reposInAccounts?.length === 0 || areGitHubWebhooksUnauthorized);
5860
const isGitHub = selectedProvider?.host === "github.com";
5961
const isBitbucketServer = selectedProvider?.authProviderType === "BitbucketServer";
62+
const enableIncrementalSearch = isBitbucketServer && newProjectIncrementalRepoSearchBBS;
6063

6164
const accounts = useMemo(() => {
6265
const accounts = new Map<string, { avatarUrl: string }>();
@@ -75,15 +78,15 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
7578
const filteredRepos = useMemo(() => {
7679
return areGitHubWebhooksUnauthorized
7780
? []
78-
: // filtering is done on server for Bitbucket Server
79-
isBitbucketServer
81+
: // filtering is done on server for incremental search
82+
enableIncrementalSearch
8083
? Array.from(reposInAccounts || [])
8184
: Array.from(reposInAccounts || []).filter(
8285
(r) =>
8386
(!selectedAccount || r.account === selectedAccount) &&
8487
`${r.name}`.toLowerCase().includes(repoSearchFilter.toLowerCase().trim()),
8588
);
86-
}, [areGitHubWebhooksUnauthorized, isBitbucketServer, repoSearchFilter, reposInAccounts, selectedAccount]);
89+
}, [areGitHubWebhooksUnauthorized, enableIncrementalSearch, repoSearchFilter, reposInAccounts, selectedAccount]);
8790

8891
const reconfigure = useCallback(() => {
8992
openReconfigureWindow({
@@ -129,7 +132,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
129132
// Adjusts selectedAccount when repos change if we don't already have a selected account
130133
useEffect(() => {
131134
// TODO: Once all providers filter on the server we can remove this account selection logic
132-
if (isBitbucketServer) {
135+
if (enableIncrementalSearch) {
133136
return;
134137
}
135138

@@ -146,7 +149,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
146149
setSelectedAccountAndClearSearch(first?.account);
147150
}
148151
}
149-
}, [isBitbucketServer, reposInAccounts, selectedAccount, setSelectedAccountAndClearSearch]);
152+
}, [enableIncrementalSearch, reposInAccounts, selectedAccount, setSelectedAccountAndClearSearch]);
150153

151154
return (
152155
<>
@@ -156,7 +159,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
156159
</p>
157160
<div className={`mt-2 flex-col ${noReposAvailable && isGitHub ? "w-96" : ""}`}>
158161
<div className="px-8 flex flex-col space-y-2" data-analytics='{"label":"Identity"}'>
159-
{!isBitbucketServer && (
162+
{!enableIncrementalSearch && (
160163
<NewProjectAccountSelector
161164
accounts={accounts}
162165
selectedAccount={selectedAccount}
@@ -214,7 +217,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
214217

215218
const ReposLoading: FC = () => (
216219
<div className="border rounded-xl border-gray-100 dark:border-gray-700 flex-col">
217-
<div className="px-12 py-16 text-center text-gray-500 bg-gray-50 dark:bg-gray-800 rounded-xl w-96 h-h96 flex items-center justify-center">
220+
<div className="px-12 py-20 text-center text-gray-500 bg-gray-50 dark:bg-gray-800 rounded-xl flex items-center justify-center">
218221
<div className="flex items-center justify-center space-x-2 text-gray-400 text-sm">
219222
<img className="h-4 w-4 animate-spin" src={Spinner} alt="loading spinner" />
220223
<span>Fetching repositories...</span>

0 commit comments

Comments
 (0)