aboutsummaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authormarty hiatt <martianhiatus [a t] riseup [d o t] net>2022-11-12 15:38:21 +0100
committermarty hiatt <martianhiatus [a t] riseup [d o t] net>2022-11-12 15:38:21 +0100
commit79158bd0fd0c67aab90f8ae52d4f90b4b167be22 (patch)
tree8db82caa9f44dbc18c326b092fd1a3f42f1bbd2f /lisp
parentac16395a753aeb9d2fd94ef22ee531227214b3a9 (diff)
wholly remove parent-toot; use base-toot/-id only
the confusion came from the three different types of statuses we often encounter: - toot - boost/fave - notification (of boost/fave/mention) in notifications, we can't just use -tl--toot-id. it will return the notif's id, not the base toot's. so we do still fetch base-toot JSON (formerly 'parent-toot prop), and get base-toot-id from there, else from toot JSON.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/mastodon-notifications.el6
-rw-r--r--lisp/mastodon-tl.el46
-rw-r--r--lisp/mastodon-toot.el13
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'."