diff options
| -rw-r--r-- | lisp/mastodon-tl.el | 34 | 
1 files changed, 22 insertions, 12 deletions
diff --git a/lisp/mastodon-tl.el b/lisp/mastodon-tl.el index 1a4df7f..8be802e 100644 --- a/lisp/mastodon-tl.el +++ b/lisp/mastodon-tl.el @@ -590,6 +590,12 @@ With a double PREFIX arg, limit results to your own instance."                         'mastodon-tl--timeline nil                         params))) +(defun mastodon-tl--announcements () +  "Display announcements from your instance." +  (interactive) +  (mastodon-tl--init "announcements" "announcements" +                     'mastodon-tl--timeline nil nil nil nil :no-byline)) +  ;;; BYLINES, etc. @@ -814,7 +820,7 @@ ACCOUNT is the notification account if any."                  ;; all other toots, inc. boosts/faves in timelines:                  ;; (mastodon-tl--field auto fetches from reblogs if needed):                  (mastodon-tl--field 'created_at toot)))) -         (parsed-time (date-to-time created-time)) +         (parsed-time (when created-time (date-to-time created-time)))           (faved (eq t (mastodon-tl--field 'favourited toot)))           (boosted (eq t (mastodon-tl--field 'reblogged toot)))           (bookmarked (eq t (mastodon-tl--field 'bookmarked toot))) @@ -1791,7 +1797,7 @@ NO-BYLINE means just insert toot body, used for folding."         #'mastodon-tl--byline-author #'mastodon-tl--byline-boost         nil nil detailed-p thread domain unfolded no-byline)))) -(defun mastodon-tl--timeline (toots &optional thread domain) +(defun mastodon-tl--timeline (toots &optional thread domain no-byline)    "Display each toot in TOOTS.  This function removes replies if user required.  THREAD means the status will be displayed in a thread view. @@ -1807,7 +1813,7 @@ When DOMAIN, force inclusion of user's domain in their handle."  	       (cl-remove-if-not #'mastodon-tl--is-reply toots)  	     toots))))      (mapc (lambda (toot) -            (mastodon-tl--toot toot nil thread domain)) +            (mastodon-tl--toot toot nil thread domain nil no-byline))            toots)      ;; media:      (when mastodon-tl--display-media-p @@ -2117,7 +2123,9 @@ call this function after it is set or use something else."            ((string= "*masto-image*" (buffer-name))             'mastodon-image)            ((mastodon-tl--endpoint-str-= "timelines/link") -           'link-timeline)))) +           'link-timeline) +          ((mastodon-tl--endpoint-str-= "announcements") +           'announcements))))  (defun mastodon-tl--buffer-type-eq (type)    "Return t if current buffer type is equal to symbol TYPE." @@ -3246,7 +3254,7 @@ This location is defined by a non-nil value of  (defun mastodon-tl--init      (buffer-name endpoint update-function &optional headers params -                 hide-replies instance) +                 hide-replies instance no-byline)    "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 @@ -3264,11 +3272,12 @@ a timeline from."           #'mastodon-http--get-response-async         #'mastodon-http--get-json-async)       url params 'mastodon-tl--init* -     buffer endpoint update-function headers params hide-replies instance))) +     buffer endpoint update-function headers params hide-replies +     instance no-byline)))  (defun mastodon-tl--init*      (response buffer endpoint update-function &optional headers -              update-params hide-replies instance) +              update-params hide-replies instance no-byline)    "Initialize BUFFER with timeline targeted by ENDPOINT.  UPDATE-FUNCTION is used to recieve more toots.  RESPONSE is the data returned from the server by @@ -3299,7 +3308,7 @@ JSON and http headers, without it just the JSON."                  link-header update-params hide-replies                  ;; awful hack to fix multiple reloads:                  (alist-get "max_id" update-params nil nil #'string=)) -               (mastodon-tl--do-init json update-function instance))))))) +               (mastodon-tl--do-init json update-function instance no-byline)))))))  (defun mastodon-tl--init-sync      (buffer-name endpoint update-function &optional note-type params @@ -3342,14 +3351,15 @@ ENDPOINT-VERSION is a string, format Vx, e.g. V2."        (mastodon-tl--do-init json update-function)        buffer))) -(defun mastodon-tl--do-init (json update-fun &optional domain) +(defun mastodon-tl--do-init (json update-fun &optional domain no-byline)    "Utility function for `mastodon-tl--init*' and `mastodon-tl--init-sync'.  JSON is the data to call UPDATE-FUN on.  When DOMAIN, force inclusion of user's domain in their handle."    (remove-overlays) ; video overlays -  (if domain ;; maybe our update-fun doesn't always have 3 args...: -      (funcall update-fun json nil domain) -    (funcall update-fun json)) +  (cond (domain ;; maybe our update-fun doesn't always have 3 args...: +         (funcall update-fun json nil domain)) +        (no-byline (funcall update-fun json nil nil no-byline)) +        (t (funcall update-fun json)))    (setq     ;; Initialize with a minimal interval; we re-scan at least once     ;; every 5 minutes to catch any timestamps we may have missed  | 
