diff --git a/src/app/modules/songs/services/song-data.service.ts b/src/app/modules/songs/services/song-data.service.ts index 41a94a1..086c0e9 100644 --- a/src/app/modules/songs/services/song-data.service.ts +++ b/src/app/modules/songs/services/song-data.service.ts @@ -15,6 +15,8 @@ export class SongDataService { public list$ = (): Observable => this.dbService.col$(this.collection); public read$ = (songId: string): Observable => this.dbService.doc$(this.collection + '/' + songId); public update$ = async (songId: string, data: Partial): Promise => await this.dbService.doc(this.collection + '/' + songId).update(data); - public add = async (data: Partial): Promise => (await this.dbService.col(this.collection).add(data)).id + public add = async (data: Partial): Promise => (await this.dbService.col(this.collection).add(data)).id; + public delete = async (songId: string): Promise => await this.dbService.doc(this.collection + '/' + songId).delete(); + } diff --git a/src/app/modules/songs/services/song.service.ts b/src/app/modules/songs/services/song.service.ts index 2af9d01..be1b619 100644 --- a/src/app/modules/songs/services/song.service.ts +++ b/src/app/modules/songs/services/song.service.ts @@ -17,7 +17,6 @@ export class SongService { public static LEGAL_OWNER = ['CCLI', 'other']; public static LEGAL_TYPE = ['open', 'allowed']; - private list: Song[]; constructor(private songDataService: SongDataService) { @@ -36,6 +35,10 @@ export class SongService { return await this.songDataService.add({number, title, status: 'draft', legalType: 'open'}) } + public async delete(songId: string): Promise { + await this.songDataService.delete(songId); + } + // https://www.csvjson.com/csv2json private async updateFromCLI(songs: Song[]) { const mapped = songs.map(_ => ({ diff --git a/src/app/modules/songs/song/song.component.html b/src/app/modules/songs/song/song.component.html index b94cdd8..c70985f 100644 --- a/src/app/modules/songs/song/song.component.html +++ b/src/app/modules/songs/song/song.component.html @@ -29,6 +29,7 @@ + Löschen Bearbeiten diff --git a/src/app/modules/songs/song/song.component.ts b/src/app/modules/songs/song/song.component.ts index 27fcfe3..54fcfb3 100644 --- a/src/app/modules/songs/song/song.component.ts +++ b/src/app/modules/songs/song/song.component.ts @@ -1,5 +1,5 @@ import {Component, OnInit} from '@angular/core'; -import {ActivatedRoute} from '@angular/router'; +import {ActivatedRoute, Router} from '@angular/router'; import {SongService} from '../services/song.service'; import {map, switchMap} from 'rxjs/operators'; import {Song} from '../services/song'; @@ -9,6 +9,7 @@ import {File} from '../services/file'; import {UserService} from '../../../services/user/user.service'; import {User} from '../../../services/user/user'; import {faEdit} from '@fortawesome/free-solid-svg-icons/faEdit'; +import {faTrash} from '@fortawesome/free-solid-svg-icons/faTrash'; @Component({ selector: 'app-song', @@ -20,12 +21,14 @@ export class SongComponent implements OnInit { public files$: Observable; public user$: Observable; public faEdit = faEdit; + public faDelete = faTrash; constructor( private activatedRoute: ActivatedRoute, private songService: SongService, private fileService: FileDataService, private userService: UserService, + private router: Router, ) { this.user$ = userService.user$; } @@ -40,7 +43,6 @@ export class SongComponent implements OnInit { map(param => param.songId), switchMap(songId => this.fileService.read$(songId)) ); - } public getFlags = (flags: string): string[] => { @@ -48,4 +50,8 @@ export class SongComponent implements OnInit { return flags.split(';').filter(_ => !!_); }; + public async onDelete(songId: string): Promise { + await this.songService.delete(songId); + await this.router.navigateByUrl('/songs'); + } }