From 7677b599a4d53e788099f12e6b38169e9dc2be3c Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Fri, 24 Apr 2020 18:26:56 +0100
Subject: [PATCH] FEAT #13670 TIME 1:10 Clear interval + fix logout from
 process page

---
 src/frontend/app/actions/actions.service.ts                 | 6 ++++++
 .../template/template-administration.component.ts           | 3 +++
 src/frontend/app/process/process.component.ts               | 3 +++
 src/frontend/app/signature-book.component.ts                | 4 ++++
 src/frontend/app/viewer/document-viewer.component.ts        | 6 ++++++
 src/frontend/service/app.guard.ts                           | 6 +++---
 6 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/src/frontend/app/actions/actions.service.ts b/src/frontend/app/actions/actions.service.ts
index af2801d6055..e22014e5623 100644
--- a/src/frontend/app/actions/actions.service.ts
+++ b/src/frontend/app/actions/actions.service.ts
@@ -71,6 +71,12 @@ export class ActionsService {
     ) {
     }
 
+    ngOnDestroy(): void {
+        if (this.currentResourceLock) {
+            clearInterval(this.currentResourceLock);
+        }
+    }
+
     catchAction(): Observable<any> {
         return this.eventAction.asObservable();
     }
diff --git a/src/frontend/app/administration/template/template-administration.component.ts b/src/frontend/app/administration/template/template-administration.component.ts
index e60df48ac7e..0e052d36c34 100755
--- a/src/frontend/app/administration/template/template-administration.component.ts
+++ b/src/frontend/app/administration/template/template-administration.component.ts
@@ -672,6 +672,9 @@ export class TemplateAdministrationComponent implements OnInit, OnDestroy {
 
     ngOnDestroy() {
         tinymce.remove('textarea');
+        if (this.intervalLockFile) {
+            clearInterval(this.intervalLockFile);
+        }
     }
 }
 @Component({
diff --git a/src/frontend/app/process/process.component.ts b/src/frontend/app/process/process.component.ts
index 473c367f1d5..338b167a886 100755
--- a/src/frontend/app/process/process.component.ts
+++ b/src/frontend/app/process/process.component.ts
@@ -683,6 +683,9 @@ export class ProcessComponent implements OnInit {
     }
 
     ngOnDestroy() {
+        if (this.currentResourceLock) {
+            clearInterval(this.currentResourceLock);
+        }
         // unsubscribe to ensure no memory leaks
         this.subscription.unsubscribe();
     }
diff --git a/src/frontend/app/signature-book.component.ts b/src/frontend/app/signature-book.component.ts
index e3d059125aa..7135f0f6576 100755
--- a/src/frontend/app/signature-book.component.ts
+++ b/src/frontend/app/signature-book.component.ts
@@ -600,6 +600,10 @@ export class SignatureBookComponent implements OnInit {
     }
 
     ngOnDestroy() {
+        if (this.currentResourceLock) {
+            clearInterval(this.currentResourceLock);
+        }
+
         // unsubscribe to ensure no memory leaks
         this.subscription.unsubscribe();
     }
diff --git a/src/frontend/app/viewer/document-viewer.component.ts b/src/frontend/app/viewer/document-viewer.component.ts
index d9ff3c6553f..e01c2548241 100755
--- a/src/frontend/app/viewer/document-viewer.component.ts
+++ b/src/frontend/app/viewer/document-viewer.component.ts
@@ -208,6 +208,12 @@ export class DocumentViewerComponent implements OnInit {
         }
     }
 
+    ngOnDestroy() {
+        if (this.intervalLockFile) {
+            clearInterval(this.intervalLockFile);
+        }
+    }
+
     loadFileFromBase64() {
         this.loading = true;
         this.file = {
diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts
index 1ead3da4c47..d71cca9b128 100644
--- a/src/frontend/service/app.guard.ts
+++ b/src/frontend/service/app.guard.ts
@@ -1,6 +1,6 @@
 
 import { Injectable } from '@angular/core';
-import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, CanDeactivate } from '@angular/router';
+import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, CanDeactivate, UrlTree } from '@angular/router';
 import { HttpClient } from '@angular/common/http';
 import { Observable, of } from 'rxjs';
 import { map, tap, catchError, exhaustMap, filter } from 'rxjs/operators';
@@ -181,8 +181,8 @@ export class AppGuard implements CanActivate {
 export class AfterProcessGuard implements CanDeactivate<ProcessComponent> {
     constructor() { }
 
-    async canDeactivate(component: ProcessComponent): Promise<boolean> {
-        if (!component.isActionEnded() && !component.detailMode) {
+    async canDeactivate(component: ProcessComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState: RouterStateSnapshot): Promise<boolean> {
+        if (nextState.url != '/login' && !component.isActionEnded() && !component.detailMode) {
             component.unlockResource();
         }
 
-- 
GitLab