SettingSysScreen.tsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import { StackScreenProps } from '@react-navigation/stack';
  2. import * as React from 'react';
  3. import { Div, Button, Image, Text, Avatar, Toggle } from 'react-native-magnus';
  4. import { ScrollView } from 'react-native-gesture-handler';
  5. import useModel from 'flooks';
  6. import User from '../stores/User';
  7. import request from '../utils/RequestUtils';
  8. import { toastShow, toastInfo, toastSuccess } from '../utils/SystemUtils';
  9. import { useTranslation } from 'react-i18next';
  10. export default function SettingSysScreen({ navigation }: StackScreenProps) {
  11. const { t } = useTranslation();
  12. const { riderInfo, setRider } = useModel(User, ['riderInfo']);
  13. const {
  14. newNews,
  15. newOrderTone,
  16. reminderTone,
  17. chatMessageReminder,
  18. } = riderInfo;
  19. function saveRider(key, val) {
  20. toastShow();
  21. request
  22. .post('/rider/save', {
  23. data: {
  24. id: riderInfo.id,
  25. [key]: val,
  26. },
  27. })
  28. .then((res) => {
  29. toastSuccess(t('she-zhi-cheng-gong'));
  30. setRider(res);
  31. })
  32. .catch((e) => {
  33. toastInfo(e.error);
  34. });
  35. }
  36. return (
  37. <Div bg="gray100">
  38. <ScrollView
  39. contentContainerStyle={{
  40. flexGrow: 1,
  41. backgroundColor: '#f2f2f2',
  42. }}
  43. >
  44. <Div
  45. h={60}
  46. alignItems="center"
  47. justifyContent="space-between"
  48. mt={10}
  49. bg="white"
  50. row
  51. px={14}
  52. >
  53. <Text fontSize="sm">{t('xin-xiao-xi-tong-zhi')}</Text>
  54. <Toggle
  55. on={newNews}
  56. onPress={() => {
  57. saveRider('newNews', !newNews);
  58. }}
  59. bg="gray200"
  60. circleBg="white"
  61. activeBg="yellow500"
  62. h={30}
  63. w={60}
  64. />
  65. </Div>
  66. <Div bg="white" px={14} py={10} my={10}>
  67. <Div row alignItems="center" justifyContent="space-between" py={10}>
  68. <Text fontSize="sm">{t('xin-dan-ti-shi-yin')}</Text>
  69. <Toggle
  70. on={newOrderTone}
  71. onPress={() => {
  72. saveRider('newOrderTone', !newOrderTone);
  73. }}
  74. bg="gray200"
  75. circleBg="white"
  76. activeBg="yellow500"
  77. h={30}
  78. w={60}
  79. />
  80. </Div>
  81. <Div row alignItems="center" justifyContent="space-between" py={10}>
  82. <Text fontSize="sm">{t('cui-dan-ti-shi-yin')}</Text>
  83. <Toggle
  84. on={reminderTone}
  85. onPress={() => {
  86. saveRider('reminderTone', !reminderTone);
  87. }}
  88. bg="gray200"
  89. circleBg="white"
  90. activeBg="yellow500"
  91. h={30}
  92. w={60}
  93. />
  94. </Div>
  95. <Div row alignItems="center" justifyContent="space-between" py={10}>
  96. <Text fontSize="sm">{t('liao-tian-xiao-xi-ti-xing')}</Text>
  97. <Toggle
  98. on={chatMessageReminder}
  99. onPress={() => {
  100. saveRider('chatMessageReminder', !chatMessageReminder);
  101. }}
  102. bg="gray200"
  103. circleBg="white"
  104. activeBg="yellow500"
  105. h={30}
  106. w={60}
  107. />
  108. </Div>
  109. </Div>
  110. </ScrollView>
  111. </Div>
  112. );
  113. }