branch: elpa/mastodon
commit 13162773b6fcff121bf3449075201a49547f68c4
Author: marty hiatt <martianhia...@riseup.net>
Commit: marty hiatt <martianhia...@riseup.net>

    max-id arg/params for (so far only plain) profile view
---
 lisp/mastodon-profile.el | 22 +++++++++++++---------
 lisp/mastodon-tl.el      |  5 ++++-
 lisp/mastodon.el         |  2 +-
 3 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el
index 46a56f6ec5..37a6ec4154 100644
--- a/lisp/mastodon-profile.el
+++ b/lisp/mastodon-profile.el
@@ -146,7 +146,7 @@ This variable is set from data in
   (mastodon-tl--property 'item-json))
 
 (defun mastodon-profile--make-author-buffer
-    (account &optional no-reblogs no-replies only-media tag)
+    (account &optional no-reblogs no-replies only-media tag max-id)
   "Take an ACCOUNT json and insert a user account into a new buffer.
 NO-REBLOGS means do not display boosts in statuses.
 NO-REPLIES means to exlude replies.
@@ -154,7 +154,7 @@ ONLY-MEDIA means show only posts containing attachments.
 TAG is a hashtag to restrict posts to."
   (mastodon-profile--make-profile-buffer-for
    account "statuses" #'mastodon-tl--timeline no-reblogs nil
-   no-replies only-media tag))
+   no-replies only-media tag max-id))
 
 ;; TODO: we shd just load all views' data then switch coz this is slow af:
 (defun mastodon-profile--account-view-cycle ()
@@ -594,7 +594,7 @@ FIELDS means provide a fields vector fetched by other 
means."
 
 (defun mastodon-profile--make-profile-buffer-for
     (account endpoint-type update-function
-             &optional no-reblogs headers no-replies only-media tag)
+             &optional no-reblogs headers no-replies only-media tag max-id)
   "Display profile of ACCOUNT, using ENDPOINT-TYPE and UPDATE-FUNCTION.
 NO-REBLOGS means do not display boosts in statuses.
 HEADERS means also fetch link headers for pagination.
@@ -602,7 +602,11 @@ NO-REPLIES means to exlude replies.
 ONLY-MEDIA means show only posts containing attachments.
 TAG is a hashtag to restrict posts to."
   (let-alist account
-    (let* ((args `(("limit" . ,mastodon-tl--timeline-posts-count)))
+    (let* ((max-id-str (when max-id
+                         (mastodon-tl--buffer-property 'max-id)))
+           (args `(("limit" . ,mastodon-tl--timeline-posts-count)
+                   ,(when max-id
+                      `("max_id" . ,max-id-str))))
            (args (cond (no-reblogs
                         (push '("exclude_reblogs" . "t") args))
                        (no-replies
@@ -637,9 +641,8 @@ TAG is a hashtag to restrict posts to."
         (mastodon-profile-mode)
         (remove-overlays)
         (setq mastodon-profile--account account)
-        (mastodon-tl--set-buffer-spec buffer endpoint
-                                      update-function link-header
-                                      args)
+        (mastodon-tl--set-buffer-spec buffer endpoint update-function
+                                      link-header args nil max-id-str)
         (let* ((inhibit-read-only t)
                (is-statuses (string= endpoint-type "statuses"))
                (is-followers (string= endpoint-type "followers"))
@@ -748,12 +751,13 @@ the format \"2000-01-31T00:00:00.000Z\"."
   (format-time-string "Joined: %d %B %Y"
                       (parse-iso8601-time-string joined)))
 
-(defun mastodon-profile--get-toot-author ()
+(defun mastodon-profile--get-toot-author (&optional max-id)
   "Open profile of author of toot under point.
 If toot is a boost, opens the profile of the booster."
   (interactive)
   (mastodon-profile--make-author-buffer
-   (alist-get 'account (mastodon-profile--item-json))))
+   (alist-get 'account (mastodon-profile--item-json))
+   nil nil nil nil max-id))
 
 (defun mastodon-profile--image-from-account (account img-type)
   "Return a avatar image from ACCOUNT.
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el
index 7ffa96d5fd..fe8f9f1387 100644
--- a/lisp/mastodon-tl.el
+++ b/lisp/mastodon-tl.el
@@ -2565,9 +2565,12 @@ Aims to respect any pagination in effect."
           ((eq type 'notifications)
            (mastodon-notifications-get nil nil :force :max-id))
           ((eq type 'profile-statuses-no-boosts)
+           ;; TODO: max-id arg needed here also
            (mastodon-profile--open-statuses-no-reblogs))
           ((eq type 'profile-statuses)
-           (mastodon-profile--my-profile))
+           (save-excursion
+             (goto-char (point-min))
+             (mastodon-profile--get-toot-author :max-id)))
           ((eq type 'thread)
            (save-match-data
              (let ((endpoint (mastodon-tl--endpoint)))
diff --git a/lisp/mastodon.el b/lisp/mastodon.el
index 42d9707788..24a6b4c414 100644
--- a/lisp/mastodon.el
+++ b/lisp/mastodon.el
@@ -358,7 +358,7 @@ from the server and load anew."
                               'mastodon-notifications--timeline
                               type
                               (when max-id
-                                `("max_id" . ,(mastodon-tl--buffer-property 
'max-id))))
+                                `(("max_id" . ,(mastodon-tl--buffer-property 
'max-id)))))
       (with-current-buffer buffer
         (use-local-map mastodon-notifications--map)))))
 

Reply via email to