From c508ea8feaf963ed78592b46ab5193d34c4498c7 Mon Sep 17 00:00:00 2001 From: Adolfo Reyna Date: Wed, 25 Feb 2026 18:49:50 -0500 Subject: [PATCH] fix: sync post translation state and clear feed cache on language change --- Views/Menu.js | 5 +++-- Views/ProfileSettings.js | 6 ++++++ components/Post.js | 5 +++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Views/Menu.js b/Views/Menu.js index 88ad30e..f6bd620 100644 --- a/Views/Menu.js +++ b/Views/Menu.js @@ -10,7 +10,7 @@ import { useSnapshot } from 'valtio'; import GlobalState from '../contexts/GlobalState.js'; import ProfileCardHorizontal from "../components/ProfileCardHorizontal.js"; import * as Updates from 'expo-updates'; - +import AsyncStorage from '@react-native-async-storage/async-storage'; let MenuView = ({ navigation }) => { const [value, setValue] = React.useState(i18n.locale); @@ -32,10 +32,11 @@ let MenuView = ({ navigation }) => { } }, []); - let changeLang = (locale) => { + let changeLang = async (locale) => { i18n.locale = locale; Moment.locale(locale); setValue(locale); + await AsyncStorage.removeItem('feed'); //Change local on profile then reload } const languageOptions = [ diff --git a/Views/ProfileSettings.js b/Views/ProfileSettings.js index 87df185..317ba87 100644 --- a/Views/ProfileSettings.js +++ b/Views/ProfileSettings.js @@ -11,6 +11,7 @@ import GlobalState from '../contexts/GlobalState.js'; import API from "../API.js"; import * as ImagePicker from 'expo-image-picker'; import { useNavigation } from '@react-navigation/native'; +import AsyncStorage from '@react-native-async-storage/async-storage'; @@ -158,6 +159,11 @@ let ProfileSettings = () => { ...currentProfile, }; } + await AsyncStorage.removeItem('feed'); + if (language && language !== i18n.locale) { + i18n.locale = language; + Moment.locale(language); + } console.log(r); setUpdateKey((k) => k + 1); if (goBackAfter) { diff --git a/components/Post.js b/components/Post.js index 6a379a4..60f7ba2 100644 --- a/components/Post.js +++ b/components/Post.js @@ -23,6 +23,11 @@ let Post = (props) => { const viewer = gState.me; let [showCommentsB, changeshowCommentsB] = useState(props.showComments || false); let [post, changePost] = useState(props.post); + + React.useEffect(() => { + changePost(props.post); + }, [props.post]); + const [deleted, setDeleted] = useState(false); let [likes, changeLikes] = useState(Object.keys(post.reactions).length); let [bookmarked, changeBookmarked] = useState(post.bookmarks && post.bookmarks.includes(viewer._id));