@@ -7,15 +7,14 @@ import {
77 Spinner ,
88 Tab ,
99 TabList ,
10- TabValue ,
1110 Text
1211} from '@fluentui/react-components' ;
13- import { useContext , useEffect , useState } from 'react' ;
12+ import { useContext , useEffect } from 'react' ;
1413import { useAppDispatch , useAppSelector } from '../../../../store' ;
1514import { componentNames , telemetry } from '../../../../telemetry' ;
1615import { CODE_SNIPPETS_COPY_BUTTON } from '../../../../telemetry/component-names' ;
1716import { ValidationContext } from '../../../services/context/validation-context/ValidationContext' ;
18- import { getSnippet } from '../../../services/slices/snippet.slice' ;
17+ import { getSnippet , setSnippetTabSuccess } from '../../../services/slices/snippet.slice' ;
1918import { translateMessage } from '../../../utils/translate-messages' ;
2019import { Monaco } from '../../common' ;
2120import { copyAndTrackText } from '../../common/copy' ;
@@ -129,7 +128,15 @@ const trackLinkClickedEvent = (
129128
130129const ExtraSnippetInformation : React . FC < { language : string } > = ( { language } ) => {
131130 const styles = useSnippetStyles ( ) ;
132- const { sdkDownloadLink, sdkDocLink } = supportedLanguages [ language ] ;
131+ const langKey = Object . keys ( supportedLanguages ) . find (
132+ ( key ) => key . toLowerCase ( ) === language . toLowerCase ( )
133+ ) ;
134+
135+ if ( ! langKey ) {
136+ return null ;
137+ }
138+
139+ const { sdkDownloadLink, sdkDocLink } = supportedLanguages [ langKey ] ;
133140 const libParagraph =
134141 setCommentSymbol ( language ) +
135142 translateMessage ( 'Leverage libraries' ) +
@@ -182,10 +189,14 @@ const GetSnippets = () => {
182189
183190const RenderSnippets = ( ) => {
184191 const styles = useSnippetStyles ( ) ;
185- const [ selectedLanguage , setSelectedLanguage ] = useState < TabValue > ( 'CSharp' ) ;
192+ const dispatch = useAppDispatch ( ) ;
193+ const selectedLanguage = useAppSelector ( state => state . snippets . snippetTab ) ;
186194
187195 const onTabSelect = ( _event : SelectTabEvent , data : SelectTabData ) => {
188- setSelectedLanguage ( data . value ) ;
196+ const newLang = data . value as string ;
197+ dispatch ( setSnippetTabSuccess ( newLang ) ) ;
198+ dispatch ( getSnippet ( newLang . toLowerCase ( ) ) ) ;
199+ telemetry . trackTabClickEvent ( newLang ) ;
189200 } ;
190201 return (
191202 < div id = 'snippets-tablist' className = { styles . container } >
@@ -213,12 +224,14 @@ const SnippetContent: React.FC<SnippetContentProps> = (
213224 const dispatch = useAppDispatch ( ) ;
214225 const language = props . language . toLowerCase ( ) ;
215226 const snippets = useAppSelector ( ( state ) => state . snippets ) ;
227+ const sampleQuery = useAppSelector ( ( state ) => state . sampleQuery ) ;
228+ const snippetTab = useAppSelector ( ( state ) => state . snippets . snippetTab ) ;
216229 const { data, pending : loadingState , error } = snippets ;
217230 const hasSnippetError =
218231 ( error ?. status && error . status === 404 ) ||
219232 ( error ?. status && error . status === 400 ) ;
220233
221- const snippet = ! loadingState && data ? data [ language ] : '' ;
234+ const snippet = ! loadingState && data ? data [ language . toLowerCase ( ) ] : '' ;
222235
223236 const handleCopy = async ( ) => {
224237 copyAndTrackText ( snippet , CODE_SNIPPETS_COPY_BUTTON , {
@@ -227,8 +240,16 @@ const SnippetContent: React.FC<SnippetContentProps> = (
227240 } ;
228241
229242 useEffect ( ( ) => {
230- dispatch ( getSnippet ( language ) ) ;
231- } , [ language , dispatch ] ) ;
243+ if ( snippetTab ) {
244+ dispatch ( getSnippet ( snippetTab . toLowerCase ( ) ) ) ;
245+ }
246+ } , [ snippetTab ] ) ;
247+
248+ useEffect ( ( ) => {
249+ if ( sampleQuery && snippetTab ) {
250+ dispatch ( getSnippet ( snippetTab . toLowerCase ( ) ) ) ;
251+ }
252+ } , [ sampleQuery ] ) ;
232253
233254 const showSpinner = loadingState && ! hasSnippetError ;
234255 const notAvailable = ! loadingState && hasSnippetError ;
0 commit comments