ayand04

ChatlistScreen

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