aboutsummaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authormarty hiatt <martianhiatus [a t] riseup [d o t] net>2023-03-22 16:40:45 +0100
committermarty hiatt <martianhiatus [a t] riseup [d o t] net>2023-03-22 16:40:45 +0100
commitfc37e87072e268ee7c330b133ad796a7fd1887c5 (patch)
tree41683998f7fa95ad38bb93ece8c5c2a9ed75a563 /lisp
parentcf6b1c9f32bdabf2005585bde5369b322a9f0f5f (diff)
have a crack at updating byline stats on fave/boost
Diffstat (limited to 'lisp')
-rw-r--r--lisp/mastodon-toot.el39
1 files changed, 39 insertions, 0 deletions
diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index c6f87d3..0fc7a1e 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -374,6 +374,45 @@ TYPE is a symbol, either `favourite' or `boost.'"
byline-region remove))
(message (format "%s #%s" (if boost-p msg action) id))))))
(message (format "Nothing to %s here?!?" action-string)))))
+ (mastodon-toot--update-stats-on-action type remove)
+ (mastodon-toot--action-success
+ (if boost-p
+ (mastodon-tl--symbol 'boost)
+ (mastodon-tl--symbol 'favourite))
+ byline-region remove))
+ (message (format "%s #%s" (if boost-p msg action) id))))))
+ (message (format "Nothing to %s here?!?" action-string))))))
+
+(defun mastodon-toot--inc-or-dec (count subtract)
+ "If SUBTRACT, decrement COUNT, else increment."
+ (if subtract
+ (1- count)
+ (1+ count)))
+
+(defun mastodon-toot--update-stats-on-action (action &optional subtract)
+ "Increment the toot stats display upon ACTION.
+ACTION is a symbol, either `favourite' or `boost'.
+SUBTRACT means we are un-favouriting or unboosting, so we decrement."
+ (let* ((count-prop (if (eq action 'favourite)
+ 'favourites-count
+ 'boosts-count))
+ (count-prop-range (mastodon-tl--find-property-range count-prop (point)))
+ (count (get-text-property (car count-prop-range) count-prop))
+ (inhibit-read-only 1))
+ ;; TODO another way to implement this would be to async fetch counts again
+ ;; and re-display from count-properties
+ (add-text-properties
+ (car count-prop-range)
+ (cdr count-prop-range)
+ (list 'display ; update the display prop:
+ (concat
+ (number-to-string
+ (mastodon-toot--inc-or-dec count subtract))
+ " ")
+ ;; update the count prop
+ ;; we rely on this for any subsequent actions:
+ count-prop
+ (mastodon-toot--inc-or-dec count subtract)))))
(defun mastodon-toot--toggle-boost ()
"Boost/unboost toot at `point'."