即使关闭离子通道,服务也继续运行

时间:2020-05-19 00:51:15

标签: typescript firebase ionic-framework

我正在创建一个简单的聊天记录,我有一个聊天记录,单击聊天记录中的一个项目将打开聊天记录,此操作将激活多项服务,其中之一是,当它在窗口中并且消息已更新时,然后更新消息中的可见状态。问题在于,即使关闭模式,用于更新可见状态的服务仍然可以正常工作。

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));
}

关闭服务后如何销毁对服务的呼叫?,谢谢您的帮助。

0 个答案:

没有答案
相关问题