diff options
author | marty hiatt <martianhiatus [a t] riseup [d o t] net> | 2023-01-15 17:20:58 +0100 |
---|---|---|
committer | marty hiatt <martianhiatus [a t] riseup [d o t] net> | 2023-01-15 17:27:18 +0100 |
commit | 842252fbf07e4589a7372a1bbd8e8ca823bb2569 (patch) | |
tree | ec4c74e228804ef7180ee32eed795b6d5e3bc81b /lisp/mastodon-tl.el | |
parent | 035c07af4ad93ad1ed3e30d1dc8bb293f375837a (diff) |
handle hiding replies when loading more toots into a tl
we add a boolean 'hide-replies' element to the tl--buffer-spec plist.
then, in --timeline, we check that boolean and hide replies if so.
we add new arg to init in order to hand on and store the prefix arg as a boolean.
Diffstat (limited to 'lisp/mastodon-tl.el')
-rw-r--r-- | lisp/mastodon-tl.el | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el index 99eda44..1528dc6 100644 --- a/lisp/mastodon-tl.el +++ b/lisp/mastodon-tl.el @@ -406,7 +406,8 @@ Used on initializing a timeline or thread." (message "Loading federated timeline...") (mastodon-tl--init "federated" "timelines/public" 'mastodon-tl--timeline nil - `(("limit" . ,mastodon-tl--timeline-posts-count)))) + `(("limit" . ,mastodon-tl--timeline-posts-count)) + (when current-prefix-arg t))) (defun mastodon-tl--get-home-timeline () "Opens home timeline." @@ -414,7 +415,8 @@ Used on initializing a timeline or thread." (message "Loading home timeline...") (mastodon-tl--init "home" "timelines/home" 'mastodon-tl--timeline nil - `(("limit" . ,mastodon-tl--timeline-posts-count)))) + `(("limit" . ,mastodon-tl--timeline-posts-count)) + (when current-prefix-arg t))) (defun mastodon-tl--get-local-timeline () "Opens local timeline." @@ -423,7 +425,8 @@ Used on initializing a timeline or thread." (mastodon-tl--init "local" "timelines/public" 'mastodon-tl--timeline nil `(("local" . "true") - ("limit" . ,mastodon-tl--timeline-posts-count)))) + ("limit" . ,mastodon-tl--timeline-posts-count)) + (when current-prefix-arg t))) (defun mastodon-tl--get-tag-timeline () "Prompt for tag and opens its timeline." @@ -1367,11 +1370,14 @@ this just means displaying toot client." (defun mastodon-tl--timeline (toots) "Display each toot in TOOTS. - - This function removes replies if user required." - (mapc 'mastodon-tl--toot (if (mastodon-tl--hide-replies-p current-prefix-arg) - (cl-remove-if-not #'mastodon-tl--is-reply toots) - toots)) +This function removes replies if user required." + (mapc 'mastodon-tl--toot + (if (or ; we were called via --more*: + (mastodon-tl--get-buffer-property 'hide-replies nil :no-error) + ;; loading a tl with a prefix arg: + (mastodon-tl--hide-replies-p current-prefix-arg)) + (cl-remove-if-not #'mastodon-tl--is-reply toots) + toots)) (goto-char (point-min))) (defun mastodon-tl--get-update-function (&optional buffer) @@ -1410,7 +1416,8 @@ If NO-ERROR is non-nil, do not error when property is empty." (or buffer (current-buffer))))))) (defun mastodon-tl--set-buffer-spec (buffer endpoint update-function - &optional link-header update-params) + &optional link-header update-params + hide-replies) "Set `mastodon-tl--buffer-spec' for the current buffer. BUFFER is buffer name, ENDPOINT is buffer's enpoint, UPDATE-FUNCTION is its update function. @@ -1423,7 +1430,8 @@ UPDATE-PARAMS is any http parameters needed for the update function." endpoint ,endpoint update-function ,update-function link-header ,link-header - update-params ,update-params))) + update-params ,update-params + hide-replies ,hide-replies))) (defun mastodon-tl--get-buffer-type () "Return a symbol descriptive of current mastodon buffer type. @@ -2946,7 +2954,8 @@ This location is defined by a non-nil value of ;; pleroma uses "link", so case-insensitive match required: (split-string (alist-get "Link" headers nil nil 'cl-equalp) ", "))) -(defun mastodon-tl--init (buffer-name endpoint update-function &optional headers params) +(defun mastodon-tl--init (buffer-name endpoint update-function + &optional headers params hide-replies) "Initialize BUFFER-NAME with timeline targeted by ENDPOINT asynchronously. UPDATE-FUNCTION is used to recieve more toots. HEADERS means to also collect the response headers. Used for paginating @@ -2955,13 +2964,15 @@ PARAMS is any parameters to send with the request." (let ((url (mastodon-http--api endpoint)) (buffer (concat "*mastodon-" buffer-name "*"))) (if headers - (mastodon-http--get-response-async - url params 'mastodon-tl--init* buffer endpoint update-function headers params) - (mastodon-http--get-json-async - url params 'mastodon-tl--init* buffer endpoint update-function nil params)))) + (mastodon-http--get-response-async url params + 'mastodon-tl--init* buffer endpoint update-function + headers params hide-replies) + (mastodon-http--get-json-async url params + 'mastodon-tl--init* buffer endpoint update-function nil + params hide-replies)))) (defun mastodon-tl--init* (response buffer endpoint update-function - &optional headers update-params) + &optional headers update-params hide-replies) "Initialize BUFFER with timeline targeted by ENDPOINT. UPDATE-FUNCTION is used to recieve more toots. RESPONSE is the data returned from the server by @@ -2982,7 +2993,8 @@ JSON and http headers, without it just the JSON." endpoint update-function link-header - update-params) + update-params + hide-replies) (setq ;; Initialize with a minimal interval; we re-scan at least once ;; every 5 minutes to catch any timestamps we may have missed @@ -2995,7 +3007,8 @@ JSON and http headers, without it just the JSON." endpoint update-function link-header - update-params) + update-params + hide-replies) (setq mastodon-tl--timestamp-update-timer (when mastodon-tl--enable-relative-timestamps (run-at-time (time-to-seconds |