]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6482 @7:00
authorsoufiane <soufiane@cubedesigners.com>
Wed, 27 Dec 2023 17:17:30 +0000 (18:17 +0100)
committersoufiane <soufiane@cubedesigners.com>
Wed, 27 Dec 2023 17:17:30 +0000 (18:17 +0100)
app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php
resources/linkeditor/js/linkeditor.js

index fa2566babf625e8ea30239fa68a94d0b218460ce..a5fa018dcb7c1decfc7ed16f8b6d1abc01b940db 100644 (file)
@@ -301,72 +301,58 @@ trait LinksOperation
         $fluidbookId = $request->id;
         $token = $request->token;
         $userId = backpack_user()->id;
-        $counter = $request->counter;
-        $tabClosed = $request->tabClosed;
-
-        $connexionMultipleExist = cache()->get('connexion_multiple'.$fluidbookId);
-
-        /*cache()->forget('connexion'.$fluidbookId);
-        cache()->forget('connexion_multiple'.$fluidbookId);*/
-
-        if(!$connexionMultipleExist) {
-            cache(['connexion_multiple' . $fluidbookId => 0]);
-        }
-
-        cache()->increment('connexion_multiple'.$fluidbookId,$counter);
-
-        if(intval($tabClosed) > 0) {
-            cache()->decrement('connexion_multiple'.$fluidbookId,1);
+        $unload = $request->unload;
+        /*cache()->forget('queue_editor'.$fluidbookId);
+        /* Reset
+         *
+         */
+
+        if(!cache()->has('queue_editor'.$fluidbookId)) {
+            $entries = [$token => 'active'];
+            cache(['queue_editor'.$fluidbookId => $entries]);
+        } else {
+            $queueEditor = cache()->get('queue_editor'.$fluidbookId);
+            if(!array_key_exists($token, $queueEditor)) {
+                $queueEditor[$token] = 'is connected';
+            } elseif(intval($unload) === 1) {
+                unset($queueEditor[$token]);
+            }
+            cache(['queue_editor'.$fluidbookId => $queueEditor]);
         }
 
         $connexionExist = cache()->get('connexion'.$fluidbookId);
+        $queueEditor = cache()->get('queue_editor'.$fluidbookId);
 
-        // réinitialiser la connexion courante quand on clique sur "éjecter l'utilisateur"
+        $firstKey = array_key_first($queueEditor);
+        $queueEditor[$firstKey] = 'active';
+        cache(['queue_editor'.$fluidbookId => $queueEditor]);
+        $queueEditor = cache()->get('queue_editor'.$fluidbookId);
+
+        // réinitialiser la connexion courante quand on clique sur "déconnecter l'utilisateur"
         if($request->clear) {
             cache()->forget('connexion'.$fluidbookId);
         }
 
-        if($connexionMultipleExist == 1) {
+        if(sizeof(cache()->get('queue_editor'.$fluidbookId)) === 1) {
             cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]);
-            return json_encode(["status"=>"available",$connexionExist]);
+            return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",$connexionExist]);
         }
 
         if($connexionExist && $fluidbookId === $connexionExist['f_id']) {
             $user = User::withoutGlobalScopes()->find($connexionExist['id']);
             $user = $user->firstname.' '.$user->lastname;
 
-            if($token !== $connexionExist['token']) {
-                return json_encode(["tabClosed"=>$tabClosed,"compteur"=>$connexionMultipleExist,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]);
+            if(sizeof($queueEditor) > 1) {
+                return json_encode(["queueEditor"=>$queueEditor,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]);
             } else {
-                return json_encode(["status"=>"available",$connexionExist]);
+                return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",$connexionExist]);
             }
         } else {
             cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]);
-            return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"available",cache()->get('connexion'.$fluidbookId)]);
-        }
-    }
-
-    /*public function f_($a) {
-        $data = cache()->get('c_') ?? [];
-        $f_id = $a['f_id'];
-        $user_id = $a['id'];
-        $user_token = $a['token'];
-
-        if(array_key_exists($f_id, $data)) {
-            $test = array_filter($data[$f_id], function($n) use($user_token) { return $n['token'] === $user_token; });
-            if($test) {
-                return "user exist";
-            }
+            return json_encode(["queueEditor"=>$queueEditor,"status"=>"available",cache()->get('connexion'.$fluidbookId)]);
         }
-
-        $data[$f_id][] = $a;
-        cache(['c_' => $data]);
     }
 
-    public function get_f($f_id) {
-        return cache()->get('c_')[$f_id];
-    }*/
-
     protected function fixDriftedLinks($fluidbook_id)
     {
         if (!FluidbookPublication::hasPermission($fluidbook_id)) {
index 9eb45bd99e6ae8059e9b19cd5d2dd2e43dde7a4e..060add822c624697bd730536a2b8c3616ce5c89b 100644 (file)
@@ -577,30 +577,17 @@ $(function () {
     let interval = null
     let token = $("[data-token]").data("token")
 
-    let counter = 0;
-    let pageIsLoaded = sessionStorage.getItem('page_loaded');
-
-    if (!pageIsLoaded || !counter) {
-        counter = 0
-        sessionStorage.setItem('page_loaded', true);
-    }
-
-    if(pageIsLoaded) {
-        localStorage.setItem('tabClosed','0')
-    }
-
-    counter++
-
-    console.log(counter)
     function intervalConnection(data = {}) {
-        let tabClosed = localStorage.getItem('tabClosed')
+        let unload = localStorage.getItem('unload')
+        let token_ = localStorage.getItem('token')
+
         $.ajax({
             method: "POST",
             url: '/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/edit/links',
-            data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token, counter: counter, tabClosed: tabClosed}
+            data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token_ ?? token, unload: unload}
         }).done(function (msg) {
             let response = JSON.parse(msg)
-
+            console.log(response.queueEditor)
             if (response.status === "unavailable" ) {
                 if ($("#popup-overlay").find('.popup').length === 0) {
                     $("#popup-overlay").addClass("show")
@@ -628,8 +615,8 @@ $(function () {
                     return true;
                 };
             }
-            counter = 0
-            localStorage.setItem('tabClosed', '0');
+            localStorage.removeItem('unload');
+            localStorage.removeItem('token');
             setTimeout(function () { intervalConnection(); }, 1000)
         });
     }
@@ -644,7 +631,9 @@ $(function () {
     //
     $(window).on("unload",function(){
         clearTimeout(interval)
-        localStorage.setItem('tabClosed', '1');
+        console.log("token",token)
+        localStorage.setItem('token', token)
+        localStorage.setItem('unload', '1');
     })
 });