Skip to content
This repository has been archived by the owner on Jun 27, 2019. It is now read-only.

Max#mensagens nao lidas #115

Merged
merged 19 commits into from
May 14, 2019
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
dc6a70e
Inicio da implementação
Mex978 May 11, 2019
87f43cf
Adicionada efeito de click nas conversas com TouchableOpacity
Mex978 May 11, 2019
694f4cc
Adicionado adaptação para pegar o numero de msgs não lidas
Mex978 May 11, 2019
987b85b
Adicionado adaptação para pegar a ultima msg na conversa
Mex978 May 11, 2019
5ed915d
Adicionada função para calcular a data mostrada na ultima msg
Mex978 May 11, 2019
e19ca1e
Adicionada funcionalidade para mostrar o numero de msgs não lidas
Mex978 May 11, 2019
a5de6e2
Adicionada funcionalidade para mostrar a ultima msg enviada na conversa
Mex978 May 11, 2019
79013a3
Bug que fechava o app ao enviar mensagem corrigido
Mex978 May 11, 2019
fb1cdaa
Adicionada reestruturação da string no last msg da conversa
Mex978 May 11, 2019
0e43127
Merge branch 'dev' of https://github.com/ES2-UFPI/Unichat into max#me…
Mex978 May 12, 2019
bb780bd
Corrigido bug da warning repetida e ocasional erro relacionado ao toD…
Mex978 May 13, 2019
ae48bb5
Correção da correção
Mex978 May 13, 2019
4551379
bug fix warnings
Mex978 May 13, 2019
a2227a7
Corrigido forma de navegação entre telas com StackActions
Mex978 May 14, 2019
dfb80df
Todas as warnings e problemas foram corrigidos
Mex978 May 14, 2019
d8685ce
Removidos comentarios
Mex978 May 14, 2019
cb1794d
Merge branch 'dev' of https://github.com/ES2-UFPI/Unichat into max#me…
Mex978 May 14, 2019
21c7afc
Correção prettier-formater e data da ultima mensagem
Mex978 May 14, 2019
aa24c9a
Merge branch 'dev' into max#mensagensNaoLidas
netochaves May 14, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 83 additions & 30 deletions src/Screens/Chat/chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ export default class Conversas extends Component {
source
})
})
this.ref.update({ unreadMsgs: false, numUnreadMsgs: 0 })
this.setState({ messages })
})
}
Expand All @@ -85,48 +86,100 @@ export default class Conversas extends Component {
this.setState({ messageText: text, isValueNull: false })
}

sendMessage = () => {
const { destUser, user } = this.state
this.ref.set({
userKey: destUser.key
})
this.refDest.set({
userKey: user
})

const { messageText } = this.state
if (messageText === "") this.setState({ isValueNull: true })
const newMessage = {
content: messageText,
date: firebase.database().getServerTime(),
source: "1"
proccessLastMsg = string => {
let strProcs = ""
if (string.length >= 25) {
strProcs = `${string.substr(0, 25)}...`
} else {
strProcs = string
}
return strProcs
}

this.ref
.collection("messages")
.add({
content: newMessage.content,
date: newMessage.date,
source: newMessage.source
sendMessage = () => {
const { destUser, user, messageText } = this.state
if (messageText === "") {
this.setState({ isValueNull: true })
} else {
const newMessage = {
content: messageText,
date: firebase.database().getServerTime(),
source: "1"
}
this.ref.get().then(doc => {
if (!doc.exists) {
this.ref.set({
userKey: destUser.key,
unreadMsgs: false,
numUnreadMsgs: 0,
lastMessage: this.proccessLastMsg(newMessage.content),
dateLastMessage: newMessage.date
})
} else {
this.ref.update({
lastMessage: this.proccessLastMsg(newMessage.content),
dateLastMessage: newMessage.date
})
}
})
this.refDest.get().then(doc => {
if (!doc.exists) {
this.refDest.set({
userKey: user,
unreadMsgs: false,
numUnreadMsgs: 0,
lastMessage: "",
dateLastMessage: ""
})
this.refDest.get().then(conversa => {
const { numUnreadMsgs } = conversa.data()
this.refDest.update({
numUnreadMsgs: numUnreadMsgs + 1,
unreadMsgs: true
})
})
} else {
this.refDest.get().then(conversa => {
const { numUnreadMsgs } = conversa.data()
this.refDest.update({
numUnreadMsgs: numUnreadMsgs + 1,
unreadMsgs: true
})
})
}
})
.then(() => true)
.catch(error => error)

const translator = TranslatorFactory.createTranslator()
translator.translate(messageText, "en").then(translated => {
this.refDest
this.ref
.collection("messages")
.add({
content: newMessage.content,
date: newMessage.date,
contentTranslated: translated,
source: "2"
source: newMessage.source
})
.then(() => true)
.catch(error => error)
})

this.setState({ messageText: "", isValueNull: true })
const translator = TranslatorFactory.createTranslator()
translator.translate(messageText, "en").then(translated => {
this.refDest.update({
lastMessage: this.proccessLastMsg(translated),
dateLastMessage: newMessage.date
})

this.refDest
.collection("messages")
.add({
content: newMessage.content,
date: newMessage.date,
contentTranslated: translated,
source: "2"
})
.then(() => true)
.catch(error => error)
})

this.setState({ messageText: "", isValueNull: true })
}
}

render() {
Expand Down
82 changes: 64 additions & 18 deletions src/Screens/Conversas/conversas.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { ListItem, Icon } from "react-native-elements"
import LinearGradient from "react-native-linear-gradient"
import firebase from "react-native-firebase"
import AsyncStorage from "@react-native-community/async-storage"
import getTime from "~/functions/getTime"

export default class Conversas extends Component {
constructor() {
Expand All @@ -39,7 +40,12 @@ export default class Conversas extends Component {
myPicture: doc.data().profile_img_url
})
})
this.getData()
this.unsubscribe = firebase
.firestore()
.collection("users")
.onSnapshot(() => {
this.getData()
})
}

componentWillUnmount() {
Expand All @@ -58,11 +64,21 @@ export default class Conversas extends Component {
querySnapshot.forEach(doc => {
contacts.forEach(contact => {
if (contact.key === doc.id) {
const {
numUnreadMsgs,
unreadMsgs,
lastMessage,
dateLastMessage
} = doc.data()
conversas.push({
contact,
key: doc.id,
profileImage: contact.profile_img_url,
contactName: contact.contactName
contactName: contact.contactName,
unreadMsgs,
numUnreadMsgs,
lastMessage,
dateLastMessage
})
}
})
Expand Down Expand Up @@ -94,17 +110,23 @@ export default class Conversas extends Component {

deleteChat = item => {
const { conversas } = this.state

conversas.map(conversa => {
if(conversa.key === item.key) {
this.ref.collection("conversas").doc(item.key).collection("messages")
.get()
.then(snapshot => {
snapshot.docs.forEach(docs => {
docs.ref.delete()
if (conversa.key === item.key) {
this.ref
.collection("conversas")
.doc(item.key)
.collection("messages")
.get()
.then(snapshot => {
snapshot.docs.forEach(docs => {
docs.ref.delete()
})
})
})
this.ref.collection("conversas").doc(item.key).delete()
this.ref
.collection("conversas")
.doc(item.key)
.delete()
}
return true
})
Expand All @@ -117,6 +139,24 @@ export default class Conversas extends Component {

search = () => {}

parseTime = dateNanoScds => {
const date = dateNanoScds.toDate()
const atualDate = firebase.database().getServerTime()
let textDate = ""
if (atualDate.getDate() - date.getDate() === 0) {
textDate = getTime(date)
} else if (atualDate.getDate() - date.getDate() === 1) {
textDate = "Ontem"
} else if (atualDate.getDate() - date.getDate() >= 7) {
textDate = `${date
.getDate()
.toString()}/${date
.getMonth()
.toString()}/${date.getFullYear().toString()}`
}
return textDate
}

render() {
const { conversas, myName, myPicture } = this.state
return (
Expand Down Expand Up @@ -153,13 +193,19 @@ export default class Conversas extends Component {
<Text style={styles.name}>{item.contactName}</Text>
<Text style={styles.lastMsg}>{item.lastMessage}</Text>
<View style={styles.rightInformation}>
<Text style={styles.data}>{item.lastMessage}</Text>
<LinearGradient
colors={["#547BF0", "#6AC3FB"]}
style={styles.cont}
>
<Text style={styles.unread}>{item.unread}</Text>
</LinearGradient>
<Text style={styles.data}>
{this.parseTime(item.dateLastMessage)}
</Text>
{item.unreadMsgs && (
<LinearGradient
colors={["#547BF0", "#6AC3FB"]}
style={styles.cont}
>
<Text style={styles.unread}>
{item.numUnreadMsgs}
</Text>
</LinearGradient>
)}
</View>
</View>
}
Expand Down