You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RTL/src/app/shared/components/data-modal/is-authorized/is-authorized.component.ts

55 lines
1.6 KiB
TypeScript

import { Component, OnDestroy, OnInit } from '@angular/core';
import { Subject } from 'rxjs';
import { takeUntil, take } from 'rxjs/operators';
import { Store } from '@ngrx/store';
import { MatDialogRef } from '@angular/material/dialog';
import * as sha256 from 'sha256';
import { RTLEffects } from '../../../../store/rtl.effects';
import { RTLState } from '../../../../store/rtl.state';
import { isAuthorized, closeAlert } from '../../../../store/rtl.actions';
@Component({
selector: 'rtl-is-authorized',
templateUrl: './is-authorized.component.html',
styleUrls: ['./is-authorized.component.scss']
})
export class IsAuthorizedComponent implements OnInit, OnDestroy {
public password = '';
public isAuthenticated = false;
private unSubs: Array<Subject<void>> = [new Subject(), new Subject()];
constructor(public dialogRef: MatDialogRef<IsAuthorizedComponent>, private store: Store<RTLState>, private rtlEffects: RTLEffects) { }
ngOnInit(): void {
this.rtlEffects.isAuthorizedRes.
pipe(take(1)).
subscribe((authRes) => {
if (authRes !== 'ERROR') {
this.isAuthenticated = true;
this.store.dispatch(closeAlert({ payload: this.isAuthenticated }));
} else {
this.isAuthenticated = false;
}
});
}
onAuthenticate(): boolean | void {
if (!this.password) { return true; }
this.store.dispatch(isAuthorized({ payload: sha256(this.password) }));
}
onClose() {
this.store.dispatch(closeAlert({ payload: this.isAuthenticated }));
}
ngOnDestroy(): void {
this.unSubs.forEach((completeSub) => {
completeSub.next(<any>null);
completeSub.complete();
});
}
}