You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
5.4 KiB
188 lines
5.4 KiB
import { |
|
View, |
|
Text, |
|
StyleSheet, |
|
TouchableOpacity, |
|
SafeAreaView, |
|
StatusBar, |
|
Platform, |
|
} from "react-native"; |
|
import BackIcon from "../../components/BackIcon"; |
|
import fontSize from "../../utils/fontsizeUtils"; |
|
import LeftArrowIcon from "../../components/DownArrowIcon"; |
|
import { useNavigation } from "@react-navigation/native"; |
|
import { NativeStackNavigationProp } from "@react-navigation/native-stack"; |
|
import { useState, useEffect } from "react"; |
|
import { settingApi, MySetting } from "../../services/api/setting"; |
|
import { RootStackParamList } from "../../navigation/types"; |
|
import { eventBus } from "../../utils/eventBus"; |
|
import AsyncStorage from "@react-native-async-storage/async-storage"; |
|
import { useTranslation } from "react-i18next"; |
|
import useUserStore from "../../store/user"; |
|
|
|
export const SettingList = () => { |
|
const { t } = useTranslation(); |
|
const [mySetting, setMySetting] = useState<MySetting>(); |
|
const { user } = useUserStore(); |
|
const getMySetting = async () => { |
|
const res = await settingApi.getMySetting(); |
|
setMySetting(res); |
|
}; |
|
|
|
useEffect(() => { |
|
if (user?.user_id) { |
|
getMySetting(); |
|
} |
|
const refreshSetting = () => { |
|
getMySetting(); |
|
}; |
|
eventBus.on("refreshSetting", refreshSetting); |
|
return () => { |
|
eventBus.off("refreshSetting", refreshSetting); |
|
}; |
|
}, []); |
|
|
|
const navigation = |
|
useNavigation<NativeStackNavigationProp<RootStackParamList>>(); |
|
return ( |
|
<SafeAreaView style={styles.safeArea}> |
|
<StatusBar barStyle="dark-content" backgroundColor="#fff" /> |
|
<View style={styles.safeAreaContent}> |
|
<View style={styles.header}> |
|
<TouchableOpacity onPress={() => navigation.goBack()}> |
|
<BackIcon size={fontSize(24)} /> |
|
</TouchableOpacity> |
|
<Text style={styles.headerTitle}>{t("settings.title")}</Text> |
|
<View style={styles.placeholder} /> |
|
</View> |
|
|
|
<View style={styles.content}> |
|
<View style={styles.item}> |
|
<Text>{t("settings.profile")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</View> |
|
<View style={styles.item}> |
|
<Text>{t("settings.change_password")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</View> |
|
<View style={styles.item}> |
|
<Text>{t("settings.change_phone")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</View> |
|
</View> |
|
|
|
<View style={styles.content}> |
|
<TouchableOpacity |
|
onPress={() => { |
|
if (mySetting?.language && mySetting?.currency) { |
|
navigation.navigate("MyAddress"); |
|
} |
|
}} |
|
style={styles.item} |
|
> |
|
<Text>{t("settings.my_address")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</TouchableOpacity> |
|
<View style={styles.item}> |
|
<Text>{t("settings.feedback")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</View> |
|
<View style={styles.item}> |
|
<Text>{t("settings.privacy_policy")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</View> |
|
<View style={styles.item}> |
|
<Text>{t("settings.terms_of_use")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</View> |
|
|
|
<TouchableOpacity |
|
style={styles.item} |
|
onPress={() => { |
|
AsyncStorage.clear(); |
|
navigation.navigate("CountrySelect"); |
|
}} |
|
> |
|
<Text>{t("settings.clear_cache")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</TouchableOpacity> |
|
|
|
<View> |
|
<TouchableOpacity |
|
onPress={() => { |
|
// if (mySetting?.language && mySetting?.currency) { |
|
navigation.navigate("CountrySetting", { mySetting }); |
|
// } |
|
}} |
|
style={styles.item} |
|
> |
|
<Text>{t("settings.language_currency")}</Text> |
|
<Text> |
|
<LeftArrowIcon size={fontSize(20)} color="#acacac" /> |
|
</Text> |
|
</TouchableOpacity> |
|
</View> |
|
</View> |
|
</View> |
|
</SafeAreaView> |
|
); |
|
}; |
|
|
|
const styles = StyleSheet.create({ |
|
safeArea: { |
|
flex: 1, |
|
backgroundColor: "#fff", |
|
}, |
|
safeAreaContent: { |
|
flex: 1, |
|
paddingTop: 0, |
|
backgroundColor: "#f8f8f8", |
|
}, |
|
container: { |
|
flex: 1, |
|
backgroundColor: "#f8f8f8", |
|
}, |
|
header: { |
|
flexDirection: "row", |
|
alignItems: "center", |
|
justifyContent: "space-between", |
|
padding: 20, |
|
backgroundColor: "#fff", |
|
}, |
|
headerTitle: { |
|
fontSize: fontSize(18), |
|
fontWeight: "600", |
|
}, |
|
placeholder: { |
|
width: 24, |
|
}, |
|
content: { |
|
backgroundColor: "#fff", |
|
borderBottomWidth: 10, |
|
borderBottomColor: "#f8f8f8", |
|
}, |
|
item: { |
|
flexDirection: "row", |
|
alignItems: "center", |
|
justifyContent: "space-between", |
|
padding: 20, |
|
borderBottomWidth: 1, |
|
borderBottomColor: "#e0e0e0", |
|
}, |
|
});
|
|
|