11import { images } from "@/constants/images" ;
22import { defaultLanguageId , languages } from "@/data/languages" ;
3+ import { useLanguageStore } from "@/store/UseLanguageStore" ;
34import type { SupportedLanguage } from "@/types/learning" ;
45import { Ionicons } from "@expo/vector-icons" ;
56import { router } from "expo-router" ;
@@ -19,8 +20,14 @@ import { useSafeAreaInsets } from "react-native-safe-area-context";
1920export default function LanguageSelectionScreen ( ) {
2021 const insets = useSafeAreaInsets ( ) ;
2122 const { width } = useWindowDimensions ( ) ;
23+ const persistedLanguageId = useLanguageStore ( ( state ) => state . selectedLanguageId ) ;
24+ const setSelectedLanguage = useLanguageStore (
25+ ( state ) => state . setSelectedLanguageId ,
26+ ) ;
2227 const [ searchQuery , setSearchQuery ] = useState ( "" ) ;
23- const [ selectedLanguageId , setSelectedLanguageId ] = useState ( defaultLanguageId ) ;
28+ const [ selectedLanguageId , setSelectedLanguageId ] = useState (
29+ persistedLanguageId ?? defaultLanguageId ,
30+ ) ;
2431 const earthWidth = Math . min ( width * 0.95 , 520 ) ;
2532 const earthHeight = earthWidth * ( 828 / 1127 ) ;
2633
@@ -51,6 +58,15 @@ export default function LanguageSelectionScreen() {
5158 [ selectedLanguageId ] ,
5259 ) ;
5360
61+ const handleConfirmLanguage = ( ) => {
62+ if ( ! selectedLanguage ) {
63+ return ;
64+ }
65+
66+ setSelectedLanguage ( selectedLanguage . id ) ;
67+ router . replace ( "/" ) ;
68+ } ;
69+
5470 return (
5571 < View className = "flex-1 bg-white" >
5672 < ScrollView
@@ -133,6 +149,8 @@ export default function LanguageSelectionScreen() {
133149 < Pressable
134150 accessibilityLabel = { `Confirm ${ selectedLanguage . name } ` }
135151 className = "mt-[24px] flex-row items-center justify-center gap-[12px] rounded-[26px] bg-lingua-deep-purple px-[22px] py-[18px]"
152+ disabled = { ! selectedLanguage }
153+ onPress = { handleConfirmLanguage }
136154 style = { ( { pressed } ) => [ styles . confirmButton , pressed && styles . pressed ] }
137155 >
138156 < Ionicons name = "checkmark-circle" size = { 26 } color = "#FFFFFF" />
0 commit comments