aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarty hiatt <martianhiatus [a t] riseup [d o t] net>2023-10-14 19:36:36 +0200
committermarty hiatt <martianhiatus [a t] riseup [d o t] net>2023-10-14 19:36:36 +0200
commitb078849b534ddaaebdaf45ebee89d2fe59f3f696 (patch)
tree27960186a5212c87653e12a7328bcc2799448d32
parent312573f7ef4c0ebca511d2b8e44f50b090d44d37 (diff)
implement link-header pagination for foll-reqs
-rw-r--r--lisp/mastodon-tl.el18
-rw-r--r--lisp/mastodon-views.el3
2 files changed, 13 insertions, 8 deletions
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 02c2dd7..d5d127d 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -2340,12 +2340,13 @@ POS is a number, where point will be placed."
(defun mastodon-tl--use-link-header-p ()
"Return t if we are in a view needing Link header pagination.
-Currently this includes favourites, bookmarks, and profile pages
-when showing followers or accounts followed."
+Currently this includes favourites, bookmarks, follow requests,
+and profile pages when showing followers or accounts followed."
(or (mastodon-tl--buffer-type-eq 'favourites)
(mastodon-tl--buffer-type-eq 'bookmarks)
(mastodon-tl--buffer-type-eq 'profile-followers)
- (mastodon-tl--buffer-type-eq 'profile-following)))
+ (mastodon-tl--buffer-type-eq 'profile-following)
+ (mastodon-tl--buffer-type-eq 'follow-requests)))
(defun mastodon-tl--get-link-header-from-response (headers)
"Get http Link header from list of http HEADERS."
@@ -2363,7 +2364,7 @@ when showing followers or accounts followed."
;; "prev" type!
(let ((link-header (mastodon-tl--link-header)))
(if (> 2 (length link-header))
- (error "No next page")
+ (message "No next page")
(let* ((next (car link-header))
;;(prev (cadr (mastodon-tl--link-header)))
(url (mastodon-tl--build-link-header-url next)))
@@ -2656,7 +2657,7 @@ JSON and http headers, without it just the JSON."
(mastodon-tl--do-init json update-function))))))
(defun mastodon-tl--init-sync (buffer-name endpoint update-function
- &optional note-type params)
+ &optional note-type params headers)
"Initialize BUFFER-NAME with timeline targeted by ENDPOINT.
UPDATE-FUNCTION is used to receive more toots.
Runs synchronously.
@@ -2670,9 +2671,12 @@ Optional arg NOTE-TYPE means only get that type of note."
(params (append notes-params params))
(url (mastodon-http--api endpoint))
(buffer (concat "*mastodon-" buffer-name "*"))
- (json (mastodon-http--get-json url params)))
+ (response (mastodon-http--get-response url params))
+ (json (if headers (car response) response))
+ (headers (if headers (cdr response) nil))
+ (link-header (mastodon-tl--get-link-header-from-response headers)))
(with-mastodon-buffer buffer #'mastodon-mode nil
- (mastodon-tl--set-buffer-spec buffer endpoint update-function nil params)
+ (mastodon-tl--set-buffer-spec buffer endpoint update-function link-header params)
(mastodon-tl--do-init json update-function)
buffer)))
diff --git a/lisp/mastodon-views.el b/lisp/mastodon-views.el
index dd46b59..20734ae 100644
--- a/lisp/mastodon-views.el
+++ b/lisp/mastodon-views.el
@@ -461,7 +461,8 @@ JSON is the data returned by the server."
"follow_requests"
'mastodon-views--insert-follow-requests
nil
- '(("limit" . "80"))) ; server max
+ '(("limit" . "40")) ; server max is 80
+ :headers)
(mastodon-tl--goto-first-item)
(with-current-buffer "*mastodon-follow-requests*"
(use-local-map mastodon-views--view-follow-requests-keymap)))