chore: lints

This commit is contained in:
2026-02-04 22:36:26 -08:00
parent 9caf74945a
commit 9f0132db34
46 changed files with 531 additions and 463 deletions
@@ -206,8 +206,8 @@ import { Suggestion, SuggestionStatus, SuggestionEntity } from '@library/shared-
}
@if (showDeclineModal()) {
<div class="modal-overlay" (click)="closeDeclineModal()">
<div class="modal" (click)="$event.stopPropagation()">
<div class="modal-overlay" (click)="closeDeclineModal()" (keyup.escape)="closeDeclineModal()" tabindex="0" role="button">
<div class="modal" (click)="$event.stopPropagation()" (keyup)="$event.stopPropagation()" tabindex="-1">
<h3>Decline Suggestion</h3>
<p>Are you sure you want to decline "{{ decliningsuggestion()?.title }}"?</p>
<div class="form-group">
@@ -229,8 +229,8 @@ import { Suggestion, SuggestionStatus, SuggestionEntity } from '@library/shared-
}
@if (showEditModal()) {
<div class="modal-overlay" (click)="closeEditModal()">
<div class="modal edit-modal" (click)="$event.stopPropagation()">
<div class="modal-overlay" (click)="closeEditModal()" (keyup.escape)="closeEditModal()" tabindex="0" role="button">
<div class="modal edit-modal" (click)="$event.stopPropagation()" (keyup)="$event.stopPropagation()" tabindex="-1">
<h3>Review & Edit Before Accepting</h3>
<p>Review and edit the details before adding to your collection.</p>
@@ -105,8 +105,7 @@ import { Art, CreateArtDto, UpdateArtDto, Comment, SuggestionEntity, Link } from
}
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of newArt.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -123,8 +122,7 @@ import { Art, CreateArtDto, UpdateArtDto, Comment, SuggestionEntity, Link } from
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of newArt.links; track link.url; let i = $index) {
<div class="link-item">
@@ -280,8 +278,7 @@ import { Art, CreateArtDto, UpdateArtDto, Comment, SuggestionEntity, Link } from
}
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of editArt.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -298,8 +295,7 @@ import { Art, CreateArtDto, UpdateArtDto, Comment, SuggestionEntity, Link } from
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of editArt.links; track link.url; let i = $index) {
<div class="link-item">
@@ -401,6 +397,10 @@ import { Art, CreateArtDto, UpdateArtDto, Comment, SuggestionEntity, Link } from
[alt]="art.description || art.title"
class="art-image"
(click)="openLightbox(art)"
(keyup.enter)="openLightbox(art)"
(keyup.space)="openLightbox(art)"
tabindex="0"
role="button"
>
</div>
@@ -536,8 +536,8 @@ import { Art, CreateArtDto, UpdateArtDto, Comment, SuggestionEntity, Link } from
}
@if (lightboxArt()) {
<div class="lightbox" (click)="closeLightbox()">
<div class="lightbox-content" (click)="$event.stopPropagation()">
<div class="lightbox" (click)="closeLightbox()" (keyup.escape)="closeLightbox()" tabindex="0" role="button">
<div class="lightbox-content" (click)="$event.stopPropagation()" (keyup)="$event.stopPropagation()" tabindex="-1">
<button class="lightbox-close" (click)="closeLightbox()">&times;</button>
<img [src]="lightboxArt()!.imageUrl" [alt]="lightboxArt()!.description || lightboxArt()!.title">
<div class="lightbox-info">
@@ -126,8 +126,7 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of newBook.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -144,8 +143,7 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of newBook.links; track link.url; let i = $index) {
<div class="link-item">
@@ -269,8 +267,7 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of editBook.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -287,8 +284,7 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of editBook.links; track link.url; let i = $index) {
<div class="link-item">
@@ -421,8 +417,7 @@ import { Book, BookStatus, CreateBookDto, UpdateBookDto, Comment, SuggestionEnti
@if (showFilters()) {
<div class="advanced-filters">
<div class="filter-group">
<label>Filter by Tags:</label>
<div class="tags-filter">
<div class="tags-filter" aria-label="Filter by Tags">
@for (tag of allTags(); track tag) {
<label class="tag-checkbox">
<input
@@ -114,8 +114,7 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of newGame.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -132,8 +131,7 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of newGame.links; track link.url; let i = $index) {
<div class="link-item">
@@ -245,8 +243,7 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of editGame.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -263,8 +260,7 @@ import { Game, GameStatus, CreateGameDto, UpdateGameDto, Comment, SuggestionEnti
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of editGame.links; track link.url; let i = $index) {
<div class="link-item">
@@ -115,8 +115,7 @@ import { Manga, MangaStatus, CreateMangaDto, UpdateMangaDto, Comment, Suggestion
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of newManga.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -133,8 +132,7 @@ import { Manga, MangaStatus, CreateMangaDto, UpdateMangaDto, Comment, Suggestion
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of newManga.links; track link.url; let i = $index) {
<div class="link-item">
@@ -247,8 +245,7 @@ import { Manga, MangaStatus, CreateMangaDto, UpdateMangaDto, Comment, Suggestion
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of editManga.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -265,8 +262,7 @@ import { Manga, MangaStatus, CreateMangaDto, UpdateMangaDto, Comment, Suggestion
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of editManga.links; track link.url; let i = $index) {
<div class="link-item">
@@ -124,8 +124,7 @@ import { Music, MusicStatus, MusicType, CreateMusicDto, UpdateMusicDto, Comment,
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of newMusic.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -142,8 +141,7 @@ import { Music, MusicStatus, MusicType, CreateMusicDto, UpdateMusicDto, Comment,
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of newMusic.links; track link.url; let i = $index) {
<div class="link-item">
@@ -265,8 +263,7 @@ import { Music, MusicStatus, MusicType, CreateMusicDto, UpdateMusicDto, Comment,
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of editMusicData.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -283,8 +280,7 @@ import { Music, MusicStatus, MusicType, CreateMusicDto, UpdateMusicDto, Comment,
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of editMusicData.links; track link.url; let i = $index) {
<div class="link-item">
@@ -113,8 +113,7 @@ import { Show, ShowStatus, ShowType, CreateShowDto, UpdateShowDto, Comment, Sugg
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of newShow.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -131,8 +130,7 @@ import { Show, ShowStatus, ShowType, CreateShowDto, UpdateShowDto, Comment, Sugg
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of newShow.links; track link.url; let i = $index) {
<div class="link-item">
@@ -243,8 +241,7 @@ import { Show, ShowStatus, ShowType, CreateShowDto, UpdateShowDto, Comment, Sugg
</div>
<div class="form-group">
<label>Tags</label>
<div class="tags-input-container">
<div class="tags-input-container" aria-label="Tags">
@for (tag of editShow.tags; track tag; let i = $index) {
<span class="tag">
{{ tag }}
@@ -261,8 +258,7 @@ import { Show, ShowStatus, ShowType, CreateShowDto, UpdateShowDto, Comment, Sugg
</div>
</div>
<div class="form-group">
<label>External Links</label>
<div class="form-group" aria-label="External Links">
<div class="links-list">
@for (link of editShow.links; track link.url; let i = $index) {
<div class="link-item">
@@ -19,14 +19,12 @@ import { environment } from '../../environments/environment';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
private router = inject(Router);
private http = inject(HttpClient);
private isRefreshing = false;
private refreshTokenSubject = new BehaviorSubject<boolean | null>(null);
constructor(
private router: Router,
private http: HttpClient
) {}
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
// Clone the request to add withCredentials
const authReq = request.clone({
@@ -4,7 +4,7 @@
* @author Naomi Carrigan
*/
import { Injectable } from '@angular/core';
import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Art, CreateArtDto, UpdateArtDto } from '@library/shared-types';
@@ -13,7 +13,8 @@ import { Art, CreateArtDto, UpdateArtDto } from '@library/shared-types';
providedIn: 'root'
})
export class ArtService {
constructor(private api: ApiService) {}
private api = inject(ApiService);
getAllArt(): Observable<Art[]> {
return this.api.get<Art[]>('/art');
@@ -4,7 +4,7 @@
* @author Naomi Carrigan
*/
import { Injectable, signal } from '@angular/core';
import { Injectable, signal, inject } from '@angular/core';
import { Router } from '@angular/router';
import { Observable, tap, catchError, switchMap, throwError, of } from 'rxjs';
import { ApiService } from './api.service';
@@ -16,16 +16,14 @@ import { HttpClient } from '@angular/common/http';
providedIn: 'root'
})
export class AuthService {
private api = inject(ApiService);
private router = inject(Router);
private http = inject(HttpClient);
private currentUser = signal<User | null>(null);
public readonly user = this.currentUser.asReadonly();
private refreshing = false;
constructor(
private api: ApiService,
private router: Router,
private http: HttpClient
) {}
login(): void {
// Redirect to API login endpoint
window.location.href = `${environment.apiUrl}/auth/login`;
@@ -4,7 +4,7 @@
* @author Naomi Carrigan
*/
import { Injectable } from '@angular/core';
import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Book, CreateBookDto, UpdateBookDto } from '@library/shared-types';
@@ -13,7 +13,8 @@ import { Book, CreateBookDto, UpdateBookDto } from '@library/shared-types';
providedIn: 'root'
})
export class BooksService {
constructor(private api: ApiService) {}
private api = inject(ApiService);
getAllBooks(): Observable<Book[]> {
return this.api.get<Book[]>('/books');
@@ -4,7 +4,7 @@
* @author Naomi Carrigan
*/
import { Injectable } from '@angular/core';
import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Comment, CreateCommentDto } from '@library/shared-types';
@@ -13,7 +13,8 @@ import { Comment, CreateCommentDto } from '@library/shared-types';
providedIn: 'root'
})
export class CommentsService {
constructor(private api: ApiService) {}
private api = inject(ApiService);
getCommentsForGame(gameId: string): Observable<Comment[]> {
return this.api.get<Comment[]>(`/games/${gameId}/comments`);
@@ -4,7 +4,7 @@
* @author Naomi Carrigan
*/
import { Injectable } from '@angular/core';
import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Game, CreateGameDto, UpdateGameDto } from '@library/shared-types';
@@ -13,7 +13,8 @@ import { Game, CreateGameDto, UpdateGameDto } from '@library/shared-types';
providedIn: 'root'
})
export class GamesService {
constructor(private api: ApiService) {}
private api = inject(ApiService);
getAllGames(): Observable<Game[]> {
return this.api.get<Game[]>('/games');
@@ -4,7 +4,7 @@
* @author Naomi Carrigan
*/
import { Injectable } from '@angular/core';
import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Manga, CreateMangaDto, UpdateMangaDto } from '@library/shared-types';
@@ -13,7 +13,8 @@ import { Manga, CreateMangaDto, UpdateMangaDto } from '@library/shared-types';
providedIn: 'root'
})
export class MangaService {
constructor(private api: ApiService) {}
private api = inject(ApiService);
getAllManga(): Observable<Manga[]> {
return this.api.get<Manga[]>('/manga');
@@ -4,7 +4,7 @@
* @author Naomi Carrigan
*/
import { Injectable } from '@angular/core';
import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Music, CreateMusicDto, UpdateMusicDto } from '@library/shared-types';
@@ -13,7 +13,8 @@ import { Music, CreateMusicDto, UpdateMusicDto } from '@library/shared-types';
providedIn: 'root'
})
export class MusicService {
constructor(private api: ApiService) {}
private api = inject(ApiService);
getAllMusic(): Observable<Music[]> {
return this.api.get<Music[]>('/music');
@@ -4,7 +4,7 @@
* @author Naomi Carrigan
*/
import { Injectable } from '@angular/core';
import { Injectable, inject } from '@angular/core';
import { Observable } from 'rxjs';
import { ApiService } from './api.service';
import { Show, CreateShowDto, UpdateShowDto } from '@library/shared-types';
@@ -13,7 +13,8 @@ import { Show, CreateShowDto, UpdateShowDto } from '@library/shared-types';
providedIn: 'root'
})
export class ShowsService {
constructor(private api: ApiService) {}
private api = inject(ApiService);
getAllShows(): Observable<Show[]> {
return this.api.get<Show[]>('/shows');