diff options
author | wurstsalat <mailtrash@posteo.de> | 2022-09-27 20:15:51 +0300 |
---|---|---|
committer | wurstsalat <mailtrash@posteo.de> | 2022-09-27 20:15:53 +0300 |
commit | 0baa4d801382251c9fe61ae5a38ffd5c4ed35c10 (patch) | |
tree | 59184ccb244367ce125c7c20c3e6a8d0ba78bf32 | |
parent | 7af1dc666fe673723ac5ed5962ae8dbf7eed72b0 (diff) |
cfix: Preview: Don't allow download if in progress
-rw-r--r-- | gajim/common/preview.py | 16 | ||||
-rw-r--r-- | gajim/gtk/builder.pyi | 4 | ||||
-rw-r--r-- | gajim/gtk/preview.py | 6 |
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() |