ayand04

ChatlistScreen

Dec 8th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.12 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import {
  3. View,
  4. FlatList,
  5. Alert
  6. } from 'react-native';
  7. import {
  8. ThemeProvider,
  9. Toolbar,
  10. ListItem,
  11. } from 'react-native-material-ui';
  12. import { Button } from 'react-native-elements';
  13. import CustomStatusBar from '../statusBar/statusBar';
  14. import ProfilePic from './profilePicture';
  15. import CenterComponent from './centerElement';
  16. import uiTheme from '../../themes/defaultTheme';
  17. import styles from './styles';
  18.  
  19. export default class recentChatListScreen extends Component
  20. {
  21. constructor(props) {
  22. super(props);
  23. this.state = { elevation: 0 };
  24. }
  25.  
  26. onScroll = (e) => {
  27. const { contentOffset } = e.nativeEvent;
  28.  
  29. if (contentOffset.y > 0) {
  30. this.setState({ elevation: 16 });
  31. } else {
  32. this.setState({ elevation: 0 });
  33. }
  34. };
  35.  
  36. _renderItem = ({item}) => (
  37. <ListItem
  38. divider={true}
  39. numberOfLines={2}
  40. onPress={() => this.props.navigation.navigate('Chat')}
  41. onLongPress={() => Alert.alert('Long Tap')}
  42. leftElement={
  43. <ProfilePic image={item.avatar} theme={uiTheme}/>
  44. }
  45. centerElement={
  46. <CenterComponent
  47. primaryText={item.chatWith}
  48. secondaryText={item.lastMessage}
  49. timestamp={item.lastMessageTime}
  50. unreadCount={item.unreadMessages}
  51. theme={uiTheme}
  52. />
  53. }
  54. />
  55. );
  56.  
  57. render() {
  58. return (
  59. <ThemeProvider uiTheme={uiTheme}>
  60. <View style={styles.contentWrapper}>
  61. <CustomStatusBar themeColor={uiTheme.palette.primaryColor} elevation={0}/>
  62. <View>
  63. <Toolbar
  64. leftElement="menu"
  65. centerElement="Aloha"
  66. searchable={{
  67. autoFocus: true,
  68. placeholder: 'Search your chats',
  69. }}
  70. onLeftElementPress={() => this.props.navigation.navigate('DrawerOpen')}
  71. style={{container: getPlatformElevation(this.state.elevation)}}
  72. />
  73. </View>
  74. <View style={styles.chatListContainer}>
  75. <FlatList
  76. data={[
  77. {
  78. userId: 1,
  79. messageId: 'a',
  80. avatar: '',
  81. chatWith: 'Jane Doe',
  82. lastMessage: 'This line here will show the last message and takes up the whole line',
  83. lastMessageTime: 1509693517,
  84. unreadMessages: 0
  85. },
  86. {
  87. userId: 2,
  88. messageId: 'b',
  89. avatar: 'https://pbs.twimg.com/profile_images/718588760003383296/2AG8omMO_400x400.jpg',
  90. chatWith: 'John Doe',
  91. lastMessage: 'This line here will show the last loooooong message',
  92. lastMessageTime: 1509520707,
  93. unreadMessages: 100
  94. },
  95. {
  96. userId: 3,
  97. messageId: 'c',
  98. avatar: 'https://pbs.twimg.com/profile_images/907811115459125248/i8AzK6gR_400x400.jpg',
  99. chatWith: 'John Doe',
  100. lastMessage: 'This line here will show the last message',
  101. lastMessageTime: 1510134380,
  102. unreadMessages: 1
  103. },
  104. {
  105. userId: 4,
  106. messageId: 'c',
  107. avatar: 'https://s3.amazonaws.com/uifaces/faces/twitter/kfriedson/128.jpg',
  108. chatWith: 'John Doe',
  109. lastMessage: 'This line here will show the last message to show it extends and forms ellipsis',
  110. lastMessageTime: 1510246390,
  111. unreadMessages: 0
  112. },
  113. {
  114. userId: 5,
  115. messageId: 'd',
  116. avatar: '',
  117. chatWith: 'John Doe',
  118. lastMessage: 'This line here will show the last message',
  119. lastMessageTime: 1510134380,
  120. unreadMessages: 55
  121. },
  122. {
  123. userId: 6,
  124. messageId: 'e',
  125. avatar: 'https://s3.amazonaws.com/uifaces/faces/twitter/brynn/128.jpg',
  126. chatWith: 'John Doe',
  127. lastMessage: 'This line here will show the last message',
  128. lastMessageTime: 1510134380,
  129. unreadMessages: 1
  130. },
  131. {
  132. userId: 7,
  133. messageId: 'f',
  134. avatar: '',
  135. chatWith: 'John Doe',
  136. lastMessage: 'This line here will show the last message',
  137. lastMessageTime: 1510134380,
  138. unreadMessages: 0
  139. },
  140. {
  141. userId: 8,
  142. messageId: 'g',
  143. avatar: 'https://s3.amazonaws.com/uifaces/faces/twitter/ladylexy/128.jpg',
  144. chatWith: 'John Doe',
  145. lastMessage: 'This line here will show the last message',
  146. lastMessageTime: 1510134380,
  147. unreadMessages: 1
  148. },
  149. {
  150. userId: 9,
  151. messageId: 'h',
  152. avatar: 'https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg',
  153. chatWith: 'John Doe',
  154. lastMessage: 'This line here will show the last message',
  155. lastMessageTime: 1510134380,
  156. unreadMessages: 1
  157. }
  158. ]}
  159. renderItem={this._renderItem}
  160. keyExtractor={item => item.userId}
  161. onScroll={this.onScroll}
  162. />
  163. <Button
  164. icon={{name:"chat", size: 26}}
  165. title="START CHAT"
  166. raised
  167. borderRadius={50}
  168. containerViewStyle={uiTheme.button.container}
  169. buttonStyle={uiTheme.button.buttonStyle}
  170. fontWeight="500"
  171. />
  172. </View>
  173. </View>
  174. </ThemeProvider>
  175. );
  176. }
  177. }
Add Comment
Please, Sign In to add comment