Skip to content

Commit b34de5d

Browse files
authored
Merge pull request #21 from chytanka/develop
feat: chtnkload event
2 parents 126fce6 + 9fd4dc4 commit b34de5d

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

src/app/common/common-read/utils/read-base-component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { BehaviorSubject, MonoTypeOperatorFunction, Observable, OperatorFunction
22
import { CompositionEpisode } from "./composition";
33
import { ActivatedRoute, ParamMap } from "@angular/router";
44
import { Title } from "@angular/platform-browser";
5-
import { OnDestroy, WritableSignal, inject, signal } from "@angular/core";
5+
import { ChangeDetectorRef, OnDestroy, WritableSignal, inject, signal } from "@angular/core";
66
import { LangService } from "../../../shared/data-access/lang.service";
77
import { HistoryService } from "../../../history/data-access/history.service";
88
import { ViewerService } from "../../../shared/data-access";
@@ -106,15 +106,23 @@ export abstract class ReadBaseComponent {
106106
await this.history.addHistory(site, post_id, title, cover, episode);
107107
}
108108

109+
cdr = inject(ChangeDetectorRef)
110+
109111

110112
protected tapSaveToCurrentPlaylistItem(site: string, post_id: string): MonoTypeOperatorFunction<CompositionEpisode> {
111113
return tap(async (episode: CompositionEpisode) => {
114+
console.log("tapSaveToCurrentPlaylistItem:", post_id, site);
115+
112116
if (episode) {
117+
console.log("tapSaveToCurrentPlaylistItem IF");
118+
113119
this.currentPlItem.set({
114120
id: post_id,
115121
site: site
116122
})
123+
this.cdr.detectChanges()
117124
}
125+
118126
})
119127
}
120128
}

src/app/shared/ui/viewer/viewer.component.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
1-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input, Signal, ViewChild, WritableSignal, computed, effect, inject, signal } from '@angular/core';
1+
import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input, Signal, ViewChild, WritableSignal, computed, inject, signal } from '@angular/core';
22
import { CompositionEpisode } from '../../../common/common-read';
33
import { ViewerService, DomManipulationService } from '../../data-access';
44
import { ActivatedRoute, Router } from '@angular/router';
55
import { LangService } from '../../data-access/lang.service';
6-
import { DialogComponent } from '../dialog/dialog.component';
76
import { DomSanitizer } from '@angular/platform-browser';
87
import { Playlist, PlaylistItem } from '../../../playlist/data-access/playlist.service';
98
import { EmbedHalperService } from '../../data-access/embed-halper.service';
109
import { DownloadService } from '../../data-access/download.service';
11-
import { Base64 } from '../../utils';
10+
11+
const CHTNK_LOAD_EVENT_NAME = 'chtnkload'
12+
const CHTNK_CHANGE_PAGE_EVENT_NAME = 'changepage';
13+
const CHTNK_NSFW_CHOICE_EVENT_NAME = 'nsfwchoice'
14+
const CHTNK_LIST_RESPONCE_EVENT_NAME = 'listresponse'
15+
const CHTNK_LIST_REQUEST_EVENT_NAME = 'listrequest'
1216

1317
@Component({
1418
selector: 'app-viewer',
@@ -22,32 +26,28 @@ import { Base64 } from '../../utils';
2226
],
2327
changeDetection: ChangeDetectionStrategy.OnPush
2428
})
25-
export class ViewerComponent {
29+
export class ViewerComponent implements AfterViewInit {
2630
readonly separator: string = '│'
2731
showNsfw: WritableSignal<boolean> = signal(false);
2832

2933
@Input() episode: CompositionEpisode | undefined = undefined;
30-
3134
@Input() playlist: Playlist = [];
3235
@Input() playlistLink: string = "";
3336
@Input() currentPlaylistItem: PlaylistItem | undefined;
3437

35-
cdr = inject(ChangeDetectorRef)
36-
3738
initListFromParrentWindow() {
3839
if (!this.embedHelper.isEmbedded()) return
3940

40-
this.embedHelper.postMessage({}, 'listrequest');
41+
this.embedHelper.postMessage(this.currentPlaylistItem, CHTNK_LIST_REQUEST_EVENT_NAME);
4142

4243
window.addEventListener('message', ({data}) => {
43-
if(data.event != "listresponse") return;
44+
if(data.event != CHTNK_LIST_RESPONCE_EVENT_NAME) return;
4445

4546
this.playlist = data.data as Playlist // !!!
4647

4748
this.cdr.detectChanges()
4849

4950
}, false);
50-
5151
}
5252

5353
getCyrrentIndex() {
@@ -78,7 +78,6 @@ export class ViewerComponent {
7878

7979
constructor(private el: ElementRef, public viewer: ViewerService, private dm: DomManipulationService, private router: Router, public lang: LangService) {
8080
this.initHotKeys()
81-
this.initListFromParrentWindow();
8281
}
8382

8483
toggleFullScreen = () => this.dm.toggleFullScreen(this.el.nativeElement)
@@ -94,6 +93,8 @@ export class ViewerComponent {
9493
ngAfterViewInit() {
9594
this.viewElement.set(this.viewRef.nativeElement);
9695
this.initActiveIndexes()
96+
this.embedHelper.postMessage(this.currentPlaylistItem, CHTNK_LOAD_EVENT_NAME);
97+
this.initListFromParrentWindow();
9798
}
9899

99100
activeIndexs: WritableSignal<number[]> = signal([])
@@ -126,7 +127,7 @@ export class ViewerComponent {
126127
this.embedHelper.postMessage({
127128
total: this.episode?.images.length,
128129
current: activeIndxs.map(i => i + 1)
129-
}, 'changepage');
130+
}, CHTNK_CHANGE_PAGE_EVENT_NAME);
130131

131132
}
132133

@@ -218,12 +219,12 @@ export class ViewerComponent {
218219

219220
onAgree() {
220221
this.showNsfw.set(true);
221-
this.embedHelper.postMessage(true, 'nsfwchoice');
222+
this.embedHelper.postMessage(true, CHTNK_NSFW_CHOICE_EVENT_NAME);
222223
}
223224

224225
onDisagree() {
225226
this.showNsfw.set(false);
226-
this.embedHelper.postMessage(false, 'nsfwchoice');
227+
this.embedHelper.postMessage(false, CHTNK_NSFW_CHOICE_EVENT_NAME);
227228

228229
if (!this.embedHelper.isEmbedded())
229230
this.router.navigate(['/'])
@@ -246,6 +247,7 @@ export class ViewerComponent {
246247
dl: DownloadService = inject(DownloadService);
247248
sanitizer: DomSanitizer = inject(DomSanitizer);
248249
embedHelper = inject(EmbedHalperService);
250+
cdr = inject(ChangeDetectorRef)
249251

250252
//#endregion
251253

0 commit comments

Comments
 (0)