From 09dcc5ff0461f2419673317ba01118d4f34797c1 Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Tue, 5 Nov 2019 14:59:24 +0100
Subject: [PATCH] FEAT #11698 TIME 0:20 add loader loadtmpfile

---
 rest/index.php                                |  4 +-
 .../app/viewer/document-viewer.component.ts   | 65 ++++++++++++++-----
 2 files changed, 51 insertions(+), 18 deletions(-)

diff --git a/rest/index.php b/rest/index.php
index eab581e838f..2167f131108 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -214,8 +214,8 @@ $app->get('/groups/{id}/details', \Group\controllers\GroupController::class . ':
 $app->get('/groups/{id}/indexing', \Group\controllers\GroupController::class . ':getIndexingInformationsById');
 $app->put('/groups/{id}/indexing', \Group\controllers\GroupController::class . ':updateIndexingInformations');
 $app->put('/groups/{id}/reassign/{newGroupId}', \Group\controllers\GroupController::class . ':reassignUsers');
-$app->post('/groups/{id}/add/{privilegeId}', \Group\controllers\ServiceController::class . ':addPrivilege');
-$app->delete('/groups/{id}/remove/{privilegeId}', \Group\controllers\ServiceController::class . ':removePrivilege');
+$app->post('/groups/{id}/privileges/{privilegeId}', \Group\controllers\ServiceController::class . ':addPrivilege');
+$app->delete('/groups/{id}/privileges/{privilegeId}', \Group\controllers\ServiceController::class . ':removePrivilege');
 
 //Histories
 $app->get('/histories', \History\controllers\HistoryController::class . ':get');
diff --git a/src/frontend/app/viewer/document-viewer.component.ts b/src/frontend/app/viewer/document-viewer.component.ts
index a939aeb960a..945ba955b31 100644
--- a/src/frontend/app/viewer/document-viewer.component.ts
+++ b/src/frontend/app/viewer/document-viewer.component.ts
@@ -115,24 +115,31 @@ export class DocumentViewerComponent implements OnInit {
     }
 
     loadTmpFile(filenameOnTmp: string) {
-        this.http.get(`../../rest/convertedFile/${filenameOnTmp}`, { params: { convert: 'true'}}).pipe(
-            tap((data: any) => {
-                this.file = {
-                    name: filenameOnTmp,
-                    format: data.extension,
-                    type: data.type,
-                    content: data.encodedResource,
-                    src: this.base64ToArrayBuffer(data.encodedConvertedResource)
-                };
-                this.editMode = true;
-                this.noConvertedFound = false;
-                this.loading = false;
-            }),
-            catchError((err: any) => {
+        this.loading = true;
+        this.loadingInfo.mode = 'determinate';
+
+        this.requestWithLoader(`../../rest/convertedFile/${filenameOnTmp}?convert=true`).subscribe(
+            (data: any) => {
+                if (data.encodedResource) {
+                    this.file = {
+                        name: filenameOnTmp,
+                        format: data.extension,
+                        type: data.type,
+                        content: data.encodedResource,
+                        src: this.base64ToArrayBuffer(data.encodedConvertedResource)
+                    };
+                    this.editMode = true;
+                    this.noConvertedFound = false;
+                    this.loading = false;
+                }
+            },
+            (err: any) => {
+                this.noConvertedFound = true;
                 this.notify.handleErrors(err);
+                this.loading = false;
                 return of(false);
-            })
-        ).subscribe();
+            }
+        );
     }
 
     uploadTrigger(fileInput: any) {
@@ -278,6 +285,32 @@ export class DocumentViewerComponent implements OnInit {
         );
     }
 
+    requestWithLoader(url: string) {
+        this.loadingInfo.percent = 0;
+
+        return this.http.get<any>(url, {
+            reportProgress: true,
+            observe: 'events'
+        }).pipe(map((event) => {
+            switch (event.type) {
+                case HttpEventType.DownloadProgress:
+
+                    const downloadProgress = Math.round(100 * event.loaded / event.total);
+                    this.loadingInfo.percent = downloadProgress;
+                    this.loadingInfo.mode = 'determinate';
+                    this.loadingInfo.message = ``;
+
+                    return { status: 'progressDownload', message: downloadProgress };
+
+                case HttpEventType.Response:
+                    return event.body;
+                default:
+                    return `Unhandled event: ${event.type}`;
+            }
+        })
+        );
+    }
+
 
     onError(error: any) {
         console.log(error);
-- 
GitLab