Hooked up the quotes to firestore

This commit is contained in:
Zakary Timson 2019-04-21 17:34:36 -04:00
parent 12c5b455dd
commit 2c7756c894
7 changed files with 33 additions and 11 deletions

View File

@ -1,7 +1,7 @@
<div class="w-100"> <div class="w-100">
<div class="container d-flex align-items-center" style="height: 600px"> <div class="container d-flex align-items-center" style="height: 600px">
<div class="w-100 text-center"> <div class="w-100 text-center">
<typewriter [text]="quote"></typewriter> <typewriter [text]="quote | async"></typewriter>
</div> </div>
</div> </div>
<div class="container mb-md-5 p-0 bg-white"> <div class="container mb-md-5 p-0 bg-white">

View File

@ -1,17 +1,19 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import {AppStore} from './app.store';
import {Observable} from 'rxjs';
import {map} from 'rxjs/operators';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
templateUrl: './app.component.html' templateUrl: './app.component.html'
}) })
export class AppComponent { export class AppComponent {
quote: string; quote: Observable<string>;
quotes = [
'Why do Kamikaze pilots wear helmets?',
'Remember that you\'re unique... Just like everyone else'
];
constructor() { constructor(private store: AppStore) {
this.quote = this.quotes[Math.floor(Math.random() * this.quotes.length)] this.quote = store.quotes.pipe(map(quotes => {
let quote = quotes[Math.floor(Math.random() * quotes.length)];
return quote.text;
}))
} }
} }

View File

@ -1,7 +1,7 @@
import {BrowserModule} from '@angular/platform-browser'; import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core'; import {NgModule} from '@angular/core';
import {AngularFireModule} from '@angular/fire'; import {AngularFireModule} from '@angular/fire';
import {AngularFirestoreModule} from '@angular/fire/firestore'; import {AngularFirestoreModule, FirestoreSettingsToken} from '@angular/fire/firestore';
import {AppComponent} from './app.component'; import {AppComponent} from './app.component';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
@ -25,7 +25,9 @@ import {environment} from '../environments/environment';
FormsModule, FormsModule,
MaterialModule MaterialModule
], ],
providers: [], providers: [
{ provide: FirestoreSettingsToken, useValue: {} }
],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })
export class AppModule { } export class AppModule { }

15
src/app/app.store.ts Normal file
View File

@ -0,0 +1,15 @@
import {Injectable} from '@angular/core';
import {Observable} from 'rxjs';
import {AngularFirestore} from '@angular/fire/firestore';
import {Quote} from './models/quote';
@Injectable({
providedIn: 'root'
})
export class AppStore {
quotes: Observable<Quote[]>;
constructor(private firestore: AngularFirestore) {
this.quotes = this.firestore.collection<Quote>('quotes').valueChanges();
}
}

View File

@ -1,5 +1,5 @@
import {Component, Input} from '@angular/core'; import {Component, Input} from '@angular/core';
import {Slide} from './slide'; import {Slide} from '../../models/slide';
@Component({ @Component({
selector: 'slideshow', selector: 'slideshow',

3
src/app/models/quote.ts Normal file
View File

@ -0,0 +1,3 @@
export interface Quote {
text: string;
}