diff --git a/frontend/src/app/components/home/browse/browse.component.html b/frontend/src/app/components/home/browse/browse.component.html index d128ea6..2e9268d 100644 --- a/frontend/src/app/components/home/browse/browse.component.html +++ b/frontend/src/app/components/home/browse/browse.component.html @@ -16,6 +16,7 @@ [screenWidth]="checkScreenWidth()" [currentMovie]="currentMovie" [favoriteMovies]="favoriteMovies" + [watchedMovies]="watchedMovies" (playMovie)="playVideo($event)" (movieIsUploadedChange)="onMovieIsUploadedChange($event)" (moviesChange)="onMoviesChange($event)" diff --git a/frontend/src/app/components/home/browse/hero-banner/hero-banner.component.html b/frontend/src/app/components/home/browse/hero-banner/hero-banner.component.html index b561043..c3a6f4a 100644 --- a/frontend/src/app/components/home/browse/hero-banner/hero-banner.component.html +++ b/frontend/src/app/components/home/browse/hero-banner/hero-banner.component.html @@ -54,7 +54,7 @@ [imgPath]="'play'" [imgReverse]="true" [disabled]="!isAnyResolutionUploaded()" - (click)="playMovieId(playUrl)" + (click)="playMovieId(playUrl, currentMovie[0].id)" >
@if(checkLikeMovies(currentMovie[0].id)) { diff --git a/frontend/src/app/components/home/browse/hero-banner/hero-banner.component.ts b/frontend/src/app/components/home/browse/hero-banner/hero-banner.component.ts index 6723b0c..fcbb34d 100644 --- a/frontend/src/app/components/home/browse/hero-banner/hero-banner.component.ts +++ b/frontend/src/app/components/home/browse/hero-banner/hero-banner.component.ts @@ -27,6 +27,7 @@ export class HeroBannerComponent implements OnChanges { @Input() currentMovie: any[] = []; @Input() screenWidth: boolean = false; @Input() favoriteMovies: any[] = []; + @Input() watchedMovies: any[] = []; @Output() playMovie = new EventEmitter(); @Output() movieIsUploadedChange = new EventEmitter<{ [resolution: string]: boolean; @@ -100,6 +101,22 @@ export class HeroBannerComponent implements OnChanges { this.favoriteMovieChange.emit(this.favoriteMovies); } + toggleWatchedMovie(movieId: number): void { + if (this.watchedMovies.includes(movieId)) { + this.watchedMovies = this.watchedMovies.filter((id) => id !== movieId); + } else { + this.watchedMovies.push(movieId); + } + this.updateWatchedMovies(); + } + + updateWatchedMovies() { + const body = { + watched_videos: this.watchedMovies, + }; + this.userService.updateWatchedMovies(body); + } + checkLikeMovies(videoId: number) { return this.favoriteMovies.includes(videoId); } @@ -120,7 +137,8 @@ export class HeroBannerComponent implements OnChanges { this.moviesChange.emit(newMovies); } - playMovieId(videoPath: string) { + playMovieId(videoPath: string, videoId: number) { this.playMovie.emit(videoPath); + this.toggleWatchedMovie(videoId); } } diff --git a/frontend/src/app/services/user.service.ts b/frontend/src/app/services/user.service.ts index 5fc14e8..54ff1a2 100644 --- a/frontend/src/app/services/user.service.ts +++ b/frontend/src/app/services/user.service.ts @@ -23,6 +23,12 @@ export class UserService { return lastValueFrom(this.http.put(url, likedMovies, { headers })); } + updateWatchedMovies(watchedMovies: any) { + const url = `${environment.baseUrl}/users/watched/${this.currentUserId}/`; + const headers = this.getAuthHeaders(); + return lastValueFrom(this.http.put(url, watchedMovies, { headers })); + } + private getAuthHeaders(): HttpHeaders { let authToken = localStorage.getItem('authToken'); if (!authToken) {