From ac57117aa7a880286b0c6feb4200f5c5aa7e46c0 Mon Sep 17 00:00:00 2001 From: soufiane Date: Fri, 22 Dec 2023 16:48:45 +0100 Subject: [PATCH] wait #6482 correctif connexion multiple @5:00 --- .../FluidbookPublication/LinksOperation.php | 28 +++++++++++++++---- resources/linkeditor/js/linkeditor.js | 24 ++++++++-------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php index 4437e84f4..fa2566bab 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -302,25 +302,43 @@ trait LinksOperation $token = $request->token; $userId = backpack_user()->id; $counter = $request->counter; + $tabClosed = $request->tabClosed; - cache(['connexion_multiple'.$fluidbookId => intval($counter)]); + $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); + } $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); } + if($connexionMultipleExist == 1) { + cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]); + return json_encode(["status"=>"available",$connexionExist]); + } + if($connexionExist && $fluidbookId === $connexionExist['f_id']) { $user = User::withoutGlobalScopes()->find($connexionExist['id']); $user = $user->firstname.' '.$user->lastname; - if(intval($connexionMultipleExist) > 1 && $token !== $connexionExist['token']) { - return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]); + if($token !== $connexionExist['token']) { + return json_encode(["tabClosed"=>$tabClosed,"compteur"=>$connexionMultipleExist,"status"=>"unavailable","infos_connection"=>array_merge(["user" => $user],$connexionExist)]); } else { - return json_encode(["compteur"=>$connexionMultipleExist,"status"=>"available",$connexionExist]); + return json_encode(["status"=>"available",$connexionExist]); } } else { cache(['connexion'.$fluidbookId => ['id' => $userId, 'token' => $token,'f_id' => $fluidbookId] ]); diff --git a/resources/linkeditor/js/linkeditor.js b/resources/linkeditor/js/linkeditor.js index 62038a8c4..9eb45bd99 100644 --- a/resources/linkeditor/js/linkeditor.js +++ b/resources/linkeditor/js/linkeditor.js @@ -7,8 +7,6 @@ import 'noty/lib/themes/mint.css'; import GrahamScan from "@lucio/graham-scan"; -import Echo from "laravel-echo" - import LinkeditorLinks from './linkeditor.links'; import LinkeditorLoader from './linkeditor.loader'; import LinkeditorResize from './linkeditor.resize'; @@ -579,24 +577,27 @@ $(function () { let interval = null let token = $("[data-token]").data("token") - let counter = parseInt(localStorage.getItem('compteur')) ?? 1; + let counter = 0; let pageIsLoaded = sessionStorage.getItem('page_loaded'); - if (!pageIsLoaded) { - counter = 0; + if (!pageIsLoaded || !counter) { + counter = 0 sessionStorage.setItem('page_loaded', true); } + if(pageIsLoaded) { + localStorage.setItem('tabClosed','0') + } + counter++ - localStorage.setItem('compteur', counter.toString()); + console.log(counter) function intervalConnection(data = {}) { - let counter = localStorage.getItem('compteur'); - console.log(counter) + let tabClosed = localStorage.getItem('tabClosed') $.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} + data: Object.keys(data).length > 0 ? data : {id: FLUIDBOOK_DATA.id, token: token, counter: counter, tabClosed: tabClosed} }).done(function (msg) { let response = JSON.parse(msg) @@ -627,6 +628,8 @@ $(function () { return true; }; } + counter = 0 + localStorage.setItem('tabClosed', '0'); setTimeout(function () { intervalConnection(); }, 1000) }); } @@ -641,8 +644,7 @@ $(function () { // $(window).on("unload",function(){ clearTimeout(interval) - counter-- - localStorage.setItem('compteur', counter.toString()); + localStorage.setItem('tabClosed', '1'); }) }); -- 2.39.5