@@ -171,6 +171,7 @@ const MapProject = () => {
171171 const [ matchAPIToken , setMatchAPIToken ] = React . useState ( '' )
172172 const [ semanticBatchSize , setSemanticBatchSize ] = React . useState ( SEMANTIC_BATCH_SIZE )
173173 const [ reranker , setReranker ] = React . useState ( false )
174+ const [ bridgeEnabled , setBridgeEnabled ] = React . useState ( false )
174175 const [ candidatesScore , setCandidatesScore ] = React . useState ( { recommended : 99 , available : 70 } )
175176 const [ filters , setFilters ] = React . useState ( { } )
176177 const [ AIModel , setAIModel ] = React . useState ( '' )
@@ -231,6 +232,7 @@ const MapProject = () => {
231232 let AI_ASSISTANT_API_URL = window . AI_ASSISTANT_API_URL || process . env . AI_ASSISTANT_API_URL
232233 const inAIAssistantGroup = Boolean ( hasAuthGroup ( user , 'mapper_ai_assistant' ) && AI_ASSISTANT_API_URL )
233234 const CANDIDATES_LIMIT = reranker ? 30 : 10
235+ const canBridge = bridgeRef ?. current ?. canBridge ( )
234236
235237
236238 // algos - computed based on current language
@@ -351,6 +353,7 @@ const MapProject = () => {
351353 setMatchAPI ( response . data ?. match_api_url )
352354 setMatchAPIToken ( response . data ?. match_api_token )
353355 setReranker ( Boolean ( response . data ?. reranker ) )
356+ setBridgeEnabled ( Boolean ( response . data ?. bridge_enabled ) )
354357 if ( response . data ?. match_api_url )
355358 setSemanticBatchSize ( response . data ?. batch_size || SEMANTIC_BATCH_SIZE )
356359 setCandidatesScore ( response . data ?. score_configuration )
@@ -746,6 +749,7 @@ const MapProject = () => {
746749 }
747750 formData . append ( 'filters' , JSON . stringify ( getFilters ( ) ) )
748751 formData . append ( 'reranker' , reranker )
752+ formData . append ( 'bridge_enabled' , bridgeEnabled )
749753 const isUpdate = Boolean ( project ?. id )
750754 let service = APIService . new ( ) . overrideURL ( owner ) . appendToUrl ( 'map-projects/' )
751755 if ( isUpdate )
@@ -993,6 +997,8 @@ const MapProject = () => {
993997 subActions . push ( 'unmatched_only' )
994998 if ( reranker )
995999 subActions . push ( 'with_reranker' )
1000+ if ( bridgeEnabled )
1001+ subActions . push ( 'with_bridge_candidates' )
9961002
9971003 setRowStatuses ( prev => {
9981004 prev . unmapped = [ ]
@@ -1003,7 +1009,7 @@ const MapProject = () => {
10031009 await processWithConcurrency ( repo ) ;
10041010
10051011 setTimeout ( ( ) => {
1006- if ( bridgeRef ?. current ?. canBridge ( ) ) {
1012+ if ( bridgeEnabled ) {
10071013 subActions . push ( 'bridge_candidates' )
10081014 fetchBulkBridgeCandidates ( rows )
10091015 }
@@ -1026,6 +1032,11 @@ const MapProject = () => {
10261032 otherMatchedConceptsRef . current = otherMatchedConcepts ;
10271033 } , [ otherMatchedConcepts ] ) ;
10281034
1035+ React . useEffect ( ( ) => {
1036+ if ( bridgeEnabled && canBridge === false )
1037+ setBridgeEnabled ( false )
1038+ } , [ canBridge , bridgeEnabled ] )
1039+
10291040 React . useEffect ( ( ) => {
10301041 bridgeCandidatesRef . current = bridgeCandidates ;
10311042 } , [ bridgeCandidates ] ) ;
@@ -1336,7 +1347,7 @@ const MapProject = () => {
13361347 forEach ( getTop10RowCandidates ( index ) , ( candidate , i ) => {
13371348 if ( i < 10 )
13381349 _candidatesTop10 [ `__Candidate_Top_${ i + 1 } __` ] = candidate ?. id ? compact ( [ `${ candidate . id } :${ candidate . display_name } ` , `Score: ${ candidate ?. search_meta ?. search_normalized_score } ` ] ) . join ( '\n' ) : null
1339- else if ( bridgeRef ?. current ?. canBridge ( ) ) {
1350+ else if ( bridgeEnabled ) {
13401351 _bridgeCandidatesTop10 [ `__BridgeCandidate_Top_${ i - 9 } __` ] = candidate ? bridgeRef . current ?. getCandidateLabelForDownload ( candidate ) : null
13411352 }
13421353 } )
@@ -1634,7 +1645,7 @@ const MapProject = () => {
16341645 setTimeout ( ( ) => highlightTexts ( existingCandidates , null , false ) , 100 )
16351646 return
16361647 }
1637- if ( ! bridgeRef ?. current ?. canBridge ( ) )
1648+ if ( ! bridgeEnabled )
16381649 return
16391650 setIsLoadingInDecisionView ( true )
16401651 const payload = getPayloadForMatching ( [ __row ] , repo )
@@ -1994,6 +2005,9 @@ const MapProject = () => {
19942005 isLoadingLocales = { isLoadingLocales }
19952006 reranker = { reranker }
19962007 setReranker = { setReranker }
2008+ bridgeEnabled = { bridgeEnabled }
2009+ setBridgeEnabled = { setBridgeEnabled }
2010+ canBridge = { canBridge }
19972011 />
19982012 </ div >
19992013 }
@@ -2440,6 +2454,9 @@ const MapProject = () => {
24402454 isLoadingLocales = { isLoadingLocales }
24412455 reranker = { reranker }
24422456 setReranker = { setReranker }
2457+ bridgeEnabled = { bridgeEnabled }
2458+ setBridgeEnabled = { setBridgeEnabled }
2459+ canBridge = { canBridge }
24432460 />
24442461 </ div > :
24452462 (
0 commit comments