diff --git a/src/app/modals/set-room-owner/set-room-owner.page.html b/src/app/modals/set-room-owner/set-room-owner.page.html
index a492ffd4f..a6d13bec1 100644
--- a/src/app/modals/set-room-owner/set-room-owner.page.html
+++ b/src/app/modals/set-room-owner/set-room-owner.page.html
@@ -9,7 +9,7 @@
-
{{group.value.lastMessage.u.name}}: {{group.value.lastMessage.msg}}
+
{{group.value.lastMessage.u.name}}: {{group.value.lastMessage.msg}}
diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts
index b0c731cdb..870541ab5 100644
--- a/src/app/pages/chat/chat.page.ts
+++ b/src/app/pages/chat/chat.page.ts
@@ -548,7 +548,7 @@ export class ChatPage implements OnInit {
return dateB - dateA;
});
-
+
//console.log('GROUPS FROM DB', this.allGroups)
})
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 406c41827..c927ed141 100644
--- a/src/app/pages/chat/group-messages/group-messages.page.ts
+++ b/src/app/pages/chat/group-messages/group-messages.page.ts
@@ -333,12 +333,14 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
cssClass: 'chat-popover',
componentProps: {
roomId: this.roomId,
+ members: this.members,
},
});
await modal.present();
modal.onDidDismiss().then(res=>{
if(res.data == 'leave'){
console.log('saiu do grupo');
+ //this.wsChatMethodsService.subscribeToRoomUpdate(this.roomId, this.room);
}
else if(res.data == 'cancel'){
console.log('cancel');
diff --git a/src/app/pages/chat/new-group/new-group.page.ts b/src/app/pages/chat/new-group/new-group.page.ts
index d1006c0e2..5ca806462 100644
--- a/src/app/pages/chat/new-group/new-group.page.ts
+++ b/src/app/pages/chat/new-group/new-group.page.ts
@@ -6,6 +6,8 @@ import { GroupContactsPage } from '../group-messages/group-contacts/group-contac
import { ThemeService } from 'src/app/services/theme.service'
import { ChatService } from 'src/app/services/chat.service';
import { ProcessesService } from 'src/app/services/processes.service';
+import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service';
+import { AuthService } from 'src/app/services/auth.service';
@Component({
selector: 'app-new-group',
@@ -21,6 +23,7 @@ export class NewGroupPage implements OnInit {
thedate:any;
groupName:string;
documents:any;
+ loggedUserChat: any;
constructor(
private pickerController: PickerController,
@@ -30,8 +33,11 @@ export class NewGroupPage implements OnInit {
public ThemeService: ThemeService,
private chatService: ChatService,
private processesService: ProcessesService,
+ public wsChatMethodsService: WsChatMethodsService,
+ private authService: AuthService,
)
{
+ this.loggedUserChat = authService.ValidatedUserChat['data'];
this.isGroupCreated = false;
this.groupName = this.navParams.get('name');
this.documents = this.navParams.get('documents');
@@ -55,10 +61,34 @@ export class NewGroupPage implements OnInit {
this.modalController.dismiss();
}
- createGroup(){
+ async createGroup(){
let name = this.groupName.split(' ').join('-');
//Take out all special characters in string
name = name.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
+
+ let customFields = {}
+ let res:any;
+
+ if(this.thedate){
+ let customFields = {
+ "countDownDate":this.thedate
+ }
+ res = await this.wsChatMethodsService.createPrivateRoom(name, this.loggedUserChat.me.username, customFields);
+ console.log(res);
+ }
+ else{
+ res = await this.wsChatMethodsService.createPrivateRoom(name, this.loggedUserChat.me.username, customFields);
+ console.log(res);
+ }
+
+ this.isGroupCreated = true;
+ this.addContacts(res.result);
+
+ this.wsChatMethodsService.subscribeToRoomUpdate(res.result.rid, res.result);
+
+ //this.addGroupMessage.emit(res.result.rid);
+
+ /*
let body = { "name":name, }
this.chatService.addGroup(body).subscribe(res=>{
console.log('group created');
@@ -112,7 +142,7 @@ export class NewGroupPage implements OnInit {
this.chatService.sendMessage(body).toPromise();
});
}
- });
+ }); */
}
async addContacts(room){
diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts
index 5ff6b23be..8d9c3a482 100644
--- a/src/app/services/chat/room.service.ts
+++ b/src/app/services/chat/room.service.ts
@@ -39,7 +39,7 @@ export class RoomService {
private sqlservice: SqliteService,
) { }
- setData({ customFields, id, name, t, lastMessage, _updatedAt }) {
+ setData({ customFields, id, name, t, lastMessage = new MessageService(), _updatedAt }) {
this.customFields = customFields
this.id = id
this.name = name
@@ -62,6 +62,7 @@ export class RoomService {
/* this.ToastService._chatMessage({message:'Nova mensagem', sender:'Gilson'}) */
const message = new MessageService()
message.setData(ChatMessage)
+
this.lastMessage.msg = message.msg
if (message.t == 'r') { this.name = message.msg }
this.calDateDuration(ChatMessage._updatedAt)
@@ -89,6 +90,10 @@ export class RoomService {
this.WsChatService.send(this.id, msg)
}
+ leave(rid?) {
+ this.WsChatService.leaveRoom(this.id)
+ }
+
getMsgFromDBMobile() {
console.log('ALL MSG DBBB', this.id)
this.sqlservice.getAllChatMSG(this.id).then((msg: any = []) => {
@@ -159,7 +164,7 @@ export class RoomService {
})
}
-
+
// runs onces only
loadHistory(limit = 100) {
diff --git a/src/app/services/chat/ws-chat-methods.service.ts b/src/app/services/chat/ws-chat-methods.service.ts
index 70625d0af..1db0198c6 100644
--- a/src/app/services/chat/ws-chat-methods.service.ts
+++ b/src/app/services/chat/ws-chat-methods.service.ts
@@ -46,35 +46,7 @@ export class WsChatMethodsService {
// console.log("ROOMS" + JSON.stringify(rooms))
rooms.result.update.forEach((roomData: room) => {
- let room:RoomService;
-
- //console.log(roomData);
-
-
- room = new RoomService(this.WsChatService, new MessageService(), this.storage, this.platform, this.sqlservice)
- room.setData({
- customFields: roomData.customFields,
- id: this.getRoomId(roomData),
- name: this.getRoomName(roomData),
- t: roomData.t,
- lastMessage: this.getRoomLastMessage(roomData),
- _updatedAt: new Date(roomData._updatedAt['$date'])
- })
-
- room.receiveMessage()
-
- let roomId = this.getRoomId(roomData)
-
- if(this.isIndividual(roomData)) {
- this.dm[roomId] = room
- this.dmCount++
- } else {
- this.group[roomId] = room
- this.groupCount++
- }
-
-
-
+ this.prepareRoom(roomData);
});
this.loadingWholeList = false
@@ -99,6 +71,68 @@ export class WsChatMethodsService {
}))
}
+
+ subscribeToRoomUpdate(id, roomData) {
+ this.WsChatService.streamRoomMessages(id).then((subscription)=>{
+ console.log('streamRoomMessages', subscription)
+ })
+ this.WsChatService.streamRoomMessages(id).then((subscription)=>{
+ console.log('streamRoomMessages', subscription)
+ })
+ this.WsChatService.streamNotifyLogged().then((subscription=>{
+ console.log('streamRoomMessages', subscription)
+ }))
+
+ this.prepareRoom(roomData);
+
+ this.getGroupRoom(id).loadHistory();
+
+ }
+
+ prepareRoom(roomData){
+ let room:RoomService;
+
+ room = new RoomService(this.WsChatService, new MessageService(), this.storage, this.platform, this.sqlservice)
+ room.setData({
+ customFields: roomData.customFields,
+ id: this.getRoomId(roomData),
+ name: this.getRoomName(roomData),
+ t: roomData.t,
+ lastMessage: this.getRoomLastMessage(roomData),
+ _updatedAt: new Date(roomData._updatedAt['$date'])
+ })
+
+ room.receiveMessage()
+
+ let roomId = this.getRoomId(roomData)
+
+ if(this.isIndividual(roomData)) {
+ this.dm[roomId] = room
+ this.dmCount++
+ } else {
+ this.group[roomId] = room
+ this.groupCount++
+ }
+ }
+
+
+
+ leaveRoom(id?) {
+ return this.WsChatService.leaveRoom(id);
+ }
+
+ hidingRoom(id?) {
+ return this.WsChatService.hidingRoom(id);
+ }
+
+ addRoomOwner(roomid, userId){
+ return this.WsChatService.addRoomOwner(roomid, userId);
+ }
+
+ createPrivateRoom(groupName, username, customFields){
+ return this.WsChatService.createPrivateRoom(groupName, username, customFields);
+ }
+
getDmRoom(id): RoomService {
try {
return this.dm[id]
@@ -130,7 +164,7 @@ export class WsChatMethodsService {
return roomData._id
}
- getRoomLastMessage(roomData: room) {
+ getRoomLastMessage(roomData: room):any {
return roomData.lastMessage
}
diff --git a/src/app/services/chat/ws-chat.service.ts b/src/app/services/chat/ws-chat.service.ts
index 052a8c78e..e4415d5fc 100644
--- a/src/app/services/chat/ws-chat.service.ts
+++ b/src/app/services/chat/ws-chat.service.ts
@@ -153,9 +153,112 @@ export class WsChatService {
});
}
+ leaveRoom(roomId) {
+
+ const requestId = uuidv4()
+
+ var message = {
+ msg: "method",
+ method: "leaveRoom",
+ id: requestId,
+ params: [
+ roomId,
+ ]
+ }
+
+ this.ws.send({message, requestId});
+
+ return new Promise((resolve, reject) => {
+ this.ws.registerCallback({type:'Onmessage', funx:(message)=>{
+ if(message.id == requestId || deepFind(message,'result.id') == requestId) { // same request send
+ resolve(message)
+ return true
+ }
+ }})
+ });
+ }
+
+ addRoomOwner(roomId, userId) {
+
+ const requestId = uuidv4()
+
+ var message = {
+ msg: "method",
+ method: "addRoomOwner",
+ id: requestId,
+ params: [
+ roomId,
+ userId
+ ]
+ }
+
+ this.ws.send({message, requestId});
+
+ return new Promise((resolve, reject) => {
+ this.ws.registerCallback({type:'Onmessage', funx:(message)=>{
+ if(message.id == requestId || deepFind(message,'result.id') == requestId) { // same request send
+ resolve(message)
+ return true
+ }
+ }})
+ });
+ }
+
+ hidingRoom(roomId){
+
+ const requestId = uuidv4()
+
+ var message = {
+ msg: "method",
+ method: "hideRoom",
+ id: requestId,
+ params: [roomId]
+ }
+
+ this.ws.send({message, requestId});
+
+ return new Promise((resolve, reject) => {
+ this.ws.registerCallback({type:'Onmessage', funx:(message)=>{
+ if(message.id == requestId || deepFind(message,'result.id') == requestId) { // same request send
+ resolve(message)
+ return true
+ }
+ }})
+ });
+ }
+
joinRoom(){}
deleteMessage() {}
- createRoom() {}
+ createPrivateRoom(groupName, username, customFields) {
+ const requestId = uuidv4()
+
+ var message = {
+ msg: "method",
+ method: "createPrivateGroup",
+ id: requestId,
+ params: [
+ groupName,
+ [username],
+ false,
+ customFields,
+ {
+ "broadcast":false,
+ "encrypted":false
+ }
+ ]
+ }
+
+ this.ws.send({message, requestId});
+
+ return new Promise((resolve, reject) => {
+ this.ws.registerCallback({type:'Onmessage', funx:(message)=>{
+ if(message.id == requestId || deepFind(message,'result.id') == requestId) { // same request send
+ resolve(message)
+ return true
+ }
+ }})
+ });
+ }
diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts
index 63173ed2f..53a2394cb 100644
--- a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts
+++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts
@@ -134,12 +134,9 @@ export class GroupContactsPage implements OnInit {
updateGroup(){
this.showLoader = true;
- this.chatService.getRoomInfo(this.roomId).subscribe(room=>{
- this.room = room['room'];
- this.addContacts(this.room);
- this.showLoader = false;
- this.openGroupMessage.emit(this.room._id);
- });
+ this.addContacts(this.roomId);
+ this.openGroupMessage.emit(this.roomId);
+ this.showLoader = false;
}
openGroupMessagesPage(){
this.showLoader = true;
@@ -259,15 +256,15 @@ export class GroupContactsPage implements OnInit {
user.isChecked = !user.isChecked;
}
- addContacts(room:any){
- console.log(room);
+ addContacts(roomId:any){
+ console.log(roomId);
this.selectedUserList = this.users.filter(function(contact) {
return contact.isChecked == true;
});
console.log( this.selectedUserList);
this.selectedUserList.forEach(user=>{
let body ={
- "roomId":room._id,
+ "roomId":roomId,
"userId":user._id,
}
this.chatService.addUserToGroup(body).subscribe(res=>{
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 7b1ee94b9..fd98e664c 100644
--- a/src/app/shared/chat/group-messages/group-messages.page.html
+++ b/src/app/shared/chat/group-messages/group-messages.page.html
@@ -92,55 +92,62 @@
-
-