import React, { useEffect, useState } from "react"; import { View, Text, TouchableOpacity } from "react-native"; import { useTheme } from "@styles"; import { THEME, LANGUAGE } from "@constants/localStorage"; import { storeObject, getObjectData } from "@service/asyncStorage"; import Layout from "@components/Layout/Layout"; import { useTranslation } from "react-i18next"; const SettingsScreen = ({ navigation }) => { const { t, i18n } = useTranslation(); const { colors, setScheme, isDark } = useTheme(); const [selectedTheme, setSelectedTheme] = useState({}); const [selectedLanguage, setSelectedLanguage] = useState({}); const themes = [ { id: 1, name: t("common.light"), type: "light", }, { id: 2, name: t("common.dark"), type: "dark", }, ]; const languages = [ { id: 1, name: t("common.serbian"), code: "sr", }, { id: 2, name: t("common.english"), code: "en", }, ]; const handleLanguage = async (language) => { setSelectedLanguage(language); await i18n.changeLanguage(language.code); await storeObject(LANGUAGE, language); }; const handleTheme = async (theme) => { setSelectedTheme(theme); if (theme.type === "dark") { setScheme("dark"); } else if (theme.type === "light") { setScheme("light"); } await storeObject(THEME, theme); }; useEffect(() => { async function handleThemeChange() { const theme = await getObjectData(THEME); if (theme !== null) { setSelectedTheme(theme); } else if (isDark) { setSelectedTheme(themes[1]); } else { setSelectedTheme(themes[0]); } } handleThemeChange(); }, []); useEffect(() => { async function handleLanguageChange() { const language = await getObjectData(LANGUAGE); if (language !== null) { setSelectedLanguage(language); //await i18n.changeLanguage(language.code); } else { setSelectedLanguage(languages[0]); //await i18n.changeLanguage(languages[0].code); } } handleLanguageChange(); }, []); return ( {t("common.theme")} {themes.map((theme) => ( handleTheme(theme)} > {theme.name} ))} {t("common.language")} {languages.map((lang) => ( handleLanguage(lang)} > {lang.name} ))} ); }; export default SettingsScreen;