NoticeCom.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import * as React from 'react';
  2. import { Div, Button, Image, Text, Avatar } from 'react-native-magnus';
  3. const logo = require('../assets/images/logo.png');
  4. import { getChatTime } from '../utils/TimeUtils';
  5. export default function NoticeCom({
  6. info = {
  7. receiveUserId: 0,
  8. },
  9. type,
  10. userId,
  11. onPress,
  12. toUserName = '',
  13. }) {
  14. const {
  15. receiveUserId,
  16. isRead,
  17. content,
  18. receiveAvatar,
  19. sendAvatar,
  20. sendTime,
  21. } = info;
  22. const isReceive = type === 'email' || receiveUserId === userId;
  23. const active = !isRead && isReceive;
  24. const avatar = isReceive ? sendAvatar : receiveAvatar;
  25. return (
  26. <Button block bg="white" py={0} px={13} rounded="none" onPress={onPress}>
  27. <Div
  28. flex={1}
  29. row
  30. py={10}
  31. alignItems="center"
  32. borderBottomWidth={1}
  33. borderBottomColor="gray100"
  34. >
  35. <Div
  36. w={10}
  37. h={10}
  38. bg={active ? 'yellow500' : 'gray100'}
  39. rounded="circle"
  40. />
  41. {type !== 'user' ? (
  42. <Div w={33} h={33} bg="green300" rounded="sm" ml={10} />
  43. ) : (
  44. <Image
  45. w={33}
  46. h={33}
  47. source={avatar ? { uri: avatar } : logo}
  48. ml={10}
  49. rounded="circle"
  50. />
  51. )}
  52. <Div flex={1} justifyContent="space-between" ml={5}>
  53. <Div row>
  54. <Text fontSize="sm" flex={1}>
  55. {type === 'user' ? toUserName : info.title}
  56. </Text>
  57. <Text fontSize="xs" color="gray400">
  58. {getChatTime(sendTime)}
  59. </Text>
  60. </Div>
  61. <Text fontSize="xs" color="gray400" numberOfLines={1}>
  62. {content || ''}
  63. </Text>
  64. </Div>
  65. </Div>
  66. </Button>
  67. );
  68. }