UNPKG

@hmcts/media-viewer

Version:
44 lines 13.2 kB
import { Injectable } from '@angular/core'; import { createEffect, ofType } from '@ngrx/effects'; import { catchError, exhaustMap, map, switchMap, withLatestFrom } from 'rxjs/operators'; import { of } from 'rxjs'; import * as bookmarksActions from '../actions/bookmark.actions'; import { select } from '@ngrx/store'; import * as fromDocument from '../selectors/document.selectors'; import * as i0 from "@angular/core"; import * as i1 from "@ngrx/effects"; import * as i2 from "@ngrx/store"; import * as i3 from "../../annotations/services/bookmarks-api/bookmarks-api.service"; export class BookmarksEffects { constructor(actions$, store, bookmarksApiService) { this.actions$ = actions$; this.store = store; this.bookmarksApiService = bookmarksApiService; this.loadBookmarks$ = createEffect(() => this.actions$.pipe(ofType(bookmarksActions.LOAD_BOOKMARKS), withLatestFrom(this.store.pipe(select(fromDocument.getDocumentId))), map(([, documentId]) => documentId), exhaustMap((documentId) => this.bookmarksApiService.getBookmarks(documentId) .pipe(map(res => new bookmarksActions.LoadBookmarksSuccess(res)), catchError(err => of(new bookmarksActions.LoadBookmarksFailure(err))))))); this.createBookmark$ = createEffect(() => this.actions$.pipe(ofType(bookmarksActions.CREATE_BOOKMARK), map((action) => action.payload), exhaustMap((bookmark) => this.bookmarksApiService.createBookmark(bookmark) .pipe(map(bmrk => new bookmarksActions.CreateBookmarkSuccess(bmrk)), catchError(error => of(new bookmarksActions.CreateBookmarkFailure(error))))))); this.moveBookmark$ = createEffect(() => this.actions$.pipe(ofType(bookmarksActions.MOVE_BOOKMARK), map((action) => action.payload), exhaustMap((bookmarks) => this.bookmarksApiService.updateMultipleBookmarks(bookmarks) .pipe(map(bmrks => new bookmarksActions.MoveBookmarkSuccess(bmrks)), catchError(error => of(new bookmarksActions.MoveBookmarkFailure(error))))))); this.deleteBookmark$ = createEffect(() => this.actions$.pipe(ofType(bookmarksActions.DELETE_BOOKMARK), map((action) => action.payload), exhaustMap(({ deleted, updated }) => this.bookmarksApiService.deleteMultipleBookmarks({ deleted, updated }) .pipe(switchMap(() => { if (updated) { return [ new bookmarksActions.DeleteBookmarkSuccess(deleted), new bookmarksActions.UpdateBookmarkSuccess(updated) ]; } else { return [new bookmarksActions.DeleteBookmarkSuccess(deleted)]; } }), catchError(error => of(new bookmarksActions.DeleteBookmarkFailure(error))))))); this.updateBookmark$ = createEffect(() => this.actions$.pipe(ofType(bookmarksActions.UPDATE_BOOKMARK), map((action) => action.payload), switchMap((bookmark) => this.bookmarksApiService.updateBookmark(bookmark) .pipe(map(bmrk => new bookmarksActions.UpdateBookmarkSuccess(bmrk)), catchError(error => of(new bookmarksActions.UpdateBookmarkFailure(error))))))); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookmarksEffects, deps: [{ token: i1.Actions }, { token: i2.Store }, { token: i3.BookmarksApiService }], target: i0.ɵɵFactoryTarget.Injectable }); } /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookmarksEffects }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookmarksEffects, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.Actions }, { type: i2.Store }, { type: i3.BookmarksApiService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmtzLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2Jvb2ttYXJrcy5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxZQUFZLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBS2hFLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBb0IsUUFBaUIsRUFDakIsS0FBdUUsRUFDdkUsbUJBQXdDO1FBRnhDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBa0U7UUFDdkUsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUU1RCxtQkFBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFDdkMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNuRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFD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O1lBQy9ELENBQUM7UUFDSCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQzNFLENBQ0osQ0FBQyxDQUNILENBQUM7UUFFRixvQkFBZSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsRUFDeEMsR0FBRyxDQUFDLENBQUMsTUFBdUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNoRSxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQzthQUM5QyxJQUFJLENBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUM3RCxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQzNFLENBQ0osQ0FBQyxDQUNILENBQUM7SUEzRTZELENBQUM7a0lBSnJELGdCQUFnQjtzSUFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGV4aGF1c3RNYXAsIG1hcCwgc3dpdGNoTWFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCb29rbWFya3NBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbnMvc2VydmljZXMvYm9va21hcmtzLWFwaS9ib29rbWFya3MtYXBpLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgYm9va21hcmtzQWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL2Jvb2ttYXJrLmFjdGlvbnMnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21Eb2N1bWVudCBmcm9tICcuLi9zZWxlY3RvcnMvZG9jdW1lbnQuc2VsZWN0b3JzJztcbmltcG9ydCAqIGFzIGZyb21Cb29rbWFya3MgZnJvbSAnLi4vcmVkdWNlcnMvYm9va21hcmtzLnJlZHVjZXInO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uL3JlZHVjZXJzL3JlZHVjZXJzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJvb2ttYXJrc0VmZmVjdHMge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgICAgICAgICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGZyb21TdG9yZS5Bbm5vdGF0aW9uU2V0U3RhdGV8ZnJvbUJvb2ttYXJrcy5Cb29rbWFya3NTdGF0ZT4sXG4gICAgICAgICAgICAgIHByaXZhdGUgYm9va21hcmtzQXBpU2VydmljZTogQm9va21hcmtzQXBpU2VydmljZSkge31cblxuICBsb2FkQm9va21hcmtzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoYm9va21hcmtzQWN0aW9ucy5MT0FEX0JPT0tNQVJLUyksXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tRG9jdW1lbnQuZ2V0RG9jdW1lbnRJZCkpKSxcbiAgICBtYXAoKFssIGRvY3VtZW50SWRdKSA9PiBkb2N1bWVudElkKSxcbiAgICBleGhhdXN0TWFwKChkb2N1bWVudElkKSA9PlxuICAgICAgdGhpcy5ib29rbWFya3NBcGlTZXJ2aWNlLmdldEJvb2ttYXJrcyhkb2N1bWVudElkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAocmVzID0+IG5ldyBib29rbWFya3NBY3Rpb25zLkxvYWRCb29rbWFya3NTdWNjZXNzKHJlcykpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IG9mKG5ldyBib29rbWFya3NBY3Rpb25zLkxvYWRCb29rbWFya3NGYWlsdXJlKGVycikpKVxuICAgICAgICApXG4gICAgKSlcbiAgKTtcblxuICBjcmVhdGVCb29rbWFyayQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGJvb2ttYXJrc0FjdGlvbnMuQ1JFQVRFX0JPT0tNQVJLKSxcbiAgICBtYXAoKGFjdGlvbjogYm9va21hcmtzQWN0aW9ucy5DcmVhdGVCb29rbWFyaykgPT4gYWN0aW9uLnBheWxvYWQpLFxuICAgIGV4aGF1c3RNYXAoKGJvb2ttYXJrKSA9PlxuICAgICAgdGhpcy5ib29rbWFya3NBcGlTZXJ2aWNlLmNyZWF0ZUJvb2ttYXJrKGJvb2ttYXJrKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoYm1yayA9PiBuZXcgYm9va21hcmtzQWN0aW9ucy5DcmVhdGVCb29rbWFya1N1Y2Nlc3MoYm1yaykpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gb2YobmV3IGJvb2ttYXJrc0FjdGlvbnMuQ3JlYXRlQm9va21hcmtGYWlsdXJlKGVycm9yKSkpXG4gICAgICAgIClcbiAgICApKVxuICApO1xuXG4gIG1vdmVCb29rbWFyayQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGJvb2ttYXJrc0FjdGlvbnMuTU9WRV9CT09LTUFSSyksXG4gICAgbWFwKChhY3Rpb246IGJvb2ttYXJrc0FjdGlvbnMuTW92ZUJvb2ttYXJrKSA9PiBhY3Rpb24ucGF5bG9hZCksXG4gICAgZXhoYXVzdE1hcCgoYm9va21hcmtzKSA9PlxuICAgICAgdGhpcy5ib29rbWFya3NBcGlTZXJ2aWNlLnVwZGF0ZU11bHRpcGxlQm9va21hcmtzKGJvb2ttYXJrcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKGJtcmtzID0+IG5ldyBib29rbWFya3NBY3Rpb25zLk1vdmVCb29rbWFya1N1Y2Nlc3MoYm1ya3MpKSxcbiAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IG9mKG5ldyBib29rbWFya3NBY3Rpb25zLk1vdmVCb29rbWFya0ZhaWx1cmUoZXJyb3IpKSlcbiAgICAgICAgKVxuICAgICkpXG4gICk7XG5cbiAgZGVsZXRlQm9va21hcmskID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShib29rbWFya3NBY3Rpb25zLkRFTEVURV9CT09LTUFSSyksXG4gICAgbWFwKChhY3Rpb246IGJvb2ttYXJrc0FjdGlvbnMuRGVsZXRlQm9va21hcmspID0+IGFjdGlvbi5wYXlsb2FkKSxcbiAgICBleGhhdXN0TWFwKCh7IGRlbGV0ZWQsIHVwZGF0ZWQgfSkgPT5cbiAgICAgIHRoaXMuYm9va21hcmtzQXBpU2VydmljZS5kZWxldGVNdWx0aXBsZUJvb2ttYXJrcyh7IGRlbGV0ZWQsIHVwZGF0ZWQgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh1cGRhdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgbmV3IGJvb2ttYXJrc0FjdGlvbnMuRGVsZXRlQm9va21hcmtTdWNjZXNzKGRlbGV0ZWQpLFxuICAgICAgICAgICAgICAgIG5ldyBib29rbWFya3NBY3Rpb25zLlVwZGF0ZUJvb2ttYXJrU3VjY2Vzcyh1cGRhdGVkKVxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgYm9va21hcmtzQWN0aW9ucy5EZWxldGVCb29rbWFya1N1Y2Nlc3MoZGVsZXRlZCldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gb2YobmV3IGJvb2ttYXJrc0FjdGlvbnMuRGVsZXRlQm9va21hcmtGYWlsdXJlKGVycm9yKSkpXG4gICAgICAgIClcbiAgICApKVxuICApO1xuXG4gIHVwZGF0ZUJvb2ttYXJrJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoYm9va21hcmtzQWN0aW9ucy5VUERBVEVfQk9PS01BUkspLFxuICAgIG1hcCgoYWN0aW9uOiBib29rbWFya3NBY3Rpb25zLlVwZGF0ZUJvb2ttYXJrKSA9PiBhY3Rpb24ucGF5bG9hZCksXG4gICAgc3dpdGNoTWFwKChib29rbWFyaykgPT5cbiAgICAgIHRoaXMuYm9va21hcmtzQXBpU2VydmljZS51cGRhdGVCb29rbWFyayhib29rbWFyaylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKGJtcmsgPT4gbmV3IGJvb2ttYXJrc0FjdGlvbnMuVXBkYXRlQm9va21hcmtTdWNjZXNzKGJtcmspKSxcbiAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IG9mKG5ldyBib29rbWFya3NBY3Rpb25zLlVwZGF0ZUJvb2ttYXJrRmFpbHVyZShlcnJvcikpKVxuICAgICAgICApXG4gICAgKSlcbiAgKTtcbn1cbiJdfQ==