Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2022-09-27 20:15:51 +0300
committerwurstsalat <mailtrash@posteo.de>2022-09-27 20:15:53 +0300
commit0baa4d801382251c9fe61ae5a38ffd5c4ed35c10 (patch)
tree59184ccb244367ce125c7c20c3e6a8d0ba78bf32
parent7af1dc666fe673723ac5ed5962ae8dbf7eed72b0 (diff)
cfix: Preview: Don't allow download if in progress
-rw-r--r--gajim/common/preview.py16
-rw-r--r--gajim/gtk/builder.pyi4
-rw-r--r--gajim/gtk/preview.py6
3 files changed, 18 insertions, 8 deletions
diff --git a/gajim/common/preview.py b/gajim/common/preview.py
index 8e7b7a8bf..8f281cd9c 100644
--- a/gajim/common/preview.py
+++ b/gajim/common/preview.py
@@ -80,6 +80,7 @@ class Preview:
self.mime_type: str = ''
self.file_size: int = 0
self._received_size: int = 0
+ self.download_in_progress = False
self.info_message: Optional[str] = None
@@ -170,6 +171,7 @@ class Preview:
self._widget.update(self, data)
def update_progress(self, size: int, message: Soup.Message) -> None:
+ self.download_in_progress = True
self._soup_message = message
self._received_size += size
if self.file_size == 0 or self._received_size == 0:
@@ -392,7 +394,13 @@ class PreviewManager:
def download_content(self,
preview: Preview,
- force: bool = False) -> None:
+ force: bool = False
+ ) -> None:
+
+ if preview.download_in_progress:
+ log.info('Download already in progress')
+ return
+
preview.reset_received_size()
if preview.account is None:
# History Window can be opened without account context
@@ -469,7 +477,11 @@ class PreviewManager:
def _on_finished(self,
_session: Soup.Session,
message: Soup.Message,
- preview: Preview) -> None:
+ preview: Preview
+ ) -> None:
+
+ preview.download_in_progress = False
+
if message.status_code != Soup.Status.OK:
log.warning('Download failed: %s', preview.request_uri)
status_code = Soup.Status.get_phrase(message.status_code)
diff --git a/gajim/gtk/builder.pyi b/gajim/gtk/builder.pyi
index d020f3237..36690d1f2 100644
--- a/gajim/gtk/builder.pyi
+++ b/gajim/gtk/builder.pyi
@@ -678,9 +678,9 @@ class PreviewBuilder(Builder):
image_button: Gtk.Button
link_button: Gtk.LinkButton
button_box: Gtk.Box
- download_button: Gtk.Button
save_as_button: Gtk.Button
open_folder_button: Gtk.Button
+ download_button: Gtk.Button
file_name: Gtk.Label
file_size: Gtk.Label
info_message: Gtk.Label
@@ -793,6 +793,8 @@ class ServerInfoBuilder(Builder):
dns: Gtk.Label
ip_port: Gtk.Label
websocket: Gtk.Label
+ tls_version: Gtk.Label
+ cipher_suite: Gtk.Label
cert_scrolled: Gtk.ScrolledWindow
features: Gtk.Box
features_listbox: Gtk.ListBox
diff --git a/gajim/gtk/preview.py b/gajim/gtk/preview.py
index b6bafd10c..32ba8dcba 100644
--- a/gajim/gtk/preview.py
+++ b/gajim/gtk/preview.py
@@ -62,7 +62,6 @@ class PreviewWidget(Gtk.Box):
self.account = account
self._preview: Optional[Preview] = None
- self._in_progress = False
self._destroyed = False
if app.settings.get('use_kib_mib'):
@@ -98,8 +97,6 @@ class PreviewWidget(Gtk.Box):
@ensure_not_destroyed
def update_progress(self, _preview: Preview, progress: float) -> None:
- self._in_progress = True
-
self._ui.download_button.hide()
self._ui.progress_box.show()
@@ -112,7 +109,6 @@ class PreviewWidget(Gtk.Box):
def update(self, preview: Preview, data: Optional[GdkPixbufType]) -> None:
self._preview = preview
- self._in_progress = False
self._ui.progress_box.hide()
self._ui.info_message.hide()
@@ -232,7 +228,7 @@ class PreviewWidget(Gtk.Box):
if self._preview.orig_exists:
menu.download.hide()
else:
- if self._in_progress:
+ if self._preview.download_in_progress:
menu.download.hide()
menu.open.hide()
menu.save_as.hide()