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