ionic4 / angularjs приложение CRUD в firebase не работает в автономном режиме - PullRequest
0 голосов
/ 28 января 2020

У меня есть приложение (PWA) в ioni c 4 и angularjs, использующее firebase, который создает CRUD для продукта, я уже включил автономное сохранение (из firebase firestore ) в моем app.modules, но когда я добавляю «Product», предупреждение «loading» замирает на экране, и я не могу сделать это до тех пор, пока мое приложение снова не будет подключено к сети, как я могу заставить мой CRUD работать в автономном режиме?

мой метод saveProducts() (где я создаю и обновляю продукт в моем приложении)

 async saveProduct() {
    await this.presentLoading();

    this.product.userId = this.authService.getAuth().currentUser.uid;

    if (this.productId) {
      try {
        await this.productService.updateProduct(this.productId, this.product);
        await this.loading.dismiss();

        this.navCtrl.navigateBack('/home');
      } catch (error) {
        this.presentToast('Erro ao tentar salvar');
        console.log(error);
        this.loading.dismiss();
      }
    } else {
      this.product.createdAt = new Date().getTime();

      try {
        await this.productService.addProduct(this.product);
        await this.loading.dismiss();

        this.navCtrl.navigateBack('/home');
      } catch (error) {
        this.presentToast('Por favor preencha todos os campos');
        this.loading.dismiss();
        console.log(error);
      }
    }
  }

Product.service (который выполняет операции CRUD для моего приложения)

export class ProductService {
  private productsCollection: AngularFirestoreCollection<Product>;

  constructor(private afs: AngularFirestore) {
    this.productsCollection = this.afs.collection<Product>('Products');
  }

  getProducts(){
    return this.productsCollection.snapshotChanges().pipe(
      map(actions =>{
         return actions.map(a => {
          const data = a.payload.doc.data();
          const id = a.payload.doc.id;

          return {id, ...data};
        });
      })
    )
  }

  addProduct(product: Product){
    return this.productsCollection.add(product);
  }

  getProduct(id: string){
    return this.productsCollection.doc<Product>(id).valueChanges();
  }

  updateProduct(id: string, product: Product) {
    return this.productsCollection.doc<Product>(id).update(product);
  }

  deleteProduct(id: string){
    return this.productsCollection.doc(id).delete();
  }

}

Как я могу заставить мое приложение продолжать работать в автономном режиме?

...