added firebase
This commit is contained in:
parent
b098b722c4
commit
4199a3cdcc
@ -18,6 +18,7 @@
|
||||
"@angular/common": "~8.0.1",
|
||||
"@angular/compiler": "~8.0.1",
|
||||
"@angular/core": "~8.0.1",
|
||||
"@angular/fire": "^5.2.1",
|
||||
"@angular/forms": "~8.0.1",
|
||||
"@angular/material": "^8.0.1",
|
||||
"@angular/platform-browser": "~8.0.1",
|
||||
@ -26,6 +27,7 @@
|
||||
"@angular/router": "~8.0.1",
|
||||
"@angular/service-worker": "~8.0.1",
|
||||
"bootstrap-scss": "^4.3.1",
|
||||
"firebase": "^6.3.0",
|
||||
"hammerjs": "^2.0.8",
|
||||
"rxjs": "~6.4.0",
|
||||
"tslib": "^1.9.0",
|
||||
|
@ -13,6 +13,8 @@ import {MaterialModule} from "./material.module";
|
||||
import {CalibrateComponent} from "./map/calibrate/calibrate.component";
|
||||
import {MatInputModule} from "@angular/material";
|
||||
import {PermissionsComponent} from "./permissions/permissions.component";
|
||||
import {AngularFireModule} from "@angular/fire";
|
||||
import {AngularFirestoreModule} from "@angular/fire/firestore";
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
@ -24,6 +26,8 @@ import {PermissionsComponent} from "./permissions/permissions.component";
|
||||
],
|
||||
imports: [
|
||||
AgmCoreModule.forRoot({apiKey: 'AIzaSyDFtvCY6nH_HUoTBNf_5b-E8nRweSLYtxE'}),
|
||||
AngularFireModule.initializeApp(environment.firebaseConfig),
|
||||
AngularFirestoreModule.enablePersistence(),
|
||||
AppRouting,
|
||||
BrowserAnimationsModule,
|
||||
BrowserModule,
|
||||
|
@ -2,6 +2,7 @@ import {Component} from "@angular/core";
|
||||
import {Observable, timer} from "rxjs";
|
||||
import {map, take} from "rxjs/operators";
|
||||
import {Router} from "@angular/router";
|
||||
import {SyncService} from "../map/sync.service";
|
||||
|
||||
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||||
|
||||
@ -13,7 +14,7 @@ export class HomeComponent {
|
||||
phrase = 'If you\'re into that';
|
||||
typedText: Observable<string>;
|
||||
|
||||
constructor(private router: Router) {
|
||||
constructor(private syncService: SyncService, private router: Router) {
|
||||
this.typedText = timer(750, 50).pipe(take(this.phrase.length), map((i: number) => this.phrase.substring(0, i + 1)));
|
||||
}
|
||||
|
||||
@ -21,7 +22,7 @@ export class HomeComponent {
|
||||
let mapCode: string;
|
||||
do {
|
||||
mapCode = Array(16).fill(0).map(() => chars[Math.round(Math.random() * chars.length)]).join('');
|
||||
} while (false);
|
||||
this.router.navigate(['/', mapCode]);
|
||||
} while (await this.syncService.exists(mapCode));
|
||||
return this.router.navigate(['/', mapCode]);
|
||||
}
|
||||
}
|
||||
|
24
src/app/map/sync.service.ts
Normal file
24
src/app/map/sync.service.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import {Injectable} from "@angular/core";
|
||||
import {AngularFirestore, AngularFirestoreCollection, DocumentSnapshot} from "@angular/fire/firestore";
|
||||
import {map} from "rxjs/operators";
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class SyncService {
|
||||
private collection: AngularFirestoreCollection;
|
||||
|
||||
constructor(private db: AngularFirestore) {
|
||||
this.collection = this.db.collection('Maps');
|
||||
}
|
||||
|
||||
async exists(mapCode: string) {
|
||||
return (await this.collection.doc(mapCode).ref.get()).exists;
|
||||
}
|
||||
|
||||
load(mapCode: string) {
|
||||
return this.collection.doc(mapCode).snapshotChanges().pipe(map((snap: any) => {
|
||||
return Object.assign({}, snap.data, {delete: snap.ref.delete, set: snap.ref.set, update: snap.ref.update});
|
||||
}))
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user