diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 07ec3db6f..61c5b9e89 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -30,6 +30,7 @@ import { TimeService } from 'src/app/services/functions/time.service'; import { ThemeService } from 'src/app/services/theme.service' import { DataService } from 'src/app/services/data.service'; import { SqliteService } from 'src/app/services/sqlite.service'; +import { StorageService } from 'src/app/services/storage.service'; @@ -121,7 +122,8 @@ export class ChatPage implements OnInit { private dataService: DataService, private router: Router, private sqlservice: SqliteService, - private platform: Platform + private platform: Platform, + private storageservice: StorageService ) { this.loggedUserChat = authService.ValidatedUserChat['data']; @@ -404,20 +406,39 @@ export class ChatPage implements OnInit { }); } + getDirectMessagesDB() { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.storageservice.get("rooms").then((rooms) =>{ + + this.userDirectMessages = rooms.sort((a, b) => { + var dateA = new Date(a._updatedAt).getTime(); + var dateB = new Date(b._updatedAt).getTime(); + return dateB - dateA; + }); + console.log('DIRECTMESSAGE FROM DB', this.userDirectMessages); + + console.log('ROOMS FROM DB', rooms) + }) + + this.storageservice.get('chatusers').then((users) => { + this.dmUsers = users.filter(data => data.username != this.loggedUserChat.me.username); + }) } else { this.sqlservice.getAllChatRoom().then((rooms: any) => { + console.log('ROOMS FROM DB', rooms) let roomsArray = []; rooms.forEach(element => { let roomListDB = { _id: element.Id, - uids: JSON.parse(element.Uids), - usernames: JSON.parse(element.Usernames), - lastMessage: JSON.parse(element.LastMessage), + uids: this.isJson(element.Uids), + usernames: this.isJson(element.Usernames), + lastMessage: this.isJson(element.LastMessage), _updatedAt: element.UpdatedAt } - roomsArray.push(roomListDB) + if(element.customFields == "undefined") { + roomsArray.push(roomListDB) + } }); this.userDirectMessages = roomsArray.sort((a, b) => { @@ -452,6 +473,22 @@ export class ChatPage implements OnInit { transformDataRoomList(data) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + let roomsArray = []; + data.forEach(element => { + let roomList = { + _id: element._id, + uids: element.uids, + usernames: element.usernames, + lastMessage: element.lastMessage, + _updatedAt: element._updatedAt + } + + console.log(' Web TRANSFORM ROOM LIST', roomList) + roomsArray.push(roomList) + }); + + this.storageservice.store('rooms', roomsArray); + } else { data.forEach(element => { let roomList = { @@ -470,6 +507,18 @@ export class ChatPage implements OnInit { transformDataUserList(users) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + let usersArray = []; + users.forEach(element => { + console.log('TRANSFORM USER CHAT 1', element) + let chatusers = { + _id: element._id, + name: element.name, + username: element.username + } + console.log('TRANSFORM USER CHAT 2', chatusers) + usersArray.push(chatusers); + }); + this.storageservice.store('chatusers',usersArray); } else { users.forEach(element => { console.log('TRANSFORM USER CHAT 1', element) @@ -496,13 +545,13 @@ export class ChatPage implements OnInit { console.log('Chat list', res); if (res != 200) { - if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + /* if (this.platform.is('desktop') || this.platform.is('mobileweb')) { this.userDirectMessages = res.ims.sort((a, b) => { var dateA = new Date(a._updatedAt).getTime(); var dateB = new Date(b._updatedAt).getTime(); return dateB - dateA; }); - } + } */ //console.log(res.ims); //console.log(this.userDirectMessages); @@ -552,20 +601,124 @@ export class ChatPage implements OnInit { }); } + getGroupsDB() { + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + this.storageservice.get("grouprooms").then((rooms) =>{ + + + this.allGroups = rooms.sort((a, b) => { + var dateA = new Date(a._updatedAt).getTime(); + var dateB = new Date(b._updatedAt).getTime(); + return dateB - dateA; + }); + + console.log('GROUPS FROM DB', this.allGroups) + }) + + this.storageservice.get('chatusers').then((users) => { + this.dmUsers = users.filter(data => data.username != this.loggedUserChat.me.username); + }) + } else { + this.sqlservice.getAllChatRoom().then((rooms: any) => { + + let roomsArray = []; + rooms.forEach(element => { + let fddf = this.isJson(element.LastMessage); + let roomListDB = { + _id: element.Id, + customFields: this.isJson(element.customFields), + name: element.name, + lastMessage: this.isJson(element.LastMessage), + _updatedAt: element.UpdatedAt + } + if(element.customFields != "undefined") { + roomsArray.push(roomListDB) + } + }); + + this.allGroups = roomsArray.sort((a, b) => { + var dateA = new Date(a._updatedAt).getTime(); + var dateB = new Date(b._updatedAt).getTime(); + return dateB - dateA; + }); + console.log('Group FROM DB', this.allGroups); + + }) + + /* this.sqlservice.getAllChatUsers().then((userslist: any) => { + console.log('USERS FOM DB 1', userslist) + let chatusersArray = []; + userslist.forEach(element => { + console.log('USERS FOM DB 2', element) + let userListDB = { + _id: element.Id, + name: element.Name, + username: element.Username + } + + chatusersArray.push(userListDB); + }); + + this.dmUsers = chatusersArray.filter(data => data.username != this.loggedUserChat.me.username); + + }) */ + } + + } + + transformGroups(data) { + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { + let groupsArray = []; + data.forEach(element => { + let roomList = { + _id: element._id, + uids: element.uids, + usernames: element.usernames, + name: element.name, + customFields: element.customFields, + lastMessage: element.lastMessage, + _updatedAt: element._updatedAt + } + + console.log(' Web TRANSFORM ROOM LIST', roomList) + groupsArray.push(roomList) + }); + + this.storageservice.store('grouprooms', groupsArray); + + } else { + data.forEach(element => { + let roomList = { + id: element._id, + uids: element.uids, + usernames: element.usernames, + customFields: element.customFields, + name: element.name, + lastMessage: element.lastMessage, + updatedat: element._updatedAt + } + + console.log('TRANSFORM ROOM LIST', roomList) + this.sqlservice.addChatListRoom(roomList); + }); + } + + } + async getGroups(event?) { this.result = this.chatService.getAllPrivateGroups().subscribe(async (res: any) => { //console.log(res); if (res.groups != 200) { + this.transformGroups(res.groups); + this.getGroupsDB(); + + /* this.privateGroups = res.groups; + this.transformGroups(res.groups); + this.getGroupsDB(); + this.privateGroups = res.groups; - /* this.result = this.chatService.getAllUserChannels().subscribe((res:any)=>{ - this.publicGroups = res.channels; */ - //let all = this.privateGroups.concat(this.publicGroups); - this.allGroups = this.privateGroups.sort((a, b) => { - var dateA = new Date(a._updatedAt).getTime(); - var dateB = new Date(b._updatedAt).getTime(); - return dateB - dateA; - }); + console.log('Chat list group' , res); */ //console.log(this.allGroups); /* }); */ if (this.route.url != "/home/chat") { @@ -588,6 +741,15 @@ export class ChatPage implements OnInit { }); } + isJson(str) { + try { + JSON.parse(str); + } catch (e) { + return str; + } + return JSON.parse(str); + } + async selectContact() { const modal = await this.modalController.create({ component: ContactsPage, diff --git a/src/app/services/sqlite.service.ts b/src/app/services/sqlite.service.ts index ce10d1711..3a557a4fc 100644 --- a/src/app/services/sqlite.service.ts +++ b/src/app/services/sqlite.service.ts @@ -140,7 +140,9 @@ export class SqliteService { Uids Text, Usernames Text, LastMessage Text, - UpdatedAt varchar(255) + UpdatedAt varchar(255), + customFields Text, + name varchar(255) )`, []) .then((res) => { console.log("Sucess chat list room Table created: ", res) @@ -248,8 +250,8 @@ export class SqliteService { public addChatListRoom(data) { console.log('INSIDE DB CHAT LIST ROOM',data,) this.dbInstance.executeSql(` - INSERT OR REPLACE INTO ${this.chatlistroom} (Id,Uids,Usernames,LastMessage,UpdatedAt) - VALUES ('${data.id}','${JSON.stringify(data.uids)}','${JSON.stringify(data.usernames)}','${JSON.stringify(data.lastMessage)}','${data.updatedat}')`, []) + INSERT OR REPLACE INTO ${this.chatlistroom} (Id,Uids,Usernames,LastMessage,UpdatedAt,customFields,name) + VALUES ('${data.id}','${JSON.stringify(data.uids)}','${JSON.stringify(data.usernames)}','${JSON.stringify(data.lastMessage)}','${data.updatedat}','${JSON.stringify(data.customFields)}','${data.name}')`, []) .then(() => { console.log("chat room add with Success");