From 3e239f05c83424252257de0dab1554a2401de529 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 13:07:16 +0100 Subject: [PATCH] =?UTF-8?q?Los=20hilos=20funcionan=20ahora=20como=20en=20M?= =?UTF-8?q?astodon.=20Refactorizaci=C3=B3n=20de=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/blueski.defaults | 2 ++ src/controller/blueski/handler.py | 22 +++++++++++++++++++--- src/controller/buffers/blueski/timeline.py | 13 +++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/blueski.defaults b/src/blueski.defaults index 5c1a148f..b6860f10 100644 --- a/src/blueski.defaults +++ b/src/blueski.defaults @@ -27,6 +27,8 @@ indicate_img = boolean(default=True) [other_buffers] timelines = list(default=list()) +followers_timelines = list(default=list()) +following_timelines = list(default=list()) searches = list(default=list()) muted_buffers = list(default=list()) autoread_buffers = list(default=list(notifications)) diff --git a/src/controller/blueski/handler.py b/src/controller/blueski/handler.py index 219bc767..827491c2 100644 --- a/src/controller/blueski/handler.py +++ b/src/controller/blueski/handler.py @@ -137,6 +137,18 @@ class Handler: kwargs=dict(parent=controller.view.nb, name="direct_messages", session=session) ) + # Timelines container + pub.sendMessage( + "createBuffer", + buffer_type="EmptyBuffer", + session_type="base", + buffer_title=_("Timelines"), + parent_tab=root_position, + start=False, + kwargs=dict(parent=controller.view.nb, name="timelines", account=name) + ) + timelines_position = controller.view.search("timelines", name) + # Saved user timelines try: timelines = session.settings["other_buffers"].get("timelines") @@ -152,7 +164,7 @@ class Handler: buffer_type="UserTimeline", session_type="blueski", buffer_title=title, - parent_tab=root_position, + parent_tab=timelines_position, start=False, kwargs=dict(parent=controller.view.nb, name=f"{handle}-timeline", session=session, actor=actor, handle=handle) ) @@ -454,7 +466,7 @@ class Handler: buffer_type="UserTimeline", session_type="blueski", buffer_title=title, - parent_tab=main_controller.view.search(account_name, account_name), + parent_tab=main_controller.view.search("timelines", account_name), start=True, kwargs=dict(parent=main_controller.view.nb, name=list_name, session=session, actor=actor, handle=handle) ) @@ -465,7 +477,11 @@ class Handler: if isinstance(timelines, str): timelines = [t for t in timelines.split(",") if t] key = handle or actor - if key and key not in timelines: + if key in timelines: + from wxUI import commonMessageDialogs + commonMessageDialogs.timeline_exist() + return + if key: timelines.append(key) session.settings["other_buffers"]["timelines"] = timelines session.settings.write() diff --git a/src/controller/buffers/blueski/timeline.py b/src/controller/buffers/blueski/timeline.py index 63c8fa51..53bae56e 100644 --- a/src/controller/buffers/blueski/timeline.py +++ b/src/controller/buffers/blueski/timeline.py @@ -359,6 +359,19 @@ class UserTimeline(BaseBuffer): return 0 try: + if isinstance(actor, str) and not actor.startswith("did:"): + try: + profile = self.session.get_profile(actor) + if profile: + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + did = g(profile, "did") + if did: + actor = did + except Exception: + pass res = api.app.bsky.feed.get_author_feed({ "actor": actor, "limit": count,