Partage
  • Partager sur Facebook
  • Partager sur Twitter

ionic 4 comment récupéré une url grace a firebase

    11 janvier 2020 à 21:10:03

    Boujour,
    je suis actuellement en train de crée une application ionic et je suis bloquer je n’arrive pas a récupéré l'url d'un site depuis ma base de donné firebase et de le mettre dans l'api
    howler dans le fichier Home.page.ts merci d'avance voici mon code:

    import { Component, ViewChild, OnInit } from '@angular/core';
    import { Howl } from 'howler';
    import { IonRange, IonFab, NavParams, ToastController } from '@ionic/angular';
    import { LoadingService } from '../loading.service';
    import { AppUpdate } from '@ionic-native/app-update/ngx';
    import { IdeaService, Idea } from 'src/app/services.service';
    import { Observable, BehaviorSubject } from 'rxjs';
    import { Router, ActivatedRoute } from '@angular/router';
    import { AngularFireDatabase } from '@angular/fire/database';
    import { AngularFirestore } from 'angularfire2/firestore';
    import 'rxjs/add/operator/switchMap';
    import 'rxjs/add/observable/combineLatest';

    export interface Track
    {

    name: string;
    url: string;
    image: string;

    }

    export interface Item {
    name: string;
    url: string;
    image: string;
    }

    @Component({
    selector: 'app-home',
    templateUrl: 'home.page.html',
    styleUrls: ['home.page.scss'],
    })

    export class HomePage implements OnInit {
    items:any;
    playlist: Track[] =[


    ];



    private ideas: Observable<Idea[]>;
    public isSearchbarOpened = false;
    activeTrack: Track = null;
    player: Howl = null;
    isPlaying = false;
    progress = 0;
    @ViewChild('range', { static: false }) range: IonRange;
    items$: Observable<Item[]>;
    sizeFilter$: BehaviorSubject<string|null>;
    colorFilter$: BehaviorSubject<string|null>;
    vurl: string;


    constructor(private loadingService: LoadingService, private appUpdate: AppUpdate , private activatedRoute: ActivatedRoute, private ideaService: IdeaService,
    private toastCtrl: ToastController, private router: Router ,public afDB: AngularFireDatabase, afs: AngularFirestore ) {
    this.test1()

    const updateUrl = 'https://matterlulu.000webhostapp.com/apk/apk.xml';
    this.appUpdate.checkAppUpdate(updateUrl).then(update => {

    }).catch(error=>{

    });



    this.sizeFilter$ = new BehaviorSubject(null);
    this.colorFilter$ = new BehaviorSubject(null);
    this.items$ = Observable.combineLatest(
    this.sizeFilter$,
    this.colorFilter$
    ).switchMap(([size, color]) =>
    afs.collection<Item>('music', ref => {
    let query : firebase.firestore.Query = ref;

    if (color) { query = query.where('name', '==', name) };
    return query;
    }).valueChanges()
    );

    }

    start(track: Track) {
    this.loadingService.loadingPresent();
    if(this.player)
    {
    this.player.stop();
    }
    this.player = new Howl({
    src: [METTRE ICI L'URL depuit firebase] ,
    html5: true,
    onplay: () => {
    console.log('oneplay')
    this.isPlaying = true;
    this.activeTrack = track;
    this.updateProgress();
    this.loadingService.loadingDismiss();
    },
    onend: () =>{

    console.log('musique suivante')
    this.next()

    }
    });
    this.player.play();
    }

    togglerlePlayer(pause){
    this.isPlaying = !pause;
    if (pause){
    this.player.pause();
    }else {
    this.player.play();
    }
    }
    next(){
    let index = this.playlist.indexOf(this.activeTrack);
    if (index != this.playlist.length - 1){
    this.start(this.playlist[index + 1]);
    }else {
    this.start(this.playlist[0]);
    }

    }

    prev(){
    let index = this.playlist.indexOf(this.activeTrack);
    if ( index > 0) {
    this.start(this.playlist[index - 1]);
    }else {
    this.start(this.playlist [this.playlist.length -1]);
    }
    }

    seek(){

    this.loadingService.loadingPresent();


    let newValue = +this.range.value;
    let duration = this.player.duration();
    this.player.seek(duration * (newValue / 100))
    }

    updateProgress(){



    let seek = this.player.seek();
    this.progress = (seek /this.player.duration()) * 100 || 0 ;
    console.log(this.progress = (seek /this.player.duration()) * 100)
    if (this.loadingService.isLoading == true){
    if(this.progress > -1){
    this.loadingService.loadingDismiss();
    }
    }
    setTimeout(() => {
    this.updateProgress();

    }, 1000 )
    }




    test1(){
    this.items=this.playlist;
    }
    getItems($event){
    this.test1()
    let val = $event.target.value;

    if (val && val.trim() != ''){
    this.items = this.items.filter((item) => {
    return (item.name.toLowerCase().indexOf(val.toLowerCase()) > -1);
    if(oncancel){
    $event = ''
    }

    })
    }
    }

    ngOnInit() {
    this.ideas = this.ideaService.getIdeas();
    }
    test(){
    this.afDB.list('music').push({
    url: this.vurl
    })
    }

    }




    ------------------------------------------------------------------------------------------------------



    <ion-header>
    <!-- The core Firebase JS SDK is always required and must be listed first -->
    <script src="https://www.gstatic.com/firebasejs/7.6.1/firebase-app.js"></script>
    <ion-toolbar style="background: x353535" >
    <ion-title *ngIf="!isSearchbarOpened">
    Music FluxMusic

    <button style="font-size: 20px; right:2px ; top: 1px;position:absolute; background-color: #0000;" *ngIf="!isSearchbarOpened" (click)="isSearchbarOpened=true" >
    <ion-icon [ngStyle]="{color:'white'}" name="search" ></ion-icon>
    </button>
    </ion-title>
    <ion-searchbar *ngIf="isSearchbarOpened" (ionInput)="getItems($event)" showCancelButton="true" (ionCancel)="isSearchbarOpened=false; getItems();" ></ion-searchbar>


    </ion-toolbar>
    </ion-header>



    <ion-content>
    <ion-list>
    <ion-item button *ngFor="let items of items" (click)="start(items)">
    <ion-label [color]="items == activeTrack ? 'red' : 'light'" class="ion-text-center" >
    <ion-img [src]="items.image" class="aaa"></ion-img>

    {{ items.name }}
    </ion-label>
    </ion-item>

    </ion-list>





    <ion-list >
    <ion-item button *ngFor="let idea of (ideas | async)" (click)="start(items)" >
    <ion-label class="ion-text-center">
    <ion-img [src]="idea.image" class="aaa"></ion-img>
    {{ idea.name }}
    </ion-label>
    </ion-item>

    </ion-list>
    </ion-content>


    <ion-footer *ngIf="activeTrack" style="background:x 353535">
    <ion-toolbar >
    <ion-row >

    <ion-col size="12" class="ion-text-center" [ngStyle]="{color:'white'}">
    <p class="tutu">{{ activeTrack.name }}</p>
    </ion-col>
    <ion-col size="12">
    <ion-range #range [(ngModel)]="progress" max="100" color="danger" (touchend)="seek()" (mouseup)="seek()"> </ion-range>
    </ion-col>

    <ion-col size="12" class="ion-text-center">
    <ion-button fill="clear" (click)="prev()" color="light">
    <ion-icon slot="icon-only" name="skip-backward"></ion-icon>
    </ion-button>

    <ion-button fill="clear" (click)="togglerlePlayer(false)" *ngIf="!isPlaying" color="light">
    <ion-icon slot="icon-only" name="play"></ion-icon >
    </ion-button>

    <ion-button fill="clear" (click)="togglerlePlayer(true)" *ngIf="isPlaying" color="light">
    <ion-icon slot="icon-only" name="pause"></ion-icon>
    </ion-button>


    <ion-button fill="clear" (click)="next()" color="light">
    <ion-icon slot="icon-only" name="skip-forward"></ion-icon>
    </ion-button>

    </ion-col>
    </ion-row>
    </ion-toolbar>
    </ion-footer>

    <!-- TODO: Add SDKs for Firebase products that you want to use
    https://firebase.google.com/docs/web/setup#available-libraries -->
    <script src="https://www.gstatic.com/firebasejs/7.6.1/firebase-analytics.js"></script>

    <script>
    // Your web app's Firebase configuration
    var firebaseConfig = {
    apiKey: "*******",
    authDomain: "*****",
    databaseURL: "*****",
    projectId: "*****",
    storageBucket: "****",
    messagingSenderId: "****",
    appId: "*******",
    measurementId: "********"
    };
    // Initialize FirebaseBoujour,

    • Partager sur Facebook
    • Partager sur Twitter
      Staff 11 janvier 2020 à 23:15:35

      Bonjour,

      Mauvais forum

      Le sujet est déplacé de la section Rédaction de cours vers la section Mobile

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: java;">Votre code ici</pre>.

      Liens conseillés

      -
      Edité par AbcAbc6 11 janvier 2020 à 23:16:37

      • Partager sur Facebook
      • Partager sur Twitter

      ionic 4 comment récupéré une url grace a firebase

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown