From 6a5a4862934efe803312cbf599797d042bcb6609 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Tue, 8 Feb 2022 17:44:15 +0100 Subject: [PATCH 1/4] improve --- .../group-messages/group-messages.page.html | 6 +-- .../group-messages/group-messages.page.ts | 6 +-- .../pages/chat/messages/messages.page.html | 4 +- src/app/pages/chat/messages/messages.page.ts | 4 +- src/app/services/auth.service.ts | 40 +++++++++++++- src/app/services/chat/chat-methods.service.ts | 3 +- src/app/services/chat/message.service.ts | 53 ++++++++++++++++--- src/app/services/chat/nf.service.ts | 2 +- src/app/services/chat/room.service.ts | 47 +++------------- .../services/chat/ws-chat-methods.service.ts | 33 ++++++++++-- src/app/services/chat/ws-chat.service.ts | 2 +- .../group-messages/group-messages.page.html | 6 +-- .../group-messages/group-messages.page.ts | 6 +-- .../shared/chat/messages/messages.page.html | 8 +-- src/app/shared/chat/messages/messages.page.ts | 4 +- 15 files changed, 144 insertions(+), 80 deletions(-) diff --git a/src/app/pages/chat/group-messages/group-messages.page.html b/src/app/pages/chat/group-messages/group-messages.page.html index 00a341ca9..07b81b08a 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.html +++ b/src/app/pages/chat/group-messages/group-messages.page.html @@ -83,7 +83,7 @@
File - image + image
@@ -102,8 +102,8 @@
- image - + image +
diff --git a/src/app/pages/chat/group-messages/group-messages.page.ts b/src/app/pages/chat/group-messages/group-messages.page.ts index eb3bcce11..e9d318a5a 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.ts +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -454,8 +454,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { this.wsChatMethodsService.getDmRoom(roomId).send({ file: { "type": "application/img", - "guid": '', - "image_url": capturedImage + "guid": '' }, temporaryData: formData, attachments: [{ @@ -533,8 +532,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { this.wsChatMethodsService.getDmRoom(this.roomId).send({ file: { "type": "application/img", - "guid": '', - "image_url": imageData + "guid": '' }, temporaryData: formData, attachments: [{ diff --git a/src/app/pages/chat/messages/messages.page.html b/src/app/pages/chat/messages/messages.page.html index dabd8c88d..8b0b8ccfc 100644 --- a/src/app/pages/chat/messages/messages.page.html +++ b/src/app/pages/chat/messages/messages.page.html @@ -83,8 +83,8 @@
- image - + image +
diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 52db3b6ea..eec98fa08 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -539,8 +539,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { this.wsChatMethodsService.getDmRoom(roomId).send({ file: { "type": "application/img", - "guid": '', - "image_url": capturedImage + "guid": '' }, attachments: [{ "image_url": capturedImage, @@ -620,7 +619,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { file: { "type": "application/img", "guid": '', - "image_url": imageData }, temporaryData: formData, attachments: [{ diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 6620a316c..69f04318d 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { StorageService } from './storage.service'; -import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { HttpClient, HttpHeaders, HttpEventType } from '@angular/common/http'; import { LoginUserRespose, UserForm, UserSession } from '../models/user.model'; import { environment } from 'src/environments/environment'; import { HttpService } from './http.service'; @@ -18,6 +18,7 @@ import { ProcessesService } from 'src/app/services/processes.service'; import { AttachmentsService } from 'src/app/services/attachments.service'; import { RoomService } from './chat/room.service'; import { Storage } from '@ionic/storage'; + @Injectable({ providedIn: 'root' }) @@ -187,6 +188,43 @@ export class AuthService { return false } + + + this.NfService.downloadFileMsg = async (message: MessageService, room?: RoomService) => { + + console.log('FILE TYPE', message.file.type) + let downloadFile = ""; + if (message.file.type == "application/img") { + const event: any = await this.AttachmentsService.downloadFile(message.file.guid).toPromise(); + + console.log('FILE TYPE 22', message.file.guid) + + if (event.type === HttpEventType.DownloadProgress) { + //this.downloadProgess = Math.round((100 * event.loaded) / event.total); + console.log('FILE TYPE 33', message.file.type) + return true + } else if (event.type === HttpEventType.Response) { + downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '')); + + message.file = { + guid: message.file.guid, + image_url: downloadFile, + type: message.file.type + } + + await this.storage.set(message.file.guid, downloadFile).then(() => { + console.log('IMAGE SAVED') + }); + return true + } + + return false + + } + }; + + + }, 1) } diff --git a/src/app/services/chat/chat-methods.service.ts b/src/app/services/chat/chat-methods.service.ts index e22f6ddc0..d92cb2198 100644 --- a/src/app/services/chat/chat-methods.service.ts +++ b/src/app/services/chat/chat-methods.service.ts @@ -6,7 +6,8 @@ import { ChatService } from '../chat.service'; }) export class ChatMethodsService { - constructor(private chatService: ChatService) { + constructor( + private chatService: ChatService) { } sendMessage(roomId:string, data:any) { diff --git a/src/app/services/chat/message.service.ts b/src/app/services/chat/message.service.ts index 976a81e21..142619315 100644 --- a/src/app/services/chat/message.service.ts +++ b/src/app/services/chat/message.service.ts @@ -5,6 +5,7 @@ import { SessionStore } from 'src/app/store/session.service'; import { capitalizeTxt } from 'src/plugin/text' import { NfService } from 'src/app/services/chat/nf.service' import { WsChatService } from 'src/app/services/chat/ws-chat.service'; +import { type } from 'os'; @Injectable({ providedIn: 'root' }) @@ -27,6 +28,9 @@ export class MessageService { temporaryData: any = {} hasFile = false hasSendAttachment = false + sendAttempt = 0 + uploadingFile = false + errorUploadingAttachment = false constructor(private storage: Storage, private NfService: NfService, @@ -90,34 +94,71 @@ export class MessageService { } } - sendFile() { - if(this.file == null && this.attachments == null) { + async send() { + + this.sendAttempt++; + + if(!this.hasFile) { console.log('simple send') this.WsChatService.send({roomId:this.rid, msg:this.msg}).then((data: any) => { let ChatMessage = data.result this.redefinedMessage(this, ChatMessage) + this.offline = false }) } else { console.log('complex send') - const result = this.NfService.beforeSendAttachment(this) - + this.uploadingFile = true - if(result) { + let uploadSuccessfully = false + if(this.hasSendAttachment == false) { + uploadSuccessfully = await this.NfService.beforeSendAttachment(this) + } + + this.uploadingFile = false + + if(uploadSuccessfully || this.hasSendAttachment == false) { this.hasSendAttachment = true + this.errorUploadingAttachment = false + this.temporaryData = {} this.WsChatService.send({roomId:this.rid, msg: this.msg, attachments: this.attachments, file: this.file}).then((data: any) => { console.log('send sucees', data.result) let ChatMessage = data.result this.redefinedMessage(this, ChatMessage) + this.offline = false }) + } else if(this.WsChatService.isLogin == false) { + alert('registerCallback') + + this.WsChatService.registerCallback({ + type: 'reConnect', + funx:()=> { + alert('reConnect') + // this.send() + return true + } + }) + + } else if(uploadSuccessfully == false) { + alert('this.WsChatService.isLogin '+ this.WsChatService.isLogin+ '') + this.errorUploadingAttachment = true } } } - redefinedMessage(messagem, ChatMessage){ + redefinedMessage(messagem, ChatMessage) { this.setData(ChatMessage) } + + async downloadFileMsg() { + const result = await this.NfService.beforeSendAttachment(this) + if(result) { + + } + + } + } diff --git a/src/app/services/chat/nf.service.ts b/src/app/services/chat/nf.service.ts index 7bfbd26be..cca0e4807 100644 --- a/src/app/services/chat/nf.service.ts +++ b/src/app/services/chat/nf.service.ts @@ -8,7 +8,7 @@ import { RoomService } from './room.service'; export class NfService { beforeSendAttachment = async (message: MessageService, room?: RoomService): Promise => new Promise ((resolve, reject)=> (resolve(true))) - + downloadFileMsg = async (message: MessageService, room?: RoomService): Promise => new Promise ((resolve, reject)=> (resolve(true))) constructor() { } } diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts index c2a61a60a..a68b496f4 100644 --- a/src/app/services/chat/room.service.ts +++ b/src/app/services/chat/room.service.ts @@ -3,7 +3,7 @@ import { WsChatService } from 'src/app/services/chat/ws-chat.service'; import { MessageService } from 'src/app/services/chat/message.service'; import { showDateDuration } from 'src/plugin/showDateDuration'; import { ToastsService } from '../toast.service'; -import { chatHistory, ChatMessage } from 'src/app/models/chatMethod'; +import { chatHistory } from 'src/app/models/chatMethod'; import { Storage } from '@ionic/storage'; import { Platform } from '@ionic/angular'; import { SqliteService } from 'src/app/services/sqlite.service'; @@ -138,6 +138,8 @@ export class RoomService { addMessageDB(ChatMessage) { this.storage.get('chatmsg' + this.id).then((messages: any = []) => { + if(messages==null) messages = [] + delete ChatMessage.temporaryData messages.push(ChatMessage) @@ -188,6 +190,7 @@ export class RoomService { */ private deleteMessageFromDb(id) { this.storage.get('chatmsg' + this.id).then((messages: any = []) => { + if(messages==null) messages = [] messages.forEach((message, index) => { @@ -228,31 +231,7 @@ export class RoomService { this.lastMessage = message - - if(file == null && attachments == null) { - console.log('simple send') - this.WsChatService.send({roomId:this.id, msg:message.msg}).then((data: any) => { - let ChatMessage = data.result - this.redefinedMessage(message, ChatMessage) - }) - } else { - console.log('complex send') - - const result = await this.NfService.beforeSendAttachment(message, this) - - - if(result) { - message.hasSendAttachment = true - - this.WsChatService.send({roomId:this.id, msg:message.msg, attachments:offlineChatMessage.attachments, file:offlineChatMessage.file}).then((data: any) => { - console.log('send sucees', data.result) - let ChatMessage = data.result - this.redefinedMessage(message, ChatMessage) - }) - } - - } - + message.send() this.calDateDuration(message._updatedAt) this.sortRoomList() @@ -342,24 +321,17 @@ export class RoomService { async restoreMessageFromDB() { await this.storage.get('chatmsg' + this.id).then( async (messages = []) => { - if(messages==null) messages = [] await messages.forEach( async (ChatMessage, index) => { const wewMessage = this.prepareMessage(ChatMessage) if(wewMessage.offline == true) { - // this.WsChatService.send({roomId:this.id, msg:wewMessage.msg, attachments:wewMessage.attachments, file: wewMessage.file}).then((data: any) => { - // let _ChatMessage = data.result - // this.redefinedMessage(wewMessage, _ChatMessage) - // messages[index] = _ChatMessage - // this.storage.set('chatmsg' + this.id, messages) - // }) + wewMessage.send() } }); - this.messages = alasql('SELECT * FROM ? ORDER BY _updatedAt',[ this.messages]); setTimeout(()=> { this.scrollDown() }, 50) @@ -390,8 +362,6 @@ export class RoomService { }); - console.log(chatHistory.result.messages); - }) setTimeout(() => { @@ -408,14 +378,9 @@ export class RoomService { const wewMessage = new MessageService(this.storage, this.NfService, this.WsChatService) wewMessage.setData(message) this.messages.push(wewMessage) - return wewMessage } - updateMeessage(messageID, imgbase64) { - - } - async returnData(res) { return res; diff --git a/src/app/services/chat/ws-chat-methods.service.ts b/src/app/services/chat/ws-chat-methods.service.ts index 6ea061412..616f2e56a 100644 --- a/src/app/services/chat/ws-chat-methods.service.ts +++ b/src/app/services/chat/ws-chat-methods.service.ts @@ -13,13 +13,14 @@ import { NativeNotificationService } from 'src/app/services/native-notification. import { SortService } from '../functions/sort.service'; import { chatUser } from 'src/app/models/chatMethod'; import { NfService } from 'src/app/services/chat/nf.service' + @Injectable({ providedIn: 'root' }) export class WsChatMethodsService { - dm: {[key: string]: RoomService} = {} - group: {[key: string]: RoomService} = {} + dm = {} + group = {} _dm = [] @@ -42,9 +43,10 @@ export class WsChatMethodsService { private NativeNotificationService: NativeNotificationService, private sortService: SortService, private ChatService: ChatService, - private NfService: NfService + private NfService: NfService, ) { (async()=>{ + await this.restoreRooms() await this.getAllRooms(); this.subscribeToRoom() @@ -98,6 +100,24 @@ export class WsChatMethodsService { } + + async restoreRooms() { + + try { + const rooms = await this.storage.get('Rooms'); + + if(rooms) { + await rooms.result.update.forEach( async (roomData: room) => { + await this.prepareRoom(roomData); + }); + + } + + } catch(e){} + + this.sortRoomList() + } + async getAllRooms () { this.loadingWholeList = true //this.getRoomFromDb(); @@ -105,6 +125,13 @@ export class WsChatMethodsService { await this.storage.remove('Rooms'); await this.storage.set('Rooms', rooms); + console.log('rooms', rooms) + + this.dm = {} + this.group = {} + this._dm = [] + this._group = [] + // console.log("ROOMS" + JSON.stringify(rooms)) this.WsChatService.registerCallback({ type:'Onmessage', diff --git a/src/app/services/chat/ws-chat.service.ts b/src/app/services/chat/ws-chat.service.ts index 593b79276..256d713a7 100644 --- a/src/app/services/chat/ws-chat.service.ts +++ b/src/app/services/chat/ws-chat.service.ts @@ -635,7 +635,7 @@ updateRoomEventss(roomId, collection:string, funx: Function, ) { console.log('================== welcome to socket server =====================') this.ws.wsMsgQueue() - + alert('run recoonecte ') if(this.wsReconnect >= 1) { for (const [key, value] of Object.entries(this.wsCallbacks)) { if(value.type== 'reConnect') { diff --git a/src/app/shared/chat/group-messages/group-messages.page.html b/src/app/shared/chat/group-messages/group-messages.page.html index 99162985b..2244dbf40 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.html +++ b/src/app/shared/chat/group-messages/group-messages.page.html @@ -78,8 +78,8 @@
- image - + image +
@@ -133,7 +133,7 @@
- image + image
diff --git a/src/app/shared/chat/group-messages/group-messages.page.ts b/src/app/shared/chat/group-messages/group-messages.page.ts index 7be23ce8a..e703fb4dc 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.ts +++ b/src/app/shared/chat/group-messages/group-messages.page.ts @@ -558,8 +558,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe this.wsChatMethodsService.getDmRoom(roomId).send({ file: { "type": "application/img", - "guid": '', - "image_url": capturedImage + "guid": '' }, attachments: [{ "title": capturedImageTitle , @@ -642,8 +641,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe this.wsChatMethodsService.getDmRoom(roomId).send({ file: { "type": "application/img", - "guid": '', - "image_url": imageData + "guid": '' }, temporaryData: formData, attachments: [{ diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html index 16c0804e9..72d828098 100644 --- a/src/app/shared/chat/messages/messages.page.html +++ b/src/app/shared/chat/messages/messages.page.html @@ -48,7 +48,7 @@
- {{msg.u.name}} {{msg.offline}} + {{msg.u.name}} {{msg.offline}} {{ msg.sendAttempt }} {{ msg.uploadingFile }} errorUploadingAttachment:{{ msg.errorUploadingAttachment}} {{showDateDuration(msg._updatedAt)}}
@@ -67,14 +67,14 @@
- {{msg.u.name}} + {{msg.u.name}} {{msg.offline}} {{ msg.sendAttempt }} {{ msg.uploadingFile }} errorUploadingAttachment:{{ msg.errorUploadingAttachment}} {{showDateDuration(msg.duration)}}
- image + image
@@ -142,7 +142,7 @@
File - image + image
diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 29e55cbb0..9124bdee1 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -460,8 +460,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy this.wsChatMethodsService.getDmRoom(roomId).send({ file: { "type": "application/img", - "guid": '', - "image_url": capturedImage + "guid": '' }, temporaryData: formData, attachments: [{ @@ -539,7 +538,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy file: { "type": "application/img", "guid": '', - "image_url": imageData, // GPR }, attachments: [{ "title": file.name , From 53fbba409429116e4168df625acb0809ac659a2a Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Tue, 8 Feb 2022 19:17:44 +0100 Subject: [PATCH 2/4] improve --- src/app/home/home.page.ts | 3 + src/app/services/auth.service.ts | 2 + src/app/services/chat/message.service.ts | 4 +- src/app/services/chat/room.service.ts | 3 +- .../services/chat/ws-chat-methods.service.ts | 77 ++++++++++--------- src/app/services/chat/ws-chat.service.ts | 22 +++--- 6 files changed, 60 insertions(+), 51 deletions(-) diff --git a/src/app/home/home.page.ts b/src/app/home/home.page.ts index 436971e6b..81f69a237 100644 --- a/src/app/home/home.page.ts +++ b/src/app/home/home.page.ts @@ -152,10 +152,13 @@ export class HomePage implements OnInit { } else { this.synchWhenOnline() } + + //this.WsChatService.login() }); window.addEventListener('offline', () => { console.log('Became offline') this.backgroundservice.offline() + //this.WsChatService.logout() }); this.updateList() diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index f0d13f94e..d9e4db818 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -174,6 +174,7 @@ export class AuthService { return true } catch(e) { + console.log(e) return false } @@ -187,6 +188,7 @@ export class AuthService { return true } catch(e) { + console.log(e) return false } diff --git a/src/app/services/chat/message.service.ts b/src/app/services/chat/message.service.ts index 142619315..b33c0f323 100644 --- a/src/app/services/chat/message.service.ts +++ b/src/app/services/chat/message.service.ts @@ -129,7 +129,7 @@ export class MessageService { this.offline = false }) } else if(this.WsChatService.isLogin == false) { - alert('registerCallback') + this.WsChatService.registerCallback({ type: 'reConnect', @@ -141,7 +141,7 @@ export class MessageService { }) } else if(uploadSuccessfully == false) { - alert('this.WsChatService.isLogin '+ this.WsChatService.isLogin+ '') + this.errorUploadingAttachment = true } diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts index a68b496f4..0e0f7a6e6 100644 --- a/src/app/services/chat/room.service.ts +++ b/src/app/services/chat/room.service.ts @@ -132,7 +132,6 @@ export class RoomService { } else if (message.fields.eventName == this.id+'/'+'deleteMessage') {} }) - this.WsChatService.registerCallback } @@ -160,7 +159,7 @@ export class RoomService { } ) - this.WsChatService.registerCallback + } /** diff --git a/src/app/services/chat/ws-chat-methods.service.ts b/src/app/services/chat/ws-chat-methods.service.ts index c9056f1ef..a10357427 100644 --- a/src/app/services/chat/ws-chat-methods.service.ts +++ b/src/app/services/chat/ws-chat-methods.service.ts @@ -69,6 +69,39 @@ export class WsChatMethodsService { } }) + // console.log("ROOMS" + JSON.stringify(rooms)) + // this.WsChatService.registerCallback({ + // type:'Onmessage', + // funx:(message) => { + + // if(message.msg =='changed' && message.collection == "stream-room-messages") { + // if(message.fields.args[0].rid) { + // // new message + // const ChatMessage = message.fields.args[0] + // const messageId = ChatMessage.rid + + // setTimeout(()=>{ + // this.sortRoomList() + // }, 100) + + // } + // } + + // if(message.msg =='changed' && message.collection == "stream-notify-room") { + // if(message.fields.eventName.includes('deleteMessage')){ + // // delete message + // const DeletedMessageId = message.fields.args[0]._id; + + // setTimeout(()=>{ + // this.sortRoomList() + // }, 100) + + // } + // } + // } + // }) + + } getRoomFromDb() { @@ -132,32 +165,6 @@ export class WsChatMethodsService { this._dm = [] this._group = [] - // console.log("ROOMS" + JSON.stringify(rooms)) - this.WsChatService.registerCallback({ - type:'Onmessage', - funx:(message)=>{ - - if(message.msg =='changed' && message.collection == "stream-room-messages") { - if(message.fields.args[0].rid) { - - setTimeout(()=>{ - this.sortRoomList() - - }, 100) - } - } - - if(message.msg =='changed' && message.collection == "stream-notify-room") { - if(message.fields.eventName.includes('deleteMessage')){ - setTimeout(()=>{ - - this.sortRoomList() - }, 100) - } - } - } - }) - await rooms.result.update.forEach( async (roomData: room) => { await this.prepareRoom(roomData); }); @@ -276,20 +283,20 @@ export class WsChatMethodsService { */ private getUserStatus(id?:string) { - this.WsChatService.getUserStatus((d) => { + // this.WsChatService.getUserStatus((d) => { - const username = d.fields.args[0][1] - const statusNum = d.fields.args[0][2] + // const username = d.fields.args[0][1] + // const statusNum = d.fields.args[0][2] - const statusText = this.statusNumberToText(statusNum) + // const statusText = this.statusNumberToText(statusNum) - const user = this.getUserByName(username) + // const user = this.getUserByName(username) - if(user) { - user.status = statusText - } + // if(user) { + // user.status = statusText + // } - }) + // }) } diff --git a/src/app/services/chat/ws-chat.service.ts b/src/app/services/chat/ws-chat.service.ts index 5b9cf96c8..8c47f8827 100644 --- a/src/app/services/chat/ws-chat.service.ts +++ b/src/app/services/chat/ws-chat.service.ts @@ -15,13 +15,6 @@ export class WsChatService { loginResponse = {} constructor() { - - - window.addEventListener('online', ()=>{ - this.connect() - this.login() - }); - } connect() { @@ -612,13 +605,16 @@ updateRoomEventss(roomId, collection:string, funx: Function, ) { private wsCallbacks: {[key: string]: wsCallbacksParams} = {} private wsReconnect = 0 + private n = 0 + private ws = { connected: false, registerCallback:(params: wsCallbacksParams) => { let id = params.requestId || params.key || uuidv4() this.wsCallbacks[id] = params - + this.n++ + console.log('n', this.n) return id }, connect:()=> { @@ -629,7 +625,7 @@ updateRoomEventss(roomId, collection:string, funx: Function, ) { this.socket.onclose = this.ws.onclose; this.socket.onerror = this.ws.onerror; }, - onopen:()=> { + onopen: async ()=> { this.ws.connected = true console.log('================== welcome to socket server =====================') @@ -639,9 +635,10 @@ updateRoomEventss(roomId, collection:string, funx: Function, ) { if(this.wsReconnect >= 1) { for (const [key, value] of Object.entries(this.wsCallbacks)) { if(value.type== 'reConnect') { - const dontRepeat = value.funx() + const dontRepeat = await value.funx() if(dontRepeat) { + this.n-- delete this.wsCallbacks[key] } @@ -681,15 +678,16 @@ updateRoomEventss(roomId, collection:string, funx: Function, ) { return requestId }, - onmessage:(event: any)=> { + onmessage: async (event: any)=> { const data = JSON.parse(event.data) for (const [key, value] of Object.entries(this.wsCallbacks)) { if(value.type== 'Onmessage') { - const dontRepeat = value.funx(data) + const dontRepeat = await value.funx(data) if(dontRepeat) { delete this.wsCallbacks[key] + this.n-- } } From 012c5ccce686dae698bbe06cd6fed0a8502a8a09 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Tue, 8 Feb 2022 19:19:13 +0100 Subject: [PATCH 3/4] remove --- src/app/services/chat/ws-chat.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/services/chat/ws-chat.service.ts b/src/app/services/chat/ws-chat.service.ts index 8c47f8827..444582c57 100644 --- a/src/app/services/chat/ws-chat.service.ts +++ b/src/app/services/chat/ws-chat.service.ts @@ -631,7 +631,6 @@ updateRoomEventss(roomId, collection:string, funx: Function, ) { console.log('================== welcome to socket server =====================') this.ws.wsMsgQueue() - alert('run recoonecte ') if(this.wsReconnect >= 1) { for (const [key, value] of Object.entries(this.wsCallbacks)) { if(value.type== 'reConnect') { From 9a35ea30f091c80adae791726e42bb103acce436 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Wed, 9 Feb 2022 14:07:34 +0100 Subject: [PATCH 4/4] save --- src/app/pages/chat/messages/messages.page.ts | 3 -- src/app/services/chat/message.service.ts | 1 - src/app/services/chat/room.service.ts | 39 +++++++++---------- .../services/chat/ws-chat-methods.service.ts | 10 ++--- src/app/services/chat/ws-chat.service.ts | 3 +- src/app/shared/chat/messages/messages.page.ts | 1 - 6 files changed, 26 insertions(+), 31 deletions(-) diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 2fc1a0aab..35e529c30 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -581,7 +581,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { const roomId = this.roomId if(data.selected) { - const loader = this.toastService.loading(); this.wsChatMethodsService.getDmRoom(roomId).send({ file:{ @@ -603,8 +602,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }], }) - loader.remove(); - } }); } diff --git a/src/app/services/chat/message.service.ts b/src/app/services/chat/message.service.ts index b33c0f323..35c93720a 100644 --- a/src/app/services/chat/message.service.ts +++ b/src/app/services/chat/message.service.ts @@ -5,7 +5,6 @@ import { SessionStore } from 'src/app/store/session.service'; import { capitalizeTxt } from 'src/plugin/text' import { NfService } from 'src/app/services/chat/nf.service' import { WsChatService } from 'src/app/services/chat/ws-chat.service'; -import { type } from 'os'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts index 0e0f7a6e6..2fc0eb8ad 100644 --- a/src/app/services/chat/room.service.ts +++ b/src/app/services/chat/room.service.ts @@ -93,11 +93,14 @@ export class RoomService { (ChatMessage) => { ChatMessage = ChatMessage.fields.args[0] - if(environment.chatOffline == false || this.isSenderIsNotMe(ChatMessage)) { - - ChatMessage = this.fix_updatedAt(ChatMessage) - console.log('recivemessage', ChatMessage) - + ChatMessage = this.fix_updatedAt(ChatMessage) + // console.log('recivemessage', ChatMessage) + + const messageIsFound = this.messages.find((message) => { + message._id == ChatMessage._id + }) + + if(!messageIsFound) { const message = this.prepareMessage(ChatMessage) this.lastMessage = message @@ -114,8 +117,8 @@ export class RoomService { }); this.addMessageDB(ChatMessage) - } + } ) @@ -323,10 +326,10 @@ export class RoomService { if(messages==null) messages = [] await messages.forEach( async (ChatMessage, index) => { - const wewMessage = this.prepareMessage(ChatMessage) + const wewMessage = this.prepareMessage(ChatMessage, false) - if(wewMessage.offline == true) { - wewMessage.send() + if(wewMessage.offline == false) { + this.prepareMessage(ChatMessage) } }); @@ -335,7 +338,6 @@ export class RoomService { this.scrollDown() }, 50) - }) } @@ -344,7 +346,7 @@ export class RoomService { if (this.hasLoadHistory) { return false } - await this.restoreMessageFromDB() + this.restoreMessageFromDB() await this.WsChatService.loadHistory(this.id, limit).then( async (chatHistory:chatHistory) => { console.log('loadHistory', chatHistory) @@ -352,13 +354,6 @@ export class RoomService { await chatHistory.result.messages.reverse().forEach( async (message) => { this.prepareMessage(message) - - // const result = alasql(`SELECT * FROM ? WHERE _id = "${message._id}" `,[ this.messages]); - // if(result.length == 0) { - // this.prepareMessage(message) - // this.storage.set('chatmsg' + this.id, chatHistory.result.messages.concat([message])) - // } - }); }) @@ -372,11 +367,15 @@ export class RoomService { - prepareMessage(message): MessageService { + prepareMessage(message, save = true): MessageService { message = this.fix_updatedAt(message) const wewMessage = new MessageService(this.storage, this.NfService, this.WsChatService) wewMessage.setData(message) - this.messages.push(wewMessage) + + if (save) { + this.messages.push(wewMessage) + } + return wewMessage } diff --git a/src/app/services/chat/ws-chat-methods.service.ts b/src/app/services/chat/ws-chat-methods.service.ts index a10357427..509b61c96 100644 --- a/src/app/services/chat/ws-chat-methods.service.ts +++ b/src/app/services/chat/ws-chat-methods.service.ts @@ -69,7 +69,7 @@ export class WsChatMethodsService { } }) - // console.log("ROOMS" + JSON.stringify(rooms)) + // this.WsChatService.registerCallback({ // type:'Onmessage', // funx:(message) => { @@ -85,10 +85,8 @@ export class WsChatMethodsService { // }, 100) // } - // } - - // if(message.msg =='changed' && message.collection == "stream-notify-room") { - // if(message.fields.eventName.includes('deleteMessage')){ + // } else if(message.msg =='changed' && message.collection == "stream-notify-room") { + // if(message.fields.eventName.includes('deleteMessage')) { // // delete message // const DeletedMessageId = message.fields.args[0]._id; @@ -96,6 +94,8 @@ export class WsChatMethodsService { // this.sortRoomList() // }, 100) + // } else if(message.fields.eventName.includes('typing')) { + // } // } // } diff --git a/src/app/services/chat/ws-chat.service.ts b/src/app/services/chat/ws-chat.service.ts index 444582c57..d3cfa0b47 100644 --- a/src/app/services/chat/ws-chat.service.ts +++ b/src/app/services/chat/ws-chat.service.ts @@ -614,7 +614,6 @@ updateRoomEventss(roomId, collection:string, funx: Function, ) { let id = params.requestId || params.key || uuidv4() this.wsCallbacks[id] = params this.n++ - console.log('n', this.n) return id }, connect:()=> { @@ -680,6 +679,8 @@ updateRoomEventss(roomId, collection:string, funx: Function, ) { onmessage: async (event: any)=> { const data = JSON.parse(event.data) + console.log('data', data) + for (const [key, value] of Object.entries(this.wsCallbacks)) { if(value.type== 'Onmessage') { const dontRepeat = await value.funx(data) diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 9124bdee1..1edc23fc2 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -276,7 +276,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy } } - changeInput() { this.wsChatMethodsService.getDmRoom(this.roomId).typing() }