import React from "react"; import { View, ImageBackground, ScrollView } from "react-native"; import { Text, List, Menu, Button } from "react-native-paper"; import i18n from "../i18nMessages.js"; import Moment from 'moment'; import 'moment/min/locales'; Moment.locale(i18n.locale); import API from '../API.js'; import { useSnapshot } from 'valtio'; import GlobalState from '../contexts/GlobalState.js'; import ProfileCardHorizontal from "../components/ProfileCardHorizontal.js"; import * as Updates from 'expo-updates'; let MenuView = ({ navigation }) => { const [value, setValue] = React.useState(i18n.locale); const [languageMenuVisible, setLanguageMenuVisible] = React.useState(false); const [myProfiles, setMyProfiles] = React.useState([]); const gState = useSnapshot(GlobalState); const viewer = gState.me; React.useEffect(() => { let subscribed = true; let getData = async () => { const r = await API.getMyProfiles(); if (!subscribed) return; setMyProfiles(Array.isArray(r?.profiles) ? r.profiles : []); } getData(); return () => { subscribed = false; } }, []); let changeLang = (locale) => { i18n.locale = locale; Moment.locale(locale); setValue(locale); //Change local on profile then reload } const languageOptions = [ { value: "es", label: i18n.t("message.languageSpanish") }, { value: "en", label: i18n.t("message.languageEnglish") }, { value: "da", label: i18n.t("message.languageDanish") }, { value: "fr", label: i18n.t("message.languageFrench") }, ]; const currentLanguageLabel = languageOptions.find((opt) => opt.value === value)?.label || i18n.t("message.languageEnglish"); const profileLists = myProfiles.map((profile) => { const profileInfo = profile?.profile || {}; const DefaultPhoto = "https://social.emmint.com/uploads/e6f9be6d665dc43417701bf16a90122c.png"; let photoUrl = profileInfo.photo ? 'https://social.emmint.com/' + profileInfo.photo : DefaultPhoto; let icon = profile._id ? (!profile.isGroup ? "person-outline" : "group") : ''; icon = icon === "person-outline" && profile.subscription && profile.subscription > (new Date() - 0) ? "assignment-ind" : icon; icon = icon === "group" && profile.isCourse ? "subscriptions" : icon; icon = icon === "group" && profile.isPrivate ? "screen-lock-portrait" : icon; return <> { await API.changeProfile(profile._id); GlobalState.me = await API.getMe(); }} left={props => } titleStyle={{fontWeight:"bold"}} descriptionNumberOfLines={3} key={profile._id} /> }) return ( } > {profileLists} { navigation.navigate("ProfileSettings") }} left={props => } /> } /> { navigation.navigate("Logout") }} left={props => } /> { navigation.navigate("Invite") }} left={props => } /> } /> {i18n.t("message.appLanguage")}: setLanguageMenuVisible(false)} anchor={ } > {languageOptions.map((option) => ( { changeLang(option.value); setLanguageMenuVisible(false); }} /> ))} {i18n.t("message.version")}: {Updates.runtimeVersion} {i18n.t("message.channel")}: {Updates.Channel} ) } export default MenuView;