uberDriver.tsx 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { View, Text, StyleSheet } from "react-native";
  2. import NormalButton from "../../../global/normal_button";
  3. import { useState } from "react";
  4. import SingleSelectButtonGroup from "../../../global/select_button";
  5. import useSignUpStore from "../../../../providers/signup_form_store";
  6. type UberDriverProps = {
  7. goToNextPage: () => void;
  8. };
  9. const UberDriver: React.FC<UberDriverProps> = ({ goToNextPage }) => {
  10. const { signUpFormData, setSignUpFormData } = useSignUpStore();
  11. const [error, setError] = useState("");
  12. const options = [{ label: "是(可享有獨家優惠)" }, { label: "否" }];
  13. const handleNext = () => {
  14. if (signUpFormData.isUberDriver == undefined) {
  15. setError("請確保所有資料都已填寫。");
  16. } else {
  17. setError("");
  18. goToNextPage();
  19. }
  20. };
  21. const selectLabelShown = () => {
  22. if (signUpFormData.isUberDriver == undefined) {
  23. return null;
  24. } else if (signUpFormData.isUberDriver == true) {
  25. return "是(可享有獨家優惠)";
  26. } else {
  27. return "否";
  28. }
  29. };
  30. return (
  31. <>
  32. <View style={styles.container}>
  33. <Text style={styles.text}>請問您是Uber Driver嗎?</Text>
  34. <SingleSelectButtonGroup
  35. options={options}
  36. onSelectionChange={(label) => {
  37. const convertLabelToBoolean =
  38. label === "是(可享有獨家優惠)" ? true : label === "否" ? false : undefined;
  39. setSignUpFormData({ ...signUpFormData, isUberDriver: convertLabelToBoolean });
  40. }}
  41. shouldShowRedOutline={error ? true : false}
  42. selectedOption={selectLabelShown()}
  43. />
  44. <NormalButton
  45. title={<Text style={{ color: "#fff" }}>下一步</Text>}
  46. onPress={handleNext}
  47. extendedStyle={{}}
  48. />
  49. {error && <Text style={styles.errorMessage}>{error}</Text>}
  50. </View>
  51. </>
  52. );
  53. };
  54. const styles = StyleSheet.create({
  55. container: {
  56. flex: 1,
  57. marginHorizontal: 20,
  58. },
  59. text: {
  60. fontSize: 20,
  61. paddingBottom: 10,
  62. },
  63. errorMessage: {
  64. fontSize: 14,
  65. color: "#ff0033",
  66. fontWeight: "400",
  67. marginLeft: 10,
  68. marginTop: 10,
  69. },
  70. });
  71. export default UberDriver;