move auto unsubscribe to common lib
This commit is contained in:
parent
3afc24c560
commit
6b8d11a048
@ -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],
|
||||
|
||||
@ -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';
|
||||
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 }
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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';
|
||||
|
||||
@ -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')));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user