SettingSysScreen.tsx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. export default function SettingSysScreen({ navigation }: StackScreenProps) {
  10. const { riderInfo, setRider } = useModel(User, ['riderInfo']);
  11. const {
  12. newNews,
  13. newOrderTone,
  14. reminderTone,
  15. chatMessageReminder,
  16. } = riderInfo;
  17. function saveRider(key, val) {
  18. toastShow();
  19. request
  20. .post('/rider/save', {
  21. data: {
  22. id: riderInfo.id,
  23. [key]: val,
  24. },
  25. })
  26. .then((res) => {
  27. toastSuccess('设置成功');
  28. setRider(res);
  29. })
  30. .catch((e) => {
  31. toastInfo(e.error);
  32. });
  33. }
  34. return (
  35. <Div bg="gray100">
  36. <ScrollView
  37. contentContainerStyle={{
  38. flexGrow: 1,
  39. backgroundColor: '#f2f2f2',
  40. }}
  41. >
  42. <Div
  43. h={60}
  44. alignItems="center"
  45. justifyContent="space-between"
  46. mt={10}
  47. bg="white"
  48. row
  49. px={14}
  50. >
  51. <Text fontSize="sm">新消息通知</Text>
  52. <Toggle
  53. on={newNews}
  54. onPress={() => {
  55. saveRider('newNews', !newNews);
  56. }}
  57. bg="gray200"
  58. circleBg="white"
  59. activeBg="yellow500"
  60. h={30}
  61. w={60}
  62. />
  63. </Div>
  64. <Div bg="white" px={14} py={10} my={10}>
  65. <Div row alignItems="center" justifyContent="space-between" py={10}>
  66. <Text fontSize="sm">新单提示音</Text>
  67. <Toggle
  68. on={newOrderTone}
  69. onPress={() => {
  70. saveRider('newOrderTone', !newOrderTone);
  71. }}
  72. bg="gray200"
  73. circleBg="white"
  74. activeBg="yellow500"
  75. h={30}
  76. w={60}
  77. />
  78. </Div>
  79. <Div row alignItems="center" justifyContent="space-between" py={10}>
  80. <Text fontSize="sm">催单提示音</Text>
  81. <Toggle
  82. on={reminderTone}
  83. onPress={() => {
  84. saveRider('reminderTone', !reminderTone);
  85. }}
  86. bg="gray200"
  87. circleBg="white"
  88. activeBg="yellow500"
  89. h={30}
  90. w={60}
  91. />
  92. </Div>
  93. <Div row alignItems="center" justifyContent="space-between" py={10}>
  94. <Text fontSize="sm">聊天消息提醒</Text>
  95. <Toggle
  96. on={chatMessageReminder}
  97. onPress={() => {
  98. saveRider('chatMessageReminder', !chatMessageReminder);
  99. }}
  100. bg="gray200"
  101. circleBg="white"
  102. activeBg="yellow500"
  103. h={30}
  104. w={60}
  105. />
  106. </Div>
  107. </Div>
  108. </ScrollView>
  109. </Div>
  110. );
  111. }