我正在创建一个简单的聊天记录,我有一个聊天记录,单击聊天记录中的一个项目将打开聊天记录,此操作将激活多项服务,其中之一是,当它在窗口中并且消息已更新时,然后更新消息中的可见状态。问题在于,即使关闭模式,用于更新可见状态的服务仍然可以正常工作。
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,
}
})
});}
这是路径/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));
}
关闭服务后如何销毁对服务的呼叫?,谢谢您的帮助。