File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed
Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change 1+ import {
2+ createContext ,
3+ useContext ,
4+ useState ,
5+ ReactNode ,
6+ useEffect ,
7+ } from 'react'
8+
9+ type Language = 'python' | 'javascript' | 'java' | 'cpp'
10+
11+ interface LanguageContextType {
12+ selectedLanguage : Language
13+ setSelectedLanguage : ( language : Language ) => void
14+ }
15+
16+ const LanguageContext = createContext < LanguageContextType | undefined > (
17+ undefined
18+ )
19+
20+ export const LanguageProvider = ( { children } : { children : ReactNode } ) => {
21+ // Get the language from localStorage or default to 'python'
22+ const initialLanguage =
23+ ( localStorage . getItem ( 'selectedLanguage' ) as Language ) || 'python'
24+
25+ const [ selectedLanguage , setSelectedLanguage ] =
26+ useState < Language > ( initialLanguage )
27+
28+ useEffect ( ( ) => {
29+ localStorage . setItem ( 'selectedLanguage' , selectedLanguage )
30+ } , [ selectedLanguage ] )
31+
32+ return (
33+ < LanguageContext . Provider
34+ value = { { selectedLanguage, setSelectedLanguage } }
35+ >
36+ { children }
37+ </ LanguageContext . Provider >
38+ )
39+ }
40+
41+ export const useLanguage = ( ) => {
42+ const context = useContext ( LanguageContext )
43+ if ( ! context ) {
44+ throw new Error ( 'useLanguage must be used within a LanguageProvider' )
45+ }
46+ return context
47+ }
You can’t perform that action at this time.
0 commit comments