@@ -20,6 +20,7 @@ import { useProviderRepositoriesForUser } from "../../data/git-providers/provide
20
20
import { openReconfigureWindow } from "./reconfigure-github" ;
21
21
import { NewProjectCreateFromURL } from "./NewProjectCreateFromURL" ;
22
22
import { useStateWithDebounce } from "../../hooks/use-state-with-debounce" ;
23
+ import { useFeatureFlag } from "../../data/featureflag-query" ;
23
24
24
25
type Props = {
25
26
selectedProvider ?: AuthProviderInfo ;
@@ -28,6 +29,7 @@ type Props = {
28
29
} ;
29
30
export const NewProjectRepoSelection : FC < Props > = ( { selectedProvider, onProjectCreated, onChangeGitProvider } ) => {
30
31
const { toast } = useToast ( ) ;
32
+ const newProjectIncrementalRepoSearchBBS = useFeatureFlag ( "newProjectIncrementalRepoSearchBBS" ) ;
31
33
const { data : isGitHubAppEnabled } = useIsGithubAppEnabled ( ) ;
32
34
const areGitHubWebhooksUnauthorized = useAreGithubWebhooksUnauthorized ( selectedProvider ?. host ?? "" ) ;
33
35
const createProject = useCreateProject ( ) ;
@@ -57,6 +59,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
57
59
const noReposAvailable = ! ! ( reposInAccounts ?. length === 0 || areGitHubWebhooksUnauthorized ) ;
58
60
const isGitHub = selectedProvider ?. host === "github.com" ;
59
61
const isBitbucketServer = selectedProvider ?. authProviderType === "BitbucketServer" ;
62
+ const enableIncrementalSearch = isBitbucketServer && newProjectIncrementalRepoSearchBBS ;
60
63
61
64
const accounts = useMemo ( ( ) => {
62
65
const accounts = new Map < string , { avatarUrl : string } > ( ) ;
@@ -75,15 +78,15 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
75
78
const filteredRepos = useMemo ( ( ) => {
76
79
return areGitHubWebhooksUnauthorized
77
80
? [ ]
78
- : // filtering is done on server for Bitbucket Server
79
- isBitbucketServer
81
+ : // filtering is done on server for incremental search
82
+ enableIncrementalSearch
80
83
? Array . from ( reposInAccounts || [ ] )
81
84
: Array . from ( reposInAccounts || [ ] ) . filter (
82
85
( r ) =>
83
86
( ! selectedAccount || r . account === selectedAccount ) &&
84
87
`${ r . name } ` . toLowerCase ( ) . includes ( repoSearchFilter . toLowerCase ( ) . trim ( ) ) ,
85
88
) ;
86
- } , [ areGitHubWebhooksUnauthorized , isBitbucketServer , repoSearchFilter , reposInAccounts , selectedAccount ] ) ;
89
+ } , [ areGitHubWebhooksUnauthorized , enableIncrementalSearch , repoSearchFilter , reposInAccounts , selectedAccount ] ) ;
87
90
88
91
const reconfigure = useCallback ( ( ) => {
89
92
openReconfigureWindow ( {
@@ -129,7 +132,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
129
132
// Adjusts selectedAccount when repos change if we don't already have a selected account
130
133
useEffect ( ( ) => {
131
134
// TODO: Once all providers filter on the server we can remove this account selection logic
132
- if ( isBitbucketServer ) {
135
+ if ( enableIncrementalSearch ) {
133
136
return ;
134
137
}
135
138
@@ -146,7 +149,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
146
149
setSelectedAccountAndClearSearch ( first ?. account ) ;
147
150
}
148
151
}
149
- } , [ isBitbucketServer , reposInAccounts , selectedAccount , setSelectedAccountAndClearSearch ] ) ;
152
+ } , [ enableIncrementalSearch , reposInAccounts , selectedAccount , setSelectedAccountAndClearSearch ] ) ;
150
153
151
154
return (
152
155
< >
@@ -156,7 +159,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
156
159
</ p >
157
160
< div className = { `mt-2 flex-col ${ noReposAvailable && isGitHub ? "w-96" : "" } ` } >
158
161
< div className = "px-8 flex flex-col space-y-2" data-analytics = '{"label":"Identity"}' >
159
- { ! isBitbucketServer && (
162
+ { ! enableIncrementalSearch && (
160
163
< NewProjectAccountSelector
161
164
accounts = { accounts }
162
165
selectedAccount = { selectedAccount }
@@ -214,7 +217,7 @@ export const NewProjectRepoSelection: FC<Props> = ({ selectedProvider, onProject
214
217
215
218
const ReposLoading : FC = ( ) => (
216
219
< 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" >
218
221
< div className = "flex items-center justify-center space-x-2 text-gray-400 text-sm" >
219
222
< img className = "h-4 w-4 animate-spin" src = { Spinner } alt = "loading spinner" />
220
223
< span > Fetching repositories...</ span >
0 commit comments