move auto unsubscribe to common lib

This commit is contained in:
Dan Percic 2021-07-29 13:19:59 +03:00 committed by Timo Bejan
parent 3afc24c560
commit 6b8d11a048
12 changed files with 42 additions and 78 deletions

View File

@ -1,26 +1,23 @@
import { Component, Inject, OnDestroy } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { DossierAttributeConfig, FileAttributeConfig } from '@redaction/red-ui-http';
import { AppStateService } from '@state/app-state.service';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { LoadingService } from '@services/loading.service';
import { HttpErrorResponse } from '@angular/common/http';
import { Toaster } from '@services/toaster.service';
import { AutoUnsubscribeComponent } from '@shared/base/auto-unsubscribe.component';
import { DossierAttributesService } from '@shared/services/controller-wrappers/dossier-attributes.service';
import { dossierAttributeTypesTranslations } from '../../translations/dossier-attribute-types-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
@Component({
selector: 'redaction-add-edit-dossier-attribute-dialog',
templateUrl: './add-edit-dossier-attribute-dialog.component.html',
styleUrls: ['./add-edit-dossier-attribute-dialog.component.scss']
})
export class AddEditDossierAttributeDialogComponent extends AutoUnsubscribeComponent implements OnDestroy {
dossierAttributeForm: FormGroup;
dossierAttribute: DossierAttributeConfig;
translations = dossierAttributeTypesTranslations;
dossierTemplateId: string;
readonly translations = dossierAttributeTypesTranslations;
readonly typeOptions = [
DossierAttributeConfig.TypeEnum.TEXT,
DossierAttributeConfig.TypeEnum.NUMBER,
@ -29,18 +26,16 @@ export class AddEditDossierAttributeDialogComponent extends AutoUnsubscribeCompo
];
constructor(
private readonly _appStateService: AppStateService,
private readonly _formBuilder: FormBuilder,
private readonly _loadingService: LoadingService,
private readonly _dossierAttributesService: DossierAttributesService,
private readonly _toaster: Toaster,
public dialogRef: MatDialogRef<AddEditDossierAttributeDialogComponent>,
readonly dialogRef: MatDialogRef<AddEditDossierAttributeDialogComponent>,
@Inject(MAT_DIALOG_DATA)
public data: { dossierAttribute: DossierAttributeConfig; dossierTemplateId: string }
readonly data: { readonly dossierAttribute: DossierAttributeConfig }
) {
super();
this.dossierAttribute = data.dossierAttribute;
this.dossierTemplateId = data.dossierTemplateId;
this.dossierAttributeForm = this._formBuilder.group({
label: [this.dossierAttribute?.label, Validators.required],

View File

@ -5,7 +5,7 @@ import { AuditControllerService, AuditResponse, AuditSearchRequest } from '@reda
import { Moment } from 'moment';
import { applyIntervalConstraints } from '@utils/date-inputs-utils';
import { LoadingService } from '@services/loading.service';
import { AutoUnsubscribeComponent } from '@shared/base/auto-unsubscribe.component';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { auditCategoriesTranslations } from '../../translations/audit-categories-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';

View File

@ -4,7 +4,7 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Toaster } from '@services/toaster.service';
import { PermissionsService } from '@services/permissions.service';
import { lastIndexOfEnd } from '@utils/functions';
import { AutoUnsubscribeComponent } from '@shared/base/auto-unsubscribe.component';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { LoadingService } from '@services/loading.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { IconButtonTypes } from '@iqser/common-ui';

View File

@ -1,4 +1,4 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AdminDialogService } from '../../services/admin-dialog.service';
@ -8,10 +8,10 @@ import {
SmtpConfigurationControllerService,
SMTPConfigurationModel
} from '@redaction/red-ui-http';
import { AppConfigService } from '../../../app-config/app-config.service';
import { AutoUnsubscribeComponent } from '../../../shared/base/auto-unsubscribe.component';
import { Toaster } from '../../../../services/toaster.service';
import { LoadingService } from '../../../../services/loading.service';
import { AppConfigService } from '@app-config/app-config.service';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { Toaster } from '@services/toaster.service';
import { LoadingService } from '@services/loading.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { IconButtonTypes } from '@iqser/common-ui';
@ -20,10 +20,10 @@ import { IconButtonTypes } from '@iqser/common-ui';
templateUrl: './general-config-screen.component.html',
styleUrls: ['./general-config-screen.component.scss']
})
export class GeneralConfigScreenComponent extends AutoUnsubscribeComponent implements OnInit {
export class GeneralConfigScreenComponent extends AutoUnsubscribeComponent implements OnInit, OnDestroy {
readonly iconButtonTypes = IconButtonTypes;
configForm: FormGroup;
smtpForm: FormGroup;
readonly configForm: FormGroup;
readonly smtpForm: FormGroup;
private _initialGeneralConfiguration: GeneralConfigurationModel;
private _initialSMTPConfiguration: SMTPConfigurationModel;

View File

@ -11,7 +11,7 @@ import { AddEditUserDialogComponent } from '../dialogs/add-edit-user-dialog/add-
import { ConfirmDeleteUsersDialogComponent } from '../dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component';
import { FileAttributesCsvImportDialogComponent } from '../dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component';
import { ComponentType } from '@angular/cdk/portal';
import { DialogService } from '@shared/services/dialog.service';
import { DialogService, largeDialogConfig } from '@shared/services/dialog.service';
import { AddEditDossierAttributeDialogComponent } from '../dialogs/add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component';
type DialogType =
@ -57,7 +57,7 @@ export class AdminDialogService extends DialogService<DialogType> {
},
importFileAttributes: {
component: FileAttributesCsvImportDialogComponent,
dialogConfig: this._largeConfig
dialogConfig: largeDialogConfig
},
deleteUsers: {
component: ConfirmDeleteUsersDialogComponent,

View File

@ -15,7 +15,7 @@ import { AnnotationProcessingService } from '../../services/annotation-processin
import { Toaster } from '@services/toaster.service';
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
import { PermissionsService } from '@services/permissions.service';
import { Subscription, timer } from 'rxjs';
import { timer } from 'rxjs';
import { UserPreferenceService } from '@services/user-preference.service';
import { UserService } from '@services/user.service';
import {
@ -34,9 +34,9 @@ import { OnAttach, OnDetach } from '@utils/custom-route-reuse.strategy';
import { FilterModel } from '@shared/components/filters/popup-filter/model/filter.model';
import { handleFilterDelta, processFilters } from '@shared/components/filters/popup-filter/utils/filter-utils';
import { LoadingService } from '@services/loading.service';
import { stampPDFPage } from '../../../../utils/page-stamper';
import { stampPDFPage } from '@utils/page-stamper';
import { TranslateService } from '@ngx-translate/core';
import { AutoUnsubscribeComponent } from '@shared/base/auto-unsubscribe.component';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { fileStatusTranslations } from '../../translations/file-status-translations';
const ALL_HOTKEY_ARRAY = ['Escape', 'F', 'f'];
@ -58,13 +58,12 @@ export class FilePreviewScreenComponent extends AutoUnsubscribeComponent impleme
primaryFilters: FilterModel[];
secondaryFilters: FilterModel[];
canPerformAnnotationActions: boolean;
filesAutoUpdateTimer: Subscription;
hideSkipped = false;
displayPDFViewer = false;
viewDocumentInfo = false;
excludePages = false;
@ViewChild(PdfViewerComponent) viewerComponent: PdfViewerComponent;
translations = fileStatusTranslations;
readonly translations = fileStatusTranslations;
private _instance: WebViewerInstance;
private _lastPage: string;
private _reloadFileOnReanalysis = false;

View File

@ -19,10 +19,10 @@ import { DossierDictionaryDialogComponent } from '../dialogs/dossier-dictionary-
import { EditDossierDialogComponent } from '../dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
import { AssignReviewerApproverDialogComponent } from '../dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component';
import { AppConfigService } from '../../app-config/app-config.service';
import { AppConfigService } from '@app-config/app-config.service';
import { ChangeLegalBasisDialogComponent } from '../dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component';
import { RecategorizeImageDialogComponent } from '../dialogs/recategorize-image-dialog/recategorize-image-dialog.component';
import { DialogService } from '@shared/services/dialog.service';
import { DialogService, largeDialogConfig } from '@shared/services/dialog.service';
import { ComponentType } from '@angular/cdk/portal';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
@ -30,7 +30,7 @@ const dialogConfig = {
width: '662px',
maxWidth: '90vw',
autoFocus: false
};
} as const;
// TODO: Continue refactor
@ -55,7 +55,7 @@ export class DossiersDialogService extends DialogService<DialogType> {
},
editDossier: {
component: EditDossierDialogComponent,
dialogConfig: { ...this._largeConfig }
dialogConfig: { ...largeDialogConfig }
}
};

View File

@ -1,28 +0,0 @@
import { Component, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
/**
* Inherit this class when you need to subscribe to observables in your components
*/
@Component({ template: '' })
export abstract class AutoUnsubscribeComponent implements OnDestroy {
private _subscriptions = new Subscription();
/**
* Call this method when you want to subscribe to an observable
* @param subscription - the new subscription to add to subscriptions array
*/
set addSubscription(subscription: Subscription) {
this._subscriptions.closed = false;
this._subscriptions.add(subscription);
}
/**
* This method unsubscribes active subscriptions
* If you implement OnDestroy in a component that inherits AutoUnsubscribeComponent,
* then you must explicitly call super.ngOnDestroy()
*/
ngOnDestroy(): void {
this._subscriptions.unsubscribe();
}
}

View File

@ -4,7 +4,7 @@ import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { SearchService } from '../services/search.service';
import { ScreenStateService } from '../services/screen-state.service';
import { combineLatest, Observable } from 'rxjs';
import { AutoUnsubscribeComponent } from './auto-unsubscribe.component';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { distinctUntilChanged, map, switchMap } from 'rxjs/operators';
import { PermissionsService } from '@services/permissions.service';
import { FilterService } from '../services/filter.service';

View File

@ -4,7 +4,7 @@ import { DossierWrapper } from '@state/model/dossier.wrapper';
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
import { FileDownloadService } from '@upload-download/services/file-download.service';
import { Toaster } from '@services/toaster.service';
import { AutoUnsubscribeComponent } from '@shared/base/auto-unsubscribe.component';
import { AutoUnsubscribeComponent } from '@iqser/common-ui';
import { TranslateService } from '@ngx-translate/core';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
@ -51,8 +51,6 @@ export class FileDownloadBtnComponent extends AutoUnsubscribeComponent implement
$event.stopPropagation();
this.addSubscription = this._fileDownloadService
.downloadFiles(Array.isArray(this.file) ? this.file : [this.file], this.dossier)
.subscribe(() => {
this._toaster.info(_('download-status.queued'));
});
.subscribe(() => this._toaster.info(_('download-status.queued')));
}
}

View File

@ -2,6 +2,19 @@ import { Injectable } from '@angular/core';
import { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';
import { ComponentType } from '@angular/cdk/portal';
export const largeDialogConfig: MatDialogConfig = {
width: '90vw',
maxWidth: '90vw',
maxHeight: '90vh',
autoFocus: false
} as const;
export const defaultDialogConfig: MatDialogConfig = {
width: '662px',
maxWidth: '90vw',
autoFocus: false
} as const;
@Injectable()
export abstract class DialogService<T extends string> {
protected readonly _config: {
@ -11,19 +24,6 @@ export abstract class DialogService<T extends string> {
};
};
protected _largeConfig = {
width: '90vw',
maxWidth: '90vw',
maxHeight: '90vh',
autoFocus: false
};
protected _defaultConfig = {
width: '662px',
maxWidth: '90vw',
autoFocus: false
};
protected constructor(protected readonly _dialog: MatDialog) {}
openDialog(type: T, $event: MouseEvent, data: any, cb?: Function, finallyCb?: Function): MatDialogRef<any> {
@ -31,7 +31,7 @@ export abstract class DialogService<T extends string> {
$event?.stopPropagation();
const ref = this._dialog.open(config.component, {
...this._defaultConfig,
...defaultDialogConfig,
...(config.dialogConfig || {}),
data
});

@ -1 +1 @@
Subproject commit 004d821e31099b88e3f67ad9478b56b3372a26ed
Subproject commit 29995f481c2d353df4ab648a4132f45dea012df1