From 5c2aeec8cc01428bbe4349b2808763af4b883917 Mon Sep 17 00:00:00 2001 From: yggverse Date: Mon, 15 Jul 2024 17:23:21 +0300 Subject: [PATCH] fix response expiration event --- src/Entity/Browser/Container/Page.php | 25 ++++++++++++++++++++----- src/Model/Response.php | 6 ------ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/Entity/Browser/Container/Page.php b/src/Entity/Browser/Container/Page.php index a0a67a9f..fe81d6c6 100644 --- a/src/Entity/Browser/Container/Page.php +++ b/src/Entity/Browser/Container/Page.php @@ -105,7 +105,8 @@ class Page public function update( bool $history = true, - int $refresh = 100 + int $refresh = 100, + int $timeout = 5 ): void { // Update history @@ -133,13 +134,17 @@ class Page // Update content by multi-protocol responser $response = new \Yggverse\Yoda\Model\Response( - $this->navbar->request->getValue() + $this->navbar->request->getValue(), + $timeout ); + // Calculate expiration time + $expire = time() + $timeout; + // Listen response \Gtk::timeout_add( $refresh, - function() use ($response) + function() use ($response, $expire) { // Redirect requested if ($location = $response->getRedirect()) @@ -205,8 +210,18 @@ class Page else $this->response->hide(); - // Stop event loop on request expired or completed - if ($response->isExpired() || $response->isCompleted()) + // Stop event loop on request completed + if ($response->isCompleted()) + { + // Hide progressbar + $this->progressbar->hide(); + + // Stop + return false; + } + + // Stop event loop on request expired + if (time() > $expire) { // Hide progressbar $this->progressbar->hide(); diff --git a/src/Model/Response.php b/src/Model/Response.php index 63f5da55..c8741f44 100644 --- a/src/Model/Response.php +++ b/src/Model/Response.php @@ -15,7 +15,6 @@ class Response // Async status private bool $_completed = false; - private bool $_expired = false; // Response private ?string $_title = null; @@ -293,11 +292,6 @@ class Response return $this->_completed; } - public function isExpired(): bool - { - return $this->_expired; - } - public function getTitle(): ?string { return $this->_title;