Advertisement
Guest User

Untitled

a guest
Sep 27th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. //Modal won't collapse after login
  2. import React, { Component } from 'react'
  3. import { View, StyleSheet, Text, FlatList, TouchableOpacity, Modal, TextInput } from 'react-native'
  4. import { AddMessage } from '../presentation/'
  5. import Turbo from 'turbo360'
  6. import config from '../../config'
  7.  
  8. class Messages extends Component {
  9.  
  10. constructor() {
  11. super()
  12. this.state = {
  13. messages: [
  14. ],
  15. modalVisible: true,
  16. login: {
  17. username:'',
  18. Password:''
  19. },
  20. currentUser: null
  21. }
  22. }
  23.  
  24. componentDidMount(){
  25. Turbo({site_id: config.TURBO_APP_ID}).fetch('message', {for: 'Puppet'})
  26. .then((data)=>{
  27. this.setState({
  28. messages: data,
  29. })
  30. })
  31. }
  32.  
  33. addMessage(){
  34. Turbo({site_id: config.TURBO_APP_ID}).create('message', { id: 4, for: 'Puppet', from: 'Trump', content: 'Youre really really fucked' })
  35. .then((data)=>{
  36. let newMessages = Object.assign([],this.state.messages)
  37. newMessages.push(data)
  38. this.setState({
  39. messages: newMessages
  40.  
  41. })
  42. })
  43. .catch((err)=>{
  44. alert(err.message)
  45. })
  46.  
  47. }
  48.  
  49. loginUpdated(text, key){
  50. let newLogin = Object.assign({}, this.state.login)
  51. newLogin[key] = text
  52. this.setState({
  53. login: newLogin
  54. })
  55. }
  56.  
  57. loginSubmitted(){
  58. let message =null
  59. Turbo({site_id: config.TURBO_APP_ID}).fetch('user', {username: this.state.login.username})
  60. .then((data=>{
  61. if(data.length===0){
  62. message = "Register success: "
  63. return Turbo({site_id: config.TURBO_APP_ID}).createUser(this.state.login)
  64. }else{
  65. message = "Login success: "
  66. return Turbo({site_id: config.TURBO_APP_ID}).login(this.state.login)
  67. }
  68. }))
  69. .then((data)=>{
  70. this.setState({
  71. currentUser: data.id,
  72. modalVisible: false
  73. })
  74. })
  75. .catch((err)=>{
  76. alert(err.message)
  77. })
  78. }
  79.  
  80.  
  81. _renderMessage(item) {
  82. return (
  83. <View>
  84. <Text style={[{paddingTop:3}, styles.messageText]}>
  85. From: {item.from}
  86. </Text>
  87. <Text style={[{paddingBottom:5}, styles.messageText]}>
  88. {item.content}
  89. </Text>
  90. </View>
  91. )
  92. }
  93.  
  94.  
  95.  
  96. render() {
  97. return (
  98. <View style={styles.main}>
  99. <Modal
  100. animationType='slide'
  101. transparent={true}
  102. visible={this.state.modalVisible}>
  103. <View style={styles.modal}>
  104. <View style={styles.login}>
  105. <Text>Login / Signup</Text>
  106. <Text>Username</Text>
  107. <TextInput onChangeText={(text)=>this.loginUpdated(text, 'username')}/>
  108. <Text>Password</Text>
  109. <TextInput onChangeText={(text)=>this.loginUpdated(text, 'password')}/>
  110. <TouchableOpacity onPress={()=>this.loginSubmitted()}>
  111. <Text>SUBMIT</Text>
  112. </TouchableOpacity>
  113.  
  114. </View>
  115.  
  116. </View>
  117. </Modal>
  118. <FlatList
  119. keyExtractor={(item)=>item.id}
  120. style={StyleSheet.main}
  121. data={this.state.messages}
  122. renderItem={({ item }) => this._renderMessage(item)}
  123. />
  124. <AddMessage addMessage={()=>this.addMessage()}/>
  125. </View>
  126.  
  127. )
  128. }
  129. }
  130.  
  131. const styles=StyleSheet.create({
  132. main:{
  133. width:100+'%',
  134. height:100+'%'
  135. },
  136. message:{
  137. width:100+'%',
  138. borderBottomWidth:1,
  139. borderColor: 'rgb(71,77,89)'
  140. },
  141. messageText:{
  142. color: 'rgb(12,0,51)',
  143. fontFamily:'helvetica',
  144. fontSize: 14
  145.  
  146. },
  147. modal: {
  148. width:100+'%',
  149. height:100+'%',
  150. backgroundColor:'rgba(0,0,0,.85)',
  151. alignItems: 'center',
  152. justifyContent: 'center'
  153. },
  154. login: {
  155. width:80+'%',
  156. height:30+'%',
  157. backgroundColor: 'rgb(225,255,255)'
  158. }
  159. })
  160.  
  161. export default Messages
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement