aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/mastodon-notifications.el6
-rw-r--r--lisp/mastodon-tl.el45
-rw-r--r--lisp/mastodon-toot.el13
3 files changed, 27 insertions, 37 deletions
diff --git a/lisp/mastodon-notifications.el b/lisp/mastodon-notifications.el
index 1ecdbfb..7c5d40b 100644
--- a/lisp/mastodon-notifications.el
+++ b/lisp/mastodon-notifications.el
@@ -221,7 +221,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.
@@ -236,10 +236,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 b352c6d..ebf3570 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -953,7 +953,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.
@@ -965,9 +965,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."
@@ -978,13 +979,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)))))
@@ -1283,20 +1287,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)
@@ -1315,13 +1310,9 @@ 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)))
(type (mastodon-tl--field 'type (mastodon-tl--property 'toot-json))))
(if (or (string= type "follow_request")
(string= type "follow")) ; no can thread these
diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index 95eac31..0571c3b 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -820,16 +820,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)))))
@@ -857,7 +856,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'."