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

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",
},
});