]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6482 correctif connexion multiple
authorsoufiane <soufiane@cubedesigners.com>
Wed, 20 Dec 2023 14:00:44 +0000 (15:00 +0100)
committersoufiane <soufiane@cubedesigners.com>
Wed, 20 Dec 2023 14:00:44 +0000 (15:00 +0100)
app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php
resources/linkeditor/js/linkeditor.js

index d409edb6eab63bfade1a5d1deb260b42ee8d2c1b..6826429baac59fa0e702e924325b9841860945f4 100644 (file)
@@ -301,43 +301,54 @@ trait LinksOperation
         $fluidbookId = $request->id;
         $token = $request->token;
         $userId = backpack_user()->id;
+        $compteur = $request->compteur;
 
-        if(cache()->get('connexion_multiple'.$fluidbookId) !== null) {
-            if(cache()->has('connexion_multiple'.$fluidbookId) && intval($request->tabOpen) > 0) {
-                cache()->increment('connexion_multiple'.$fluidbookId, 1);
-            }elseif(cache()->has('connexion_multiple'.$fluidbookId) && intval($request->tabClosed) > 0) {
-                cache()->decrement('connexion_multiple'.$fluidbookId, 1);
-            }
-        }else {
-            cache(['connexion_multiple'.$fluidbookId => intval($request->tabOpen)]);
-        }
+        cache(['connexion_multiple'.$fluidbookId => intval($compteur)]);
+
+        $connexionExist = cache()->get('connexion'.$fluidbookId);
+        $connexionMultipleExist = cache()->get('connexion_multiple'.$fluidbookId);
 
         // réinitialiser la connexion courante quand on clique sur "éjecter l'utilisateur"
         if($request->clear) {
             cache()->forget('connexion'.$fluidbookId);
         }
 
-        $connexionExist = cache()->get('connexion'.$fluidbookId);
-        $connexionMultipleExist = cache()->get('connexion_multiple'.$fluidbookId);
-
         if($connexionExist && $fluidbookId === $connexionExist['f_id']) {
             $user = User::withoutGlobalScopes()->find($connexionExist['id']);
             $user = $user->firstname.' '.$user->lastname;
 
-            if($userId != $connexionExist['id'] || ($connexionMultipleExist > 1 && $token !== $connexionExist['token'])) {
-                return json_encode(["status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]);
+            if($userId != $connexionExist['id'] || ($token !== $connexionExist['token'] && intval($connexionMultipleExist) > 1) ) {
+                return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]);
             } else {
-                return json_encode(["status"=>"available",$connexionExist]);
+                return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"available",$connexionExist]);
             }
         } else {
-            if($token === null) {
-                $token = Str::random(10);
-            }
             cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]);
-            return json_encode(["status"=>"available",cache()->get('connexion'.$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";
+            }
+        }
+
+        $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 be2ce4284c829654bb271dd437dfbcb0f83f9009..e6e9161caeed3876dcfcc39efc0924711fcd1a9c 100644 (file)
@@ -579,18 +579,42 @@ $(function () {
     let tabClosed = 0
     let tabOpen = 1
     let interval = null
+    let token = $("[data-token]").data("token")
+
+    // Vérifie si la variable "compteur" existe dans localStorage
+    let compteur = localStorage.getItem('compteur');
+
+
+    // Vérifie si la page a déjà été chargée dans cet onglet
+    let pageDejaChargee = sessionStorage.getItem('page_chargee');
+
+    // Si la page n'a pas encore été chargée, ou si "compteur" n'existe pas, initialise le compteur à 0
+    if (!pageDejaChargee || !compteur) {
+        compteur = 0;
+
+        // Indique que la page a été chargée dans cet onglet
+        sessionStorage.setItem('page_chargee', true);
+    }
+
+    // Incrémente le compteur à chaque ouverture d'un nouvel onglet
+    compteur++;
+
+    // Stocke la nouvelle valeur du compteur dans localStorage
+    localStorage.setItem('compteur', compteur.toString());
 
     function intervalConnection(data = {}) {
-        tabClosed = localStorage.getItem("tabClosed")
+        let compteur = localStorage.getItem('compteur');
+        if (!sessionStorage.getItem('token')) {
+            sessionStorage.setItem('token', token);
+        }
         $.ajax({
             method: "POST",
             url: '/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/edit/links',
-            data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: $("[data-token]").data("token"), tabClosed: tabClosed, tabOpen: tabOpen}
+            data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token, compteur: compteur}
         }).done(function (msg) {
-            console.log("msg",msg)
             let response = JSON.parse(msg)
 
-            if (response.status === "unavailable") {
+            if (response.status === "unavailable" ) {
                 if ($("#popup-overlay").find('.popup').length === 0) {
                     $("#popup-overlay").addClass("show")
 
@@ -618,9 +642,9 @@ $(function () {
                 };
             }
 
-            tabClosed = 0
+            /*tabClosed = 0
             tabOpen = 0
-            localStorage.setItem("tabClosed","0")
+            localStorage.setItem("tabClosed","0")*/
             setTimeout(function () { intervalConnection(); }, 1000)
         });
     }
@@ -629,15 +653,15 @@ $(function () {
     //
     $("body").on("click", "#connectTo", function(e) {
         e.preventDefault()
-        intervalConnection({id:FLUIDBOOK_DATA.id,token:$("[data-token]").data("token"),clear:true});
+        intervalConnection({id:FLUIDBOOK_DATA.id,token:token,clear:true});
     })
 
     //
     $(window).on("unload",function(){
         clearTimeout(interval)
-        localStorage.setItem('tabClosed', "1")
+        compteur--
+        localStorage.setItem('compteur', compteur.toString());
     })
-
 });
 
 (function (old) {