feat: almost abstractions

This commit is contained in:
2024-07-19 15:06:35 +03:00
parent 00213d25a1
commit 7b2c6d9fc8
4 changed files with 18 additions and 8 deletions

View File

@@ -56,6 +56,7 @@ export class DetailComponent implements AfterViewInit, OnDestroy {
this.route.queryParams.pipe(takeUntil(this.destroy$)).subscribe((params) => {
const url = params["url"];
if (url) {
this.searchService.setMangalibParser();
this.getDetails(url);
} else {
this.router.navigate(["/"]);

View File

@@ -33,6 +33,7 @@ export class HomeComponent implements OnDestroy, OnInit {
this.route.queryParams.subscribe((params) => {
const search = params["search"];
if (search) {
this.searchService.setMangalibParser();
this.loading = true;
this.searchService
.search(search)

View File

@@ -24,7 +24,6 @@ import { CachedPage, CachedPages } from "./reader.dto";
imports: [CommonModule, ScaleImageComponent, RouterLink],
})
export class ReaderComponent implements OnInit, OnDestroy {
//FIXME: Scrolling to top when manhwa
pages: Page[] = [];
currentPageIndex = 0;
cachedPages: CachedPages = new Map<number, CachedPage>();
@@ -61,6 +60,7 @@ export class ReaderComponent implements OnInit, OnDestroy {
const volume = params["volume"];
const fromTowards = params["from_towards"];
if (url && chapter && volume) {
this.searchService.setMangalibParser();
if (fromTowards) this.fromTowards = Boolean(+fromTowards);
else this.fromTowards = false;
this.chapterNum = +chapter;

View File

@@ -1,6 +1,7 @@
import { HttpClient } from "@angular/common/http";
import { Injectable } from "@angular/core";
import { BehaviorSubject, Observable, map } from "rxjs";
import { Parser } from "./parsers/parser";
import { MangalibParserService } from "./parsers/rulib/mangalib.parser.service";
import { IRulibChapterResult } from "./parsers/rulib/rulib.chapter.dto";
import { IRulibChaptersResult } from "./parsers/rulib/rulib.chapters.dto";
@@ -11,15 +12,20 @@ import { Datum, IRulibSearchResult } from "./parsers/rulib/rulib.search.dto";
export class SearchService {
private itemsTerm = new BehaviorSubject<Datum[]>([]);
currentItemsTerm = this.itemsTerm.asObservable();
private parser!: Parser;
constructor(
private parser: MangalibParserService,
private http: HttpClient,
private mangalibParser: MangalibParserService,
) {}
setMangalibParser() {
this.parser = this.mangalibParser;
}
search(query: string): Observable<IRulibSearchResult> {
return this.parser.searchManga(query).pipe(
map((data) => {
return data;
return data as IRulibSearchResult;
}),
);
}
@@ -27,7 +33,7 @@ export class SearchService {
getDetails(slug_url: string): Observable<IRulibDetailResult> {
return this.parser.getDetails(slug_url).pipe(
map((data) => {
return data;
return data as IRulibDetailResult;
}),
);
}
@@ -35,7 +41,7 @@ export class SearchService {
getChapters(url: string): Observable<IRulibChaptersResult> {
return this.parser.getChapters(url).pipe(
map((data) => {
return data;
return data as IRulibChaptersResult;
}),
);
}
@@ -43,13 +49,14 @@ export class SearchService {
getChapter(url: string, chapter: string, volume: string): Observable<IRulibChapterResult> {
return this.parser.getChapter(url, chapter, volume).pipe(
map((data) => {
return data;
return data as IRulibChapterResult;
}),
);
}
getImageServer() {
return this.parser.imageServer;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return (this.parser as any).imageServer;
}
getImageData(imageUrl: string): Observable<Uint8Array> {
@@ -61,6 +68,7 @@ export class SearchService {
}
isManhwa(url: string): Observable<boolean> {
return this.parser.isManhwa(url);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return (this.parser as any).isManhwa(url);
}
}