Files
doneit-web/src/app/services/chat/chat-storage.service.ts
T

193 lines
4.5 KiB
TypeScript
Raw Normal View History

2022-01-30 09:34:56 +01:00
import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage';
2022-03-03 22:57:33 +01:00
import { environment } from 'src/environments/environment';
2022-01-30 09:34:56 +01:00
@Injectable({
providedIn: 'root'
})
export class ChatStorageService {
constructor(
private storage: Storage,
) { }
2022-03-04 14:20:39 +01:00
/**
2022-01-30 09:34:56 +01:00
* @description delete message in the DB. get all messages, delete then corresponding message and update the store
* @param id message ID
*/
2022-03-04 14:20:39 +01:00
2022-03-03 22:57:33 +01:00
async deleteMessageFromDb(messageId, roomId) {
if (environment.chatOffline) {
await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => {
if(!Array.isArray(messages)) {
messages = []
}
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
await messages.forEach( async (message, index) => {
2022-01-30 09:34:56 +01:00
if(message._id == messageId) {
messages.splice(index, 1)
}
2022-03-03 22:57:33 +01:00
2022-01-30 09:34:56 +01:00
})
this.storage.set('chatmsg' + roomId, messages).then((value) => {
2022-04-28 09:32:27 +01:00
//
2022-01-30 09:34:56 +01:00
});
2022-03-03 22:57:33 +01:00
2022-01-30 09:34:56 +01:00
})
}
2022-03-03 22:57:33 +01:00
}
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
async updateMessageDB(ChatMessage, roomId, identificator) {
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
if (environment.chatOffline) {
await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => {
if(!Array.isArray(messages)) {
messages = []
}
let index;
const find = messages.find((message, _index)=> {
if(message?.localReference == ChatMessage?.localReference ||
message?._id == ChatMessage?._id) {
index = _index
return true
}
return false
})
if(find) {
messages[index] = Object.assign(messages[index], ChatMessage)
await this.storage.set('chatmsg' + roomId, messages)
} else {
2022-04-28 09:32:27 +01:00
//
2022-03-03 22:57:33 +01:00
}
})
}
}
async updateChat(history, roomId, identificator = '_id') {
if (environment.chatOffline) {
await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => {
if(!Array.isArray(messages)) {
messages = []
}
history.forEach( async(ChatMessage)=>{
let index;
const find = messages.find((message, _index)=> {
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
if(message[identificator]) {
if(message[identificator] == ChatMessage[identificator]) {
index = _index
return true
}
}
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
return false
})
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
if(find) {
messages[index] = Object.assign(messages[index], ChatMessage)
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
// if(messages[index].msg.includes('***********')) {
2022-04-28 09:32:27 +01:00
//
//
//
2022-03-03 22:57:33 +01:00
// }
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
await this.storage.set('chatmsg' + roomId, messages)
} else {
2022-04-28 09:32:27 +01:00
2022-03-03 22:57:33 +01:00
}
})
})
2022-01-30 09:34:56 +01:00
}
2022-03-03 22:57:33 +01:00
}
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
async addMessageDB(ChatMessage, roomId) {
if (environment.chatOffline) {
await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => {
if(!Array.isArray(messages)) {
messages = []
}
2022-01-30 09:34:56 +01:00
2022-03-03 22:57:33 +01:00
if(!ChatMessage._id && environment.chatOffline) {
delete ChatMessage.temporaryData
messages.push(ChatMessage)
2022-04-28 09:32:27 +01:00
2022-03-03 22:57:33 +01:00
await this.storage.set('chatmsg' + roomId, messages)
2022-04-28 09:32:27 +01:00
//
2022-03-03 22:57:33 +01:00
} else {
const find = messages.find((message)=> {
return message._id == ChatMessage._id
})
if(!find) {
delete ChatMessage.temporaryData
messages.push(ChatMessage)
await this.storage.set('chatmsg' + roomId, messages)
2022-04-28 09:32:27 +01:00
//
2022-03-04 14:20:39 +01:00
} else {
2022-04-28 09:32:27 +01:00
2022-03-03 22:57:33 +01:00
}
}
})
2022-01-30 09:34:56 +01:00
}
2022-03-03 22:57:33 +01:00
}
2022-03-04 14:20:39 +01:00
async addManyMessageDB(_ChatMessage: any[], roomId) {
if (environment.chatOffline) {
await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => {
if(!Array.isArray(messages)) {
messages = []
}
await _ChatMessage.forEach(async(ChatMessage)=>{
if(!ChatMessage._id && environment.chatOffline) {
delete ChatMessage.temporaryData
messages.push(ChatMessage)
2022-04-28 09:32:27 +01:00
//
2022-03-04 14:20:39 +01:00
} else {
const find = messages.find((message)=> {
return message._id == ChatMessage._id
})
if(!find) {
delete ChatMessage.temporaryData
messages.push(ChatMessage)
2022-04-28 09:32:27 +01:00
//
2022-03-04 14:20:39 +01:00
}
}
})
await this.storage.set('chatmsg' + roomId, messages)
})
}
}
2022-01-30 09:34:56 +01:00
}