@JavierMelo1672 wrote:
I am creating a simple chat, I have a chat history and clicking on an item in the chat history opens the chat, this action activates several services one of those is that while it is in the window and the messages are updated, then update my seen status in the message.The problem is that even closing the modal, the service to update the status of seen continues to work.
ionViewWillEnter(){ this.afAuth.authState.subscribe(user => { if (!user) { this.displayname = null; return; } console.log(user); this.emails=user.email; console.log('user',user) this.ids=user.uid; console.log('id',this.ids); this.key_chat=this.navParams.get('key_chat'); this.key_cliente=this.navParams.get('key_cliente'); this.key_servicio=this.navParams.get('key_service'); console.log(this.key_chat); console.log(this.key_servicio); this.getchats(this.key_chat); this.getchat(this.ids,this.key_cliente) }); } cerrar(){ console.log("Cerrand modal"); this.ChatdisponibleColeccion=null; this.chatdisponible=null; this.ChatdisponibleColeccion2=null; this.chatdisponible2=null; this.chatsobj=null; this.chatobj=null; this.chatobj2=null; this.modalController.dismiss();} ngOnDestroy(){ this.ChatdisponibleColeccion=null; this.chatdisponible=null; this.ChatdisponibleColeccion2=null; this.chatdisponible2=null; this.chatsobj=null; this.chatobj=null; this.chatobj2=null;} getchats(key){ this.ChatdisponibleColeccion=this.dataser.getchathistory(this.key_chat); this.chatdisponible=this.ChatdisponibleColeccion.valueChanges(); this.ChatdisponibleColeccion.snapshotChanges().subscribe(chats=>{ console.log("Tamaño",chats.length); setTimeout(()=>{ this.content.scrollToBottom(200); }); this.tamano=chats.length; console.log("Sigo actualizando el chat desde star-dinny-chat"); this.dataser.setmyview(this.key_chat).then().catch(); this.chatsobj=chats.map(chat=>{ return{ key_mensaje:chat.payload.doc.data().key_mensaje, key_foto:chat.payload.doc.data().key_foto, key_usuario:chat.payload.doc.data().key_usuario, fecha_chat:chat.payload.doc.data().fecha_chat, fecha_chat_sin_Formato:chat.payload.doc.data().fecha_chat_sin_Formato, key: chat.payload.doc.id, } }) }); } enviarMensaje(){ this.dates=new Date(); if(this.chatobj.key_foto==null){ this.chatobj.key_foto="Sin foto"; } if(this.nuevomensaje==""){ this.chatobj.key_mensaje="Sin texto"; } this.chatobj.key_usuario=this.ids; this.chatobj.key_mensaje=this.nuevomensaje; this.chatobj.fecha_chat=this.dates; this.chatobj.fecha_chat_sin_Formato=this.datePipe.transform(this.dates, 'yyyy-MM-dd-hh:mm:ss'); this.dataser.sendmessage(this.key_chat,this.chatobj).then((res)=>{ console.log(res); this.dataser.setview(this.key_chat).then((res)=>{ this.dataser.setdate(this.key_chat,this.dates); this.dataser.unarchivechat(this.key_chat); this.dataser.unarchiveclientchat(this.key_chat); this.nuevomensaje=""; this.chatobj.key_foto=null; setTimeout(()=>{ this.content.scrollToBottom(200); }); }).catch((e)=>console.log(e)) }).catch((e)=>console.log(e));} getchat(id,key){ this.ChatdisponibleColeccion2=this.dataser.getchat(id,key,this.key_servicio); this.chatdisponible2=this.ChatdisponibleColeccion2.valueChanges(); this.ChatdisponibleColeccion2.snapshotChanges().subscribe(chats=>{ this.chatobj2=chats.map(chat=>{ return{ key_trabajador:chat.payload.doc.data().key_trabajador, key_cliente:chat.payload.doc.data().key_cliente, nombre_trabajador:chat.payload.doc.data().nombre_trabajador, nombre_cliente:chat.payload.doc.data().nombre_cliente, visto_cliente:chat.payload.doc.data().visto_cliente, visto_trabajador:chat.payload.doc.data().visto_trabajador, foto_trabajador:chat.payload.doc.data().foto_trabajador, foto_cliente:chat.payload.doc.data().foto_cliente, cliente_escribiendo:chat.payload.doc.data().cliente_escribiendo, trabajador_escribiendo:chat.payload.doc.data().trabajador_escribiendo, archivado_trabajador:chat.payload.doc.data().archivado_trabajador, archivado_cliente:chat.payload.doc.data().archivado_cliente, ultima_fecha:chat.payload.doc.data().ultima_fecha, id_servicio:chat.payload.doc.data().id_servicio, nombre_servicio:chat.payload.doc.data().nombre_servicio, foto_servicio:chat.payload.doc.data().foto_servicio, key: chat.payload.doc.id, } }) });}
This is the service in the path /services/firebase/data-ser.ts
getmychat(id){ return this.fs.collection<Chat>("chats",ref=>ref.where('key_trabajador','==',id).where('archivado_trabajador',"==",false).orderBy("ultima_fecha","desc")); } getmyarchivechat(id){ return this.fs.collection<Chat>("chats",ref=>ref.where('key_trabajador','==',id).where('archivado_trabajador',"==",true)); } archivechat(keychat){ return this.fs.collection<Chat>("/chats").doc(keychat).update({'archivado_trabajador':true}); } getchathistory(key){ return this.fs.collection<Mensajechat>("chats/"+key+"/historial_chat",ref=>ref.orderBy("fecha_chat","asc")); } setmyview(keychat){ return this.fs.collection<Chat>("/chats").doc(keychat).update({'visto_trabajador':true}); } sendmessage(key,chat:Mensajechat){ return this.fs.collection<Mensajechat>("/chats/"+key+"/historial_chat").add(chat); } setview(keychat){ return this.fs.collection<Chat>("/chats").doc(keychat).update({'visto_cliente':false}) } setdate(keychat,date){ return this.fs.collection<Chat>("/chats").doc(keychat).update({'ultima_fecha':date}); } unarchivechat(keychat){ return this.fs.collection<Chat>("/chats").doc(keychat).update({'archivado_trabajador':false}); } unarchiveclientchat(keychat){ return this.fs.collection<Chat>("/chats").doc(keychat).update({'archivado_cliente':false}); } getchat(id,key,id_servicio){ return this.fs.collection<Chat>("chats",ref=>ref.where('key_cliente','==',key).where('key_trabajador','==',id).where("id_servicio","==",id_servicio)); }
How can i destroy the call to the service when i close the service?, thanks for your help.
Posts: 1
Participants: 1