From d4a2629e8f69a6680775ca3a39437078014b5c43 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Thu, 14 Oct 2021 22:31:26 +0300 Subject: [PATCH] add viewed pages service --- .../page-indicator.component.ts | 9 ++++--- .../services/pdf-viewer-data.service.ts | 6 ++--- .../shared/services/viewed-pages.service.ts | 27 +++++++++++++++++++ libs/red-ui-http/src/lib/api.module.ts | 3 +-- 4 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 apps/red-ui/src/app/modules/dossier/shared/services/viewed-pages.service.ts diff --git a/apps/red-ui/src/app/modules/dossier/components/page-indicator/page-indicator.component.ts b/apps/red-ui/src/app/modules/dossier/components/page-indicator/page-indicator.component.ts index d8e247d77..6f97eeabb 100644 --- a/apps/red-ui/src/app/modules/dossier/components/page-indicator/page-indicator.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/page-indicator/page-indicator.component.ts @@ -1,10 +1,11 @@ import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core'; -import { ViewedPages, ViewedPagesControllerService } from '@redaction/red-ui-http'; +import { ViewedPages } from '@redaction/red-ui-http'; import { AppStateService } from '@state/app-state.service'; import { PermissionsService } from '@services/permissions.service'; import { ConfigService } from '@services/config.service'; import { Subscription } from 'rxjs'; import { DossiersService } from '@services/entity-services/dossiers.service'; +import { ViewedPagesService } from '../../shared/services/viewed-pages.service'; @Component({ selector: 'redaction-page-indicator', @@ -24,7 +25,7 @@ export class PageIndicatorComponent implements OnChanges, OnInit, OnDestroy { private _subscription: Subscription; constructor( - private readonly _viewedPagesControllerService: ViewedPagesControllerService, + private readonly _viewedPagesService: ViewedPagesService, private readonly _appStateService: AppStateService, private readonly _dossiersService: DossiersService, private readonly _configService: ConfigService, @@ -105,7 +106,7 @@ export class PageIndicatorComponent implements OnChanges, OnInit, OnDestroy { // } private _markPageRead() { - this._viewedPagesControllerService + this._viewedPagesService .addPage({ page: this.number }, this._dossiersService.activeDossierId, this._appStateService.activeFileId) .subscribe(() => { if (this.activePage) { @@ -117,7 +118,7 @@ export class PageIndicatorComponent implements OnChanges, OnInit, OnDestroy { } private _markPageUnread() { - this._viewedPagesControllerService + this._viewedPagesService .removePage(this._dossiersService.activeDossierId, this._appStateService.activeFileId, this.number) .subscribe(() => { this.viewedPages?.pages?.splice( diff --git a/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts b/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts index d597da499..7578d2573 100644 --- a/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/pdf-viewer-data.service.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; import { forkJoin, Observable, of } from 'rxjs'; import { catchError, map, tap } from 'rxjs/operators'; -import { ViewedPagesControllerService } from '@redaction/red-ui-http'; import { FileDataModel } from '@models/file/file-data.model'; import { AppStateService } from '@state/app-state.service'; import { PermissionsService } from '@services/permissions.service'; @@ -9,6 +8,7 @@ import { File } from '@models/file/file'; import { DossiersService } from '@services/entity-services/dossiers.service'; import { FileManagementService } from '../shared/services/file-management.service'; import { RedactionLogService } from './redaction-log.service'; +import { ViewedPagesService } from '../shared/services/viewed-pages.service'; @Injectable() export class PdfViewerDataService { @@ -18,7 +18,7 @@ export class PdfViewerDataService { private readonly _permissionsService: PermissionsService, private readonly _fileManagementService: FileManagementService, private readonly _redactionLogService: RedactionLogService, - private readonly _viewedPagesControllerService: ViewedPagesControllerService, + private readonly _viewedPagesService: ViewedPagesService, ) {} loadActiveFileRedactionLog() { @@ -42,7 +42,7 @@ export class PdfViewerDataService { getViewedPagesForActiveFile() { if (this._permissionsService.canMarkPagesAsViewed()) { - return this._viewedPagesControllerService + return this._viewedPagesService .getViewedPages(this._dossiersService.activeDossierId, this._appStateService.activeFileId) .pipe(catchError(() => of({ pages: [] }))); } diff --git a/apps/red-ui/src/app/modules/dossier/shared/services/viewed-pages.service.ts b/apps/red-ui/src/app/modules/dossier/shared/services/viewed-pages.service.ts new file mode 100644 index 000000000..43a2e31fa --- /dev/null +++ b/apps/red-ui/src/app/modules/dossier/shared/services/viewed-pages.service.ts @@ -0,0 +1,27 @@ +import { Injectable, Injector } from '@angular/core'; +import { GenericService, RequiredParam, Validate } from '@iqser/common-ui'; +import { ViewedPages, ViewedPagesRequest } from '@redaction/red-ui-http'; + +@Injectable({ + providedIn: 'root', +}) +export class ViewedPagesService extends GenericService { + constructor(protected readonly _injector: Injector) { + super(_injector, 'viewedPages'); + } + + @Validate() + addPage(@RequiredParam() body: ViewedPagesRequest, @RequiredParam() dossierId: string, @RequiredParam() fileId: string) { + return this._post(body, `${this._defaultModelPath}/${dossierId}/${fileId}`); + } + + @Validate() + removePage(@RequiredParam() dossierId: string, @RequiredParam() fileId: string, @RequiredParam() page: number) { + return super.delete({}, `${this._defaultModelPath}/${dossierId}/${fileId}/${page}`); + } + + @Validate() + getViewedPages(@RequiredParam() dossierId: string, @RequiredParam() fileId: string) { + return this._getOne([dossierId, fileId]); + } +} diff --git a/libs/red-ui-http/src/lib/api.module.ts b/libs/red-ui-http/src/lib/api.module.ts index faff600c0..a3fb4c26b 100644 --- a/libs/red-ui-http/src/lib/api.module.ts +++ b/libs/red-ui-http/src/lib/api.module.ts @@ -1,7 +1,6 @@ import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core'; import { Configuration } from './configuration'; import { HttpClient } from '@angular/common/http'; -import { ViewedPagesControllerService } from './api/viewedPagesController.service'; import { WatermarkControllerService } from './api/watermarkController.service'; import { SearchControllerService } from './api/searchController.service'; import { NotificationControllerService } from './api/notificationController.service'; @@ -10,7 +9,7 @@ import { NotificationControllerService } from './api/notificationController.serv imports: [], declarations: [], exports: [], - providers: [ViewedPagesControllerService, WatermarkControllerService, SearchControllerService, NotificationControllerService], + providers: [WatermarkControllerService, SearchControllerService, NotificationControllerService], }) export class ApiModule { constructor(@Optional() @SkipSelf() parentModule: ApiModule, @Optional() http: HttpClient) {