Skip to content

Commit 1cff847

Browse files
feat: Add LanguageContext for managing selected programming language
1 parent 85e165d commit 1cff847

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
}

0 commit comments

Comments
 (0)