All files / src/app/pages/list.events.scene list.events.page.ts

94.73% Statements 18/19
50% Branches 2/4
85.71% Functions 6/7
94.73% Lines 18/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72                                              1x   5x       5x 5x 5x 5x         1x     5x 1x     5x   1x     1x   1x               1x   1x         5x 1x 1x      
import {Component, inject} from '@angular/core';
import { AsyncPipe } from "@angular/common";
import { IonHeader, IonToolbar, IonTitle, IonContent, IonList, IonRefresher, RefresherCustomEvent, IonRefresherContent, IonSpinner } from '@ionic/angular/standalone';
import pageIdentifier from '@shared/components/tabs/tabs.identifier';
import { CardTitleDescriptionViewComponent } from '@shared/components/cards/card/card.title.description.view';
import { NETWORK_REQUEST } from '@shared/interfaces/network.request.interface';
import EventModel from '@shared/interfaces/event.model';
import ApiRequiriments from '@shared/services/network/api.requiriments';
import IResponseDefault from '@shared/interfaces/response.default';
import { Observable } from 'rxjs';
import { ToastController } from '@ionic/angular/standalone';
import { Router } from '@angular/router';
import { DetailEventPage } from '@pages/detail.event.page/detail.event.page';
import { DatePipe } from '@angular/common';
import EventPartialModel from "@shared/interfaces/event.partial.model";
 
@Component({
  selector: 'app-list-events',
  templateUrl: 'list.events.page.html',
  styleUrls: ['list.events.page.scss'],
  standalone: true,
  imports: [IonSpinner, IonRefresherContent, IonRefresher, IonList, IonHeader, IonToolbar, IonTitle, IonContent, CardTitleDescriptionViewComponent, AsyncPipe, DatePipe],
})
export class ListEventsScenePage {
 
  title = pageIdentifier["listEventPage"].title;
  obsContent$?: Observable<IResponseDefault<EventPartialModel[] | null | undefined >>;
 
  obsDelete$?: Observable<IResponseDefault<undefined>>;
  component = DetailEventPage;
  private toastController = inject(ToastController);
  private networkRequest = inject(NETWORK_REQUEST);
  private router = inject(Router);
 
  constructor() {}
 
  ionViewDidEnter() {
    this.requestPageContent();
  }
 
  openDescription = (id: string | undefined) => {
    this.router.navigate(['/tabs/tab1/detail', id]);
  }
 
  deleteEvent = (id: string | undefined) => {
 
    Iif (id == undefined)
      return;
 
    this.networkRequest.request<IResponseDefault<undefined>>(ApiRequiriments.deleteEvent(id)).subscribe(async response => {
 
      const toast = await this.toastController.create({
        message: response.message,
        duration: 5000,
        position: 'bottom',
        color: response.status == 200 ? 'primary': 'warning',
        buttons: [ { text: 'Fechar', role: 'cancel', handler: () => {} } ]
      });
 
      toast.present();
 
      this.requestPageContent();
    });
 
  }
 
  requestPageContent = (event: RefresherCustomEvent | undefined = undefined) => {
    this.obsContent$ = this.networkRequest.request<IResponseDefault<EventPartialModel[] | undefined>>(ApiRequiriments.listEvent());
    event?.target.complete();
  }
}