diff options
| -rw-r--r-- | lisp/mastodon-notifications.el | 6 | ||||
| -rw-r--r-- | lisp/mastodon-tl.el | 46 | ||||
| -rw-r--r-- | lisp/mastodon-toot.el | 13 | 
3 files changed, 28 insertions, 37 deletions
diff --git a/lisp/mastodon-notifications.el b/lisp/mastodon-notifications.el index c0ca684..4e8fbdb 100644 --- a/lisp/mastodon-notifications.el +++ b/lisp/mastodon-notifications.el @@ -223,7 +223,7 @@ Status notifications are given when  (defun mastodon-notifications--insert-status (toot body                                                     author-byline action-byline id -                                                   &optional parent-toot) +                                                   &optional base-toot)    "Display the content and byline of timeline element TOOT.  BODY will form the section of the toot above the byline. @@ -238,10 +238,10 @@ takes a single function. By default it is  `mastodon-tl--byline-boosted'.  ID is the notification's own id, which is attached as a property. -If the status is a favourite or a boost, PARENT-TOOT is the JSON +If the status is a favourite or a boost, BASE-TOOT is the JSON  of the toot responded to."    (when toot ; handle rare blank notif server bug -    (mastodon-tl--insert-status toot body author-byline action-byline id parent-toot))) +    (mastodon-tl--insert-status toot body author-byline action-byline id base-toot)))  (defun mastodon-notifications--by-type (note)    "Filters NOTE for those listed in `mastodon-notifications--types-alist'." diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el index 3f5dd04..bd2f9d6 100644 --- a/lisp/mastodon-tl.el +++ b/lisp/mastodon-tl.el @@ -938,7 +938,7 @@ Runs `mastodon-tl--render-text' and fetches poll or media."       (mastodon-tl--media toot))))  (defun mastodon-tl--insert-status (toot body author-byline action-byline -                                        &optional id parent-toot detailed-p) +                                        &optional id base-toot detailed-p)    "Display the content and byline of timeline element TOOT.  BODY will form the section of the toot above the byline. @@ -950,9 +950,10 @@ such as boosting favouriting and following to the byline. It also  takes a single function. By default it is  `mastodon-tl--byline-boosted'. -ID is that of the toot, which is attached as a property if it is -a notification. If the status is a favourite or a boost, -PARENT-TOOT is the JSON of the toot responded to. +ID is that of the status if it is a notification, which is +attached as a `toot-id' property if provided. If the +status is a favourite or boost notification, BASE-TOOT is the +JSON of the toot responded to.  DETAILED-P means display more detailed info. For now  this just means displaying toot client." @@ -963,13 +964,16 @@ this just means displaying toot client."                body                " \n"                (mastodon-tl--byline toot author-byline action-byline detailed-p)) -      'toot-id      (or id ; for notifications -                        (alist-get 'id toot)) +      'toot-id      (or id ; notification's own id +                        (alist-get 'id toot)) ; toot id        'base-toot-id (mastodon-tl--toot-id -                     ;; if a favourite/boost notif, get ID of toot responded to: -                     (or parent-toot toot)) +                     ;; if status is a notif, get id from base-toot +                     ;; (-tl--toot-id toot) will not work here: +                     (or base-toot +                         ;; else normal toot with reblog check: +                         toot))        'toot-json    toot -      'parent-toot parent-toot) +      'base-toot    base-toot)       "\n")      (when mastodon-tl--display-media-p        (mastodon-media--inline-images start-pos (point))))) @@ -1268,20 +1272,11 @@ webapp"          (reblog (alist-get 'reblog json)))      (if reblog (alist-get 'id reblog) id))) -(defun mastodon-tl--single-toot (&optional id) +(defun mastodon-tl--single-toot (id)    "View toot at point in separate buffer.  ID is that of the toot to view."    (interactive) -  (let* ((id -          (or id -              (if (equal (mastodon-tl--get-endpoint) "notifications") -                  ;; for boosts/faves: -                  (if (mastodon-tl--property 'parent-toot) -                      (mastodon-tl--as-string (mastodon-tl--toot-id -                                               (mastodon-tl--property 'parent-toot))) -                    (mastodon-tl--property 'base-toot-id)) -                (mastodon-tl--property 'base-toot-id)))) -         (buffer (format "*mastodon-toot-%s*" id)) +  (let* ((buffer (format "*mastodon-toot-%s*" id))           (toot (mastodon-http--get-json                  (mastodon-http--api (concat "statuses/" id)))))      (if (equal (caar toot) 'error) @@ -1300,13 +1295,10 @@ ID is that of the toot to view."    (interactive)    (let* ((id            (or id -              (if (equal (mastodon-tl--get-endpoint) "notifications") -                  ;; for boosts/faves: -                  (if (mastodon-tl--property 'parent-toot) -                      (mastodon-tl--as-string (mastodon-tl--toot-id -                                               (mastodon-tl--property 'parent-toot))) -                    (mastodon-tl--property 'base-toot-id)) -                (mastodon-tl--property 'base-toot-id)))) +              ;; avoid -tl--property here, we don't want to try next toot: +              ;; this requires that 'base-toot-id always be set: +              (get-text-property (point) 'base-toot-id) +              ))           (url (mastodon-http--api (format "statuses/%s/context" id)))           (buffer (format "*mastodon-thread-%s*" id))           (toot diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el index e203cda..65649b8 100644 --- a/lisp/mastodon-toot.el +++ b/lisp/mastodon-toot.el @@ -816,16 +816,15 @@ Customize `mastodon-toot-display-orig-in-reply-buffer' to display  text of the toot being replied to in the compose buffer."    (interactive)    (let* ((toot (mastodon-tl--property 'toot-json)) -         ;; NB: we cannot use mastodon-tl--property for 'parent-toot +         ;; NB: we cannot use mastodon-tl--property for 'base-toot           ;; because if it doesn't have one, it is fetched from next toot!           ;; we also cannot use --field because we need to get a different property first -         (parent (get-text-property (point) 'parent-toot)) ; for new notifs handling -         (id (mastodon-tl--as-string -              (mastodon-tl--field 'id (or parent toot)))) +         (base-toot (get-text-property (point) 'base-toot)) ; for new notifs handling +         (id (mastodon-tl--as-string (mastodon-tl--field 'id (or base-toot toot))))           (account (mastodon-tl--field 'account toot))           (user (alist-get 'acct account)) -         (mentions (mastodon-toot--mentions (or parent toot))) -         (boosted (mastodon-tl--field 'reblog (or parent toot))) +         (mentions (mastodon-toot--mentions (or base-toot toot))) +         (boosted (mastodon-tl--field 'reblog (or base-toot toot)))           (booster (when boosted                      (alist-get 'acct                                 (alist-get 'account toot))))) @@ -853,7 +852,7 @@ text of the toot being replied to in the compose buffer."                           ;; user in mentions already:                           mentions)))                     id -                   (or parent toot)))) +                   (or base-toot toot))))  (defun mastodon-toot--toggle-warning ()    "Toggle `mastodon-toot--content-warning'."  | 
