fix chat open modal

This commit is contained in:
Lorito Tiago
2023-10-19 15:03:12 +01:00
parent 2a4796bb3d
commit 26b894ed1c
11 changed files with 976 additions and 831 deletions
+185 -176
View File
@@ -20,7 +20,7 @@ import { DeleteMessageModel, MessageModel } from '../../models/beast-orm';
import { AESEncrypt } from '../aesencrypt.service';
import { IncomingChatMessage, ChatMessageInterface, falseTypingMethod } from 'src/app/models/message.model';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { ConnectionStatus, NetworkServiceService} from 'src/app/services/network-service.service';
import { ConnectionStatus, NetworkServiceService } from 'src/app/services/network-service.service';
import { ChatSystemService } from './chat-system.service';
import { ViewedMessageService } from './viewed-message.service'
import * as FIFOProcessQueue from 'fifo-process-queue';
@@ -57,7 +57,7 @@ export class RoomService {
u
sessionStore = SessionStore
countDownTime = ''
chatOpen = false
chatOpen = false
messageUnread = false
status = {
@@ -78,12 +78,12 @@ export class RoomService {
* @description get user list from ws-chat-methods.service
* @returns chatUser[]
*/
getAllUsers = (): chatUser[] => {
getAllUsers = (): chatUser[] => {
return []
}
sortRoomList = () => {}
chatServiceDeleteRoom = (roomId) => {}
sortRoomList = () => { }
chatServiceDeleteRoom = (roomId) => { }
constructor(
public RochetChatConnectorService: RochetChatConnectorService,
@@ -130,22 +130,22 @@ export class RoomService {
}
/**
* @description convert rocketchat statues num to readable string
* @param text
* @returns
*/
/**
* @description convert rocketchat statues num to readable string
* @param text
* @returns
*/
statusNumberToText(text) {
if(text == '0') {
if (text == '0') {
return "offline"
}
else if(text == '1') {
else if (text == '1') {
return "online"
}
else if(text == '2') {
else if (text == '2') {
return "away"
}
else if(text == '3') {
else if (text == '3') {
return "busy"
}
}
@@ -162,7 +162,8 @@ export class RoomService {
}
}
setData({membersExcludeMe, members, u, customFields = {}, id, name, t, lastMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService,this.notificationService), _updatedAt }) {
setDataOnce = false
setData({ membersExcludeMe, members, u, customFields = {}, id, name, t, lastMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService, this.notificationService), _updatedAt }) {
this.customFields = customFields
this.id = id
this.name = name
@@ -170,16 +171,18 @@ export class RoomService {
this.lastMessage = lastMessage
this._updatedAt = _updatedAt
this.u = u
this.members = members
this.membersExcludeMe = membersExcludeMe
this.calDateDuration();
if(this.customFields?.countDownDate) {
if (this.customFields?.countDownDate) {
this.countDownDate(this.customFields.countDownDate);
}
if (this.setDataOnce == false) {
this.setDataOnce = true
this.updateContacts()
}
}
updateInfo() {
@@ -189,11 +192,11 @@ export class RoomService {
get online() {
if(!this.isGroup) {
for(let user of this.ChatSystemService.users) {
if (!this.isGroup) {
for (let user of this.ChatSystemService.users) {
for (const members of this.membersExcludeMe) {
if(members._id == user._id) {
if (members._id == user._id) {
return user.status
}
}
@@ -206,14 +209,14 @@ export class RoomService {
countDownDate(date) {
let difference = new Date(date).getTime() - new Date().getTime();
let c_day = Math.floor(difference/(1000*60*60*24));
let c_hours = Math.floor((difference % (1000*60*60*24)) / (1000*60*60));
let c_minutes = Math.floor((difference % (1000*60*60)) / (1000*60));
let c_seconds = Math.floor((difference % (1000*60)) / 1000);
let c_day = Math.floor(difference / (1000 * 60 * 60 * 24));
let c_hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
let c_minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
let c_seconds = Math.floor((difference % (1000 * 60)) / 1000);
this.countDownTime = this.addZero(c_day) + " : " + this.addZero(c_hours) + " : " + this.addZero(c_minutes) + " : " + this.addZero(c_seconds) ;
this.countDownTime = this.addZero(c_day) + " : " + this.addZero(c_hours) + " : " + this.addZero(c_minutes) + " : " + this.addZero(c_seconds);
if(difference < 0) {
if (difference < 0) {
this.deleteRoom();
@@ -237,15 +240,15 @@ export class RoomService {
// this.chatService.getRoomInfo(this.id).subscribe( room =>{});
if(this.t === 'p') {
this.chatService.deleteGroup(body).subscribe(res=>{
if (this.t === 'p') {
this.chatService.deleteGroup(body).subscribe(res => {
this.ChatSystemService.deleteRoom(this.id);
this.ChatSystemService.getAllRooms();
this.chatServiceDeleteRoom(this.id);
});
}
else {
this.chatService.deleteChannel(body).subscribe(res=>{
this.chatService.deleteChannel(body).subscribe(res => {
this.ChatSystemService.deleteRoom(this.id);
this.ChatSystemService.getAllRooms();
this.chatServiceDeleteRoom(this.id);
@@ -267,7 +270,7 @@ export class RoomService {
this.RochetChatConnectorService.updateRoomEventss(
this.id,
"stream-room-messages",
async (IncomingChatMessage:IncomingChatMessage) => {
async (IncomingChatMessage: IncomingChatMessage) => {
this.appendReceiveMessage.push(IncomingChatMessage)
@@ -276,29 +279,29 @@ export class RoomService {
this.RochetChatConnectorService.receiveStreamNotifyRoom((message) => {
if(message.fields.eventName == this.id+'/'+'typing') {
if (message.fields.eventName == this.id + '/' + 'typing') {
const args = message.fields.args
if (typeof args[1] != 'object') {
this.userThatIsTyping = this.usernameToDisplayName(args[0])
this.isTyping = args[1]
this.isTyping = args[1]
this.otherUserType = args[1]
const user = args[0]
if(SessionStore.user.UserName != user) {
if (SessionStore.user.UserName != user) {
this.readAllMessage()
}
} else if(args[0]?.method == 'viewMessage' || args[1]?.method == 'viewMessage') {
} else if (args[0]?.method == 'viewMessage' || args[1]?.method == 'viewMessage') {
const user = args[0]
if(SessionStore.user.UserName != user) {
if (SessionStore.user.UserName != user) {
this.readAllMessage()
}
} else if(args[0]?.method == 'deleteMessage' || args[1]?.method == 'deleteMessage') {
} else if (args[0]?.method == 'deleteMessage' || args[1]?.method == 'deleteMessage') {
this.deleteMessage(args[1]?.method?._id)
@@ -306,25 +309,25 @@ export class RoomService {
}
} else if (message.fields.eventName == this.id+'/'+'deleteMessage') {}
} else if (message.fields.eventName == this.id + '/' + 'deleteMessage') { }
})
}
appendReceiveMessage = FIFOProcessQueue(async (IncomingChatMessage:IncomingChatMessage, done) => {
appendReceiveMessage = FIFOProcessQueue(async (IncomingChatMessage: IncomingChatMessage, done) => {
let IncomingChatMessageArgs = IncomingChatMessage.fields.args[0]
let ChatMessage : ChatMessageInterface = this.fix_updatedAt(IncomingChatMessageArgs)
let ChatMessage: ChatMessageInterface = this.fix_updatedAt(IncomingChatMessageArgs)
let found = this.findMessageBy_id(ChatMessage._id) ||
this.findMessageBy_localReference(ChatMessage?.localReference)
this.findMessageBy_localReference(ChatMessage?.localReference)
// || await this.findMessageInDBByData({_id:ChatMessage._id, localReference:ChatMessage.localReference })
if(!found) {
if (!found) {
ChatMessage.origin = 'stream'
const message = await this.prepareCreate({message: ChatMessage, save: false});
const message = await this.prepareCreate({ message: ChatMessage, save: false });
this.registerSendMessage(message)
message.from = 'stream'
@@ -337,14 +340,14 @@ export class RoomService {
this.name = message.msg;
}
if(this.isSenderIsNotMe(ChatMessage)) {
if (this.isSenderIsNotMe(ChatMessage)) {
/* this.NativeNotificationService.sendNotificationChat({
message: message.msg,
title: this.name
}); */
}
if(this.hasLoadHistory == true) {
if (this.hasLoadHistory == true) {
this.messages.push(message)
await message.addMessageDB()
} else {
@@ -360,7 +363,7 @@ export class RoomService {
}
if(ChatMessage?.t == "au" || ChatMessage?.t == "ru" || ChatMessage?.t == "ul") {
if (ChatMessage?.t == "au" || ChatMessage?.t == "ru" || ChatMessage?.t == "ul") {
this.updateContacts()
} else if (ChatMessage?.t == "r") {
this.name = ChatMessage.msg
@@ -374,8 +377,8 @@ export class RoomService {
getUsersByStatus(status: 'offline' | 'online') {
return this.getAllUsers().filter((user => {
for(const member of this.membersExcludeMe) {
if(user._id == member._id && user.status == status) {
for (const member of this.membersExcludeMe) {
if (user._id == member._id && user.status == status) {
return true
}
}
@@ -385,8 +388,8 @@ export class RoomService {
getRoomMembersIds(): string[] {
try {
return this.membersExcludeMe.map((user)=> user._id)
} catch(error) {
return this.membersExcludeMe.map((user) => user._id)
} catch (error) {
return []
}
@@ -399,10 +402,10 @@ export class RoomService {
const AllMemberThatIsNotOffline = []
for(let user of allChatUsers) {
if(membersIds.includes(user._id)) {
for (let user of allChatUsers) {
if (membersIds.includes(user._id)) {
if(user.status != 'offline') {
if (user.status != 'offline') {
AllMemberThatIsNotOffline.push(user._id)
}
}
@@ -418,10 +421,10 @@ export class RoomService {
const AllMemberThatIsNotOffline = []
for(let user of allChatUsers) {
if(membersIds.includes(user._id)) {
for (let user of allChatUsers) {
if (membersIds.includes(user._id)) {
if(user.status == 'offline') {
if (user.status == 'offline') {
AllMemberThatIsNotOffline.push(user._id)
}
}
@@ -433,18 +436,18 @@ export class RoomService {
async deleteMessageToReceive(userId) {
const allDeleteMessages = await DeleteMessageModel.filter({rid: this.id}).execute()
const allDeleteMessages = await DeleteMessageModel.filter({ rid: this.id }).execute()
for(let message_ of allDeleteMessages) {
for (let message_ of allDeleteMessages) {
if(message_.needToReceiveBy.includes(userId)) {
if (message_.needToReceiveBy.includes(userId)) {
message_.needToReceiveBy = message_.needToReceiveBy.filter((e)=> e != userId)
this.sendFalseTypingReadMessage('deleteMessage',{_id:message_.messageId})
message_.needToReceiveBy = message_.needToReceiveBy.filter((e) => e != userId)
this.sendFalseTypingReadMessage('deleteMessage', { _id: message_.messageId })
if(message_.needToReceiveBy.length == 0) {
if (message_.needToReceiveBy.length == 0) {
const deleteMessage = await DeleteMessageModel.get({messageId: message_.messageId})
const deleteMessage = await DeleteMessageModel.get({ messageId: message_.messageId })
await deleteMessage.delete()
} else {
@@ -467,13 +470,13 @@ export class RoomService {
const message = this.messages.find((e) => e._id == DeletedMessageId)
if(message) {
if(message.delate == false) {
if (message) {
if (message.delate == false) {
this.deleteMessage(DeletedMessageId)
}
} else {
const message = await MessageModel.get({_id: DeletedMessageId})
if(message) {
const message = await MessageModel.get({ _id: DeletedMessageId })
if (message) {
(message as MessageModel).delete()
DeleteMessageModel.create({
@@ -496,13 +499,13 @@ export class RoomService {
* @description delete message in the view
* @param id message ID
*/
async deleteMessage(_id) {
async deleteMessage(_id) {
const id = _id
for (let i =0; i <= this.messages.length; i++) {
for (let i = 0; i <= this.messages.length; i++) {
if(this.messages[i]?._id == id ) {
if (this.messages[i]?._id == id) {
if (SessionStore.user.UserName == this.messages[i]?.u?.username) {
@@ -523,8 +526,8 @@ export class RoomService {
//Get previous last message from room
const previousLastMessage = this.messages.slice(-1)[0];
if(previousLastMessage.dateLabel == false) {
if(previousLastMessage) {
if (previousLastMessage.dateLabel == false) {
if (previousLastMessage) {
this.lastMessage = previousLastMessage;
this.calDateDuration(previousLastMessage._updatedAt)
this.sortRoomList()
@@ -532,7 +535,7 @@ export class RoomService {
} else {
const previousLastMessage = this.messages.slice(-2)[0];
if(previousLastMessage) {
if (previousLastMessage) {
this.lastMessage = previousLastMessage;
this.calDateDuration(previousLastMessage._updatedAt)
this.sortRoomList()
@@ -552,17 +555,17 @@ export class RoomService {
}
/**
* @description delete message in the view
* @param id message ID
*/
/**
* @description delete message in the view
* @param id message ID
*/
async deleteMessageFromArray(_id) {
const id = _id
for (let i =0; i <= this.messages.length; i++) {
for (let i = 0; i <= this.messages.length; i++) {
if(this.messages[i]?._id == id ) {
if (this.messages[i]?._id == id) {
this.messages.splice(i, 1)
@@ -578,7 +581,7 @@ export class RoomService {
deleteAll() {
this.messages.forEach((message) => {
if(message?._id) {
if (message?._id) {
this.sendDeleteRequest(message._id)
}
})
@@ -588,19 +591,19 @@ export class RoomService {
const deleteMessage = await DeleteMessageModel.all();
const toSend = deleteMessage.filter((DeleteMessage:string[])=> ! DeleteMessage.includes(userId))
const toSend = deleteMessage.filter((DeleteMessage: string[]) => !DeleteMessage.includes(userId))
}
async sendDeleteRequest(msgId) {
const message = this.messages.find((e)=>e._id == msgId)
const message = this.messages.find((e) => e._id == msgId)
await message.delateStatusFalse()
if(this.NetworkServiceService.getCurrentNetworkStatus() == ConnectionStatus.Online) {
if (this.NetworkServiceService.getCurrentNetworkStatus() == ConnectionStatus.Online) {
this.RochetChatConnectorService.deleteMessage(msgId).then(async() => {
this.RochetChatConnectorService.deleteMessage(msgId).then(async () => {
message.delateRequest = true
await message.saveChanges();
this.deleteMessage(msgId);
@@ -609,7 +612,7 @@ export class RoomService {
} else {
this.RochetChatConnectorService.registerCallback({
type: 'reConnect',
funx: async ()=> {
funx: async () => {
this.sendDeleteRequest(msgId)
return true
@@ -623,11 +626,11 @@ export class RoomService {
/**
* @description sen text message
*/
async send({file = null, attachments = null, temporaryData = {}, attachmentsModelData = {}}) {
async send({ file = null, attachments = null, temporaryData = {}, attachmentsModelData = {} }) {
this.message = this.message.replace(/(\n$)/,'')
this.message = this.message.replace(/(\n$)/, '')
if(file && this.message) {
if (file && this.message) {
this.send({})
}
@@ -647,14 +650,14 @@ export class RoomService {
//console.log('offlineChatMessage', offlineChatMessage)
this.message= ''
this.message = ''
this.hojeLabel({...offlineChatMessage})
this.hojeLabel({ ...offlineChatMessage })
const message: MessageService = await this.prepareCreate({message:offlineChatMessage, save: environment.chatOffline})
const message: MessageService = await this.prepareCreate({ message: offlineChatMessage, save: environment.chatOffline })
this.registerSendMessage(message)
if(this.hasLoadHistory == true) {
if (this.hasLoadHistory == true) {
await message.addMessageDB()
}
@@ -686,27 +689,27 @@ export class RoomService {
localReferenceExist(message: MessageService) {
for( const localReference of this.messagesLocalReference) {
if(localReference == message?.localReference) {
for (const localReference of this.messagesLocalReference) {
if (localReference == message?.localReference) {
return true
}
}
return false
}
sendTyping(text:string = this.message) {
sendTyping(text: string = this.message) {
if(this.lastMessageTxt == text) { return false }
if (this.lastMessageTxt == text) { return false }
this.lastTimeType = new Date().getTime()
const lastIsTyping = this.isTyping
if(text.length >= 1) {
if (text.length >= 1) {
this.isTyping = true
} else {
this.isTyping = false
}
if(lastIsTyping != this.isTyping) {
if (lastIsTyping != this.isTyping) {
this.RochetChatConnectorService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', this.isTyping).catch((error) => console.error(error));
}
@@ -714,8 +717,8 @@ export class RoomService {
this.typingWatch()
}
sendFalseTypingReadMessage(method,param: object) {
this.RochetChatConnectorService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', {method:method, params: param} as falseTypingMethod).catch((error) => console.error(error))
sendFalseTypingReadMessage(method, param: object) {
this.RochetChatConnectorService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', { method: method, params: param } as falseTypingMethod).catch((error) => console.error(error))
this.setTypingOff()
}
@@ -723,9 +726,9 @@ export class RoomService {
setTimeout(() => {
const now = new Date().getTime()
if((now - this.lastTimeType) >= 2888) {
if ((now - this.lastTimeType) >= 2888) {
if(this.isTyping == true) {
if (this.isTyping == true) {
this.isTyping = false
this.RochetChatConnectorService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', this.isTyping).catch((error) => console.error(error))
}
@@ -776,8 +779,8 @@ export class RoomService {
sortArrayISODate(messages: any): any[] {
return messages.sort((a,b) =>
new Date(b._updatedAt ).getTime()
return messages.sort((a, b) =>
new Date(b._updatedAt).getTime()
-
new Date(a._updatedAt).getTime())
}
@@ -789,16 +792,16 @@ export class RoomService {
goshPush(ChatMessage) {
let currentDateMessage = new Date(ChatMessage._updatedAt).toLocaleDateString()
if(currentDateMessage) {
if(!this.labelDates.find( e => e == currentDateMessage)) {
if (currentDateMessage) {
if (!this.labelDates.find(e => e == currentDateMessage)) {
this.labelDates.push(currentDateMessage)
const newMessage = this.fix_updatedAt({...ChatMessage})
const newMessage = this.fix_updatedAt({ ...ChatMessage })
newMessage.msg = currentDateMessage
const cloneMessage = new MessageServiceDateLabel()
cloneMessage.ChatSystemService = this.ChatSystemService
cloneMessage.setData({...newMessage} as any)
cloneMessage.setData({ ...newMessage } as any)
//
cloneMessage._id = ""
cloneMessage._updatedAt = ""
@@ -809,7 +812,7 @@ export class RoomService {
cloneMessage.file = undefined
cloneMessage.attachments = undefined
if(new Date().toLocaleDateString() == currentDateMessage) {
if (new Date().toLocaleDateString() == currentDateMessage) {
cloneMessage.msg = "hoje"
} else {
@@ -827,18 +830,18 @@ export class RoomService {
let currentDateMessageToDelete = new Date(MessageService._updatedAt).toLocaleDateString()
for (let i =0; i <= this.messages.length; i++) {
for (let i = 0; i <= this.messages.length; i++) {
let currentDateMessage = new Date(this.messages[i]._updatedAt).toLocaleDateString()
if(currentDateMessageToDelete == currentDateMessage) {
if (currentDateMessageToDelete == currentDateMessage) {
return
}
}
for (let i =0; i <= this.messages.length; i++) {
if(this.messages[i].dateLabel) {
if(this.messages[i].msg == currentDateMessageToDelete) {
for (let i = 0; i <= this.messages.length; i++) {
if (this.messages[i].dateLabel) {
if (this.messages[i].msg == currentDateMessageToDelete) {
this.messages.splice(i, 1)
}
}
@@ -849,14 +852,14 @@ export class RoomService {
hojeLabel(offlineChatMessage: any) {
let currentDateMessage = new Date().toLocaleDateString()
if(!this.labelDates.find( e => e == currentDateMessage)) {
if (!this.labelDates.find(e => e == currentDateMessage)) {
this.labelDates.push(currentDateMessage)
const cloneMessage = new MessageServiceDateLabel()
cloneMessage.ChatSystemService = this.ChatSystemService
cloneMessage.setData({...offlineChatMessage} as any)
cloneMessage.setData({ ...offlineChatMessage } as any)
cloneMessage.msg = "hoje"
cloneMessage._id = ""
@@ -872,12 +875,12 @@ export class RoomService {
}
async restoreMessageFromDB() {
if(environment.chatOffline && this.restoreOnce == false) {
if (environment.chatOffline && this.restoreOnce == false) {
this.restoreOnce = true
const messages = this.sortArrayISODate(await MessageModel.filter({rid:this.id}).execute()).reverse()
const messages = this.sortArrayISODate(await MessageModel.filter({ rid: this.id }).execute()).reverse()
for (let ChatMessage of messages) {
for (let ChatMessage of messages) {
this.goshPush(ChatMessage)
@@ -889,9 +892,9 @@ export class RoomService {
wewMessage.loadHistory = this.hasLoadHistory
wewMessage.messageModelInstance = ChatMessage
if(wewMessage.offline == false) {
if (wewMessage.offline == false) {
const message = await this.prepareCreate({message:ChatMessage})
const message = await this.prepareCreate({ message: ChatMessage })
message.from = 'Offline'
@@ -901,7 +904,7 @@ export class RoomService {
} else {
const offlineMessage = await this.prepareCreate({message:ChatMessage})
const offlineMessage = await this.prepareCreate({ message: ChatMessage })
offlineMessage.from = 'Offline'
offlineMessage.loadHistory = this.hasLoadHistory
@@ -912,12 +915,12 @@ export class RoomService {
}
if(wewMessage.delate && !wewMessage.offline && !wewMessage.delateRequest) {
if (wewMessage.delate && !wewMessage.offline && !wewMessage.delateRequest) {
this.sendDeleteRequest(wewMessage._id)
}
}
if(!this.lastMessage) {
if (!this.lastMessage) {
this.lastMessage = messages.pop();
}
@@ -931,9 +934,9 @@ export class RoomService {
// runs onces only
loadHistoryCount = 0
localMessages = []
async loadHistory({limit = 1000, forceUpdate = false }) {
async loadHistory({ limit = 1000, forceUpdate = false }) {
if(forceUpdate == false) {
if (forceUpdate == false) {
if (this.hasLoadHistory) {
return false
}
@@ -944,18 +947,18 @@ export class RoomService {
await this.restoreMessageFromDB()
const chatHistory: chatHistory = await this.RochetChatConnectorService.loadHistory(this.id, limit)
this.localMessages = this.messages.map( e => e._id)
this.localMessages = this.messages.map(e => e._id)
if(chatHistory?.result?.messages) {
if (Array.isArray(chatHistory?.result?.messages)) {
const users = this.getUsersByStatus('online')
for(let message of chatHistory.result.messages.reverse()) {
for (let message of chatHistory.result.messages.reverse()) {
message.origin = 'history'
message.from = 'History'
const messagesToSave = await this.prepareMessageCreateIfNotExist({message: message});
if(messagesToSave != null) {
const messagesToSave = await this.prepareMessageCreateIfNotExist({ message: message });
if (messagesToSave != null) {
messagesToSave.received = users.map((user) => user._id)
messagesToSave.addMessageDB()
@@ -964,13 +967,13 @@ export class RoomService {
}
for( const message of this.messagesBeforeOfflineAPI) {
const messagesToSave = await this.prepareMessageCreateIfNotExist({message: message});
if(messagesToSave != null) {
for (const message of this.messagesBeforeOfflineAPI) {
const messagesToSave = await this.prepareMessageCreateIfNotExist({ message: message });
if (messagesToSave != null) {
messagesToSave.received = users.map((user) => user._id)
this.addMessageDB.push(messagesToSave)
this.addMessageDB.push(messagesToSave)
}
}
this.messagesBeforeOfflineAPI = []
@@ -983,9 +986,9 @@ export class RoomService {
this.DoneLoadingHistory = true
if(chatHistory?.result?.messages) {
if (chatHistory?.result?.messages) {
if(!this.lastMessage) {
if (!this.lastMessage) {
this.lastMessage = chatHistory?.result?.messages.pop() as any
}
}
@@ -996,11 +999,11 @@ export class RoomService {
deletedMessages(chatHistory: chatHistory) {
const messagesToDelete = this.localMessages.filter( id => {
const found = chatHistory.result.messages.find( e => {
const messagesToDelete = this.localMessages.filter(id => {
const found = chatHistory.result.messages.find(e => {
return e._id == id
})
if(!found) {
if (!found) {
return true
}
@@ -1009,13 +1012,13 @@ export class RoomService {
for (const id of messagesToDelete) {
if(id != '') {
if (id != '') {
this.deleteMessage(id)
}
}
}
addMessageDB = FIFOProcessQueue(async ({messagesToSave}, callback) => {
addMessageDB = FIFOProcessQueue(async ({ messagesToSave }, callback) => {
await messagesToSave.addMessageDB()
callback()
@@ -1029,7 +1032,7 @@ export class RoomService {
async ChatMessageIsPresentInTheView(ChatMessage:ChatMessageInterface) {
async ChatMessageIsPresentInTheView(ChatMessage: ChatMessageInterface) {
let foundIndex;
const found = this.messages.find((MessageService, index) => {
@@ -1042,7 +1045,7 @@ export class RoomService {
})
if (foundIndex) {
return { found, foundIndex}
return { found, foundIndex }
} else {
return false
}
@@ -1051,14 +1054,14 @@ export class RoomService {
async prepareCreate({message, save = true}): Promise<MessageService> {
async prepareCreate({ message, save = true }): Promise<MessageService> {
message = this.fix_updatedAt(message)
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService,this.notificationService)
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService, this.notificationService)
wewMessage.setData(message)
wewMessage.loadHistory = this.hasLoadHistory
if(save) {
if (save) {
this.messages.push(wewMessage)
}
@@ -1068,7 +1071,7 @@ export class RoomService {
simplePrepareMessage(message) {
message = this.fix_updatedAt(message)
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService,this.notificationService)
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService, this.notificationService)
wewMessage.setData(message)
wewMessage.loadHistory = this.hasLoadHistory
@@ -1076,9 +1079,9 @@ export class RoomService {
}
private findMessageBy_id (id) {
for( let m of this.messages) {
if(m?._id == id) {
private findMessageBy_id(id) {
for (let m of this.messages) {
if (m?._id == id) {
return true
}
}
@@ -1086,9 +1089,9 @@ export class RoomService {
return false
}
private findMessageBy_localReference (localReference) {
for( let m of this.messages) {
if(m?.localReference == localReference) {
private findMessageBy_localReference(localReference) {
for (let m of this.messages) {
if (m?.localReference == localReference) {
return true
}
}
@@ -1096,27 +1099,27 @@ export class RoomService {
return false
}
private async findMessageInDBByLocalReference({localReference}) {
const a = await MessageModel.get({localReference: localReference})
private async findMessageInDBByLocalReference({ localReference }) {
const a = await MessageModel.get({ localReference: localReference })
return typeof a.id == 'number'
}
private async findMessageInDBByLocalId({_id}) {
const a = await MessageModel.get({_id: _id})
private async findMessageInDBByLocalId({ _id }) {
const a = await MessageModel.get({ _id: _id })
return typeof a.id == 'number'
}
private async findMessageInDBByData({localReference, _id}) {
private async findMessageInDBByData({ localReference, _id }) {
const a = await MessageModel.filter({localReference: localReference}).execute()
if(a.length >= 1) {
const a = await MessageModel.filter({ localReference: localReference }).execute()
if (a.length >= 1) {
return true
}
const c = await MessageModel.filter({_id: _id}).execute()
if(c.length >= 1) {
const c = await MessageModel.filter({ _id: _id }).execute()
if (c.length >= 1) {
return true
}
@@ -1125,7 +1128,7 @@ export class RoomService {
return false
}
async prepareMessageCreateIfNotExist({message}) {
async prepareMessageCreateIfNotExist({ message }) {
message = this.fix_updatedAt(message)
let found = await this.findMessageBy_id(message._id) || await this.findMessageBy_localReference(message.localReference)
@@ -1135,7 +1138,7 @@ export class RoomService {
const wewMessage = this.simplePrepareMessage(message)
this.goshPush(wewMessage)
this.messages.push(wewMessage)
return wewMessage
return wewMessage
} else {
return null
}
@@ -1149,8 +1152,8 @@ export class RoomService {
private fix_updatedAt(message): ChatMessageInterface {
if (message?.result) {
message.result._updatedAt = message.result._updatedAt['$date']
} else if(message?._updatedAt) {
if(message._updatedAt.hasOwnProperty('$date')) {
} else if (message?._updatedAt) {
if (message._updatedAt.hasOwnProperty('$date')) {
message._updatedAt = message._updatedAt['$date']
}
}
@@ -1161,23 +1164,23 @@ export class RoomService {
try {
const firstName = capitalizeTxt(username.split('.')[0])
const lastName = capitalizeTxt(username.split('.')[1])
const lastName = capitalizeTxt(username.split('.')[1])
return firstName + ' ' + lastName
} catch(error) {
} catch (error) {
return username
}
}
sendReadMessage() {
this.RochetChatConnectorService.readMessage(this.id).catch((error) =>{
this.RochetChatConnectorService.readMessage(this.id).catch((error) => {
console.error(error)
})
this.sendFalseTypingReadMessage('viewMessage', {})
this.messageUnread = false
}
async addContacts(userId:any) {
async addContacts(userId: any) {
let body = {
"roomId": this.id,
@@ -1194,7 +1197,7 @@ export class RoomService {
let res
let error = false
if(this.t == 'd') {
if (this.t == 'd') {
try {
res = await this.chatService.getMembers(this.id).toPromise();
@@ -1203,7 +1206,7 @@ export class RoomService {
error = true
}
if(error) {
if (error) {
res = await this.chatService.getMembers(this.id).toPromise();
}
@@ -1217,11 +1220,14 @@ export class RoomService {
error = true
}
if(error) {
if (error) {
res = await this.chatService.getGroupMembers(this.id).toPromise()
}
setTimeout(() => {
console.log("getGroupMembers", this.membersExcludeMe)
}, 500)
}
else {
@@ -1234,10 +1240,13 @@ export class RoomService {
error = true
}
if(error) {
if (error) {
res = await this.chatService.getChannelMembers(this.id).toPromise()
}
setTimeout(() => {
console.log("getChannelMembers", this.membersExcludeMe)
}, 500)
}
}