From d87d7ffcb58cbc405eefbc63a1782dd650c28fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Pav=C3=B3n=20Abi=C3=A1n?= Date: Sun, 1 Feb 2026 12:39:50 +0100 Subject: [PATCH] =?UTF-8?q?T=C3=ADtulo=20de=20converrsaciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/blueski/handler.py | 20 +++++++++++++++++--- src/controller/buffers/blueski/base.py | 13 ++++++++----- src/controller/buffers/blueski/timeline.py | 6 ++++++ 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/controller/blueski/handler.py b/src/controller/blueski/handler.py index a821e6a3..ae372d69 100644 --- a/src/controller/blueski/handler.py +++ b/src/controller/blueski/handler.py @@ -290,9 +290,23 @@ class Handler: if not uri: return # Buffer Title - author = getattr(item, "author", None) or (item.get("post", {}).get("author") if isinstance(item, dict) else None) - handle = getattr(author, "handle", "unknown") if author else "unknown" - title = _("Conversation with {0}").format(handle) + handle = None + display_name = None + if hasattr(buffer, "get_selected_item_author_details"): + details = buffer.get_selected_item_author_details() + if details: + handle = details.get("handle") + if not handle: + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + author = g(item, "author") or g(g(item, "post"), "author") + if author: + handle = g(author, "handle") + display_name = g(author, "displayName") or g(author, "display_name") + label = handle or display_name or _("Unknown") + title = _("Conversation with {0}").format(label) from pubsub import pub pub.sendMessage( diff --git a/src/controller/buffers/blueski/base.py b/src/controller/buffers/blueski/base.py index 215deef3..e3fb3e07 100644 --- a/src/controller/buffers/blueski/base.py +++ b/src/controller/buffers/blueski/base.py @@ -10,6 +10,7 @@ from controller.buffers.base import base from controller.blueski import messages as blueski_messages from sessions.blueski import compose from wxUI.buffers.blueski import panels as BlueskiPanels +from wxUI import commonMessageDialogs log = logging.getLogger("controller.buffers.blueski.base") @@ -504,12 +505,10 @@ class BaseBuffer(base.Buffer): import application controller = application.app.controller + details = self.get_selected_item_author_details() handle = "Unknown" - if isinstance(item, dict): - handle = item.get("author", {}).get("handle", "Unknown") - else: - handle = getattr(getattr(item, "author", None), "handle", "Unknown") - + if details: + handle = details.get("handle") or "Unknown" title = _("Conversation: {0}").format(handle) controller.create_buffer( @@ -690,6 +689,10 @@ class BaseBuffer(base.Buffer): def remove_buffer(self, force=False): if self.type in ("conversation", "chat_messages") or self.name.lower().startswith("conversation"): + if not force: + dlg = commonMessageDialogs.remove_buffer() + if dlg != widgetUtils.YES: + return False try: self.session.db.pop(self.name, None) except Exception: diff --git a/src/controller/buffers/blueski/timeline.py b/src/controller/buffers/blueski/timeline.py index 9252f090..32ec1e5e 100644 --- a/src/controller/buffers/blueski/timeline.py +++ b/src/controller/buffers/blueski/timeline.py @@ -368,6 +368,12 @@ class SearchBuffer(BaseBuffer): def remove_buffer(self, force=False): """Search buffers can always be removed.""" + if not force: + from wxUI import commonMessageDialogs + import widgetUtils + dlg = commonMessageDialogs.remove_buffer() + if dlg != widgetUtils.YES: + return False try: self.session.db.pop(self.name, None) except Exception: