diff options
Diffstat (limited to 'lisp/mastodon-profile.el')
| -rw-r--r-- | lisp/mastodon-profile.el | 200 | 
1 files changed, 96 insertions, 104 deletions
| diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el index 7fb36ad..241fbbe 100644 --- a/lisp/mastodon-profile.el +++ b/lisp/mastodon-profile.el @@ -6,7 +6,6 @@  ;;         Marty Hiatt <martianhiatus@riseup.net>  ;; Maintainer: Marty Hiatt <martianhiatus@riseup.net>  ;; Version: 1.0.0 -;; Package-Requires: ((emacs "27.1"))  ;; Homepage: https://codeberg.org/martianh/mastodon.el  ;; This file is not part of GNU Emacs. @@ -39,6 +38,8 @@  (require 'cl-lib)  (require 'persist)  (require 'parse-time) +(eval-when-compile +  (require 'mastodon-tl))  (autoload 'mastodon-auth--get-account-id "mastodon-auth")  (autoload 'mastodon-auth--get-account-name "mastodon-auth.el") @@ -78,6 +79,7 @@  (autoload 'mastodon-toot--get-max-toot-chars "mastodon-toot")  (autoload 'mastodon-views--add-account-to-list "mastodon-views") +(defvar mastodon-tl--horiz-bar)  (defvar mastodon-tl--update-point)  (defvar mastodon-toot--max-toot-chars)  (defvar mastodon-toot--visibility) @@ -493,21 +495,15 @@ This endpoint only holds a few preferences. For others, see    (let* ((url (mastodon-http--api "preferences"))           (response (mastodon-http--get-json url))           (buf (get-buffer-create "*mastodon-preferences*"))) -    (with-current-buffer buf -      (switch-to-buffer-other-window buf) -      (erase-buffer) -      (special-mode) -      (mastodon-tl--set-buffer-spec (buffer-name buf) -                                    "preferences" -                                    nil) -      (let ((inhibit-read-only t)) -        (while response -          (let ((el (pop response))) -            (insert -             (format "%-30s %s" -                     (prin1-to-string (car el)) -                     (prin1-to-string (cdr el))) -             "\n\n")))) +    (with-mastodon-buffer buf #'special-mode :other-window +      (mastodon-tl--set-buffer-spec (buffer-name buf) "preferences" nil) +      (while response +        (let ((el (pop response))) +          (insert +           (format "%-30s %s" +                   (prin1-to-string (car el)) +                   (prin1-to-string (cdr el))) +           "\n\n")))        (goto-char (point-min)))))  ;; PROFILE VIEW DETAILS @@ -605,95 +601,91 @@ HEADERS means also fetch link headers for pagination."           (fields (mastodon-profile--fields-get account))           (pinned (mastodon-profile--get-statuses-pinned account))           (joined (mastodon-profile--account-field account 'created_at))) -    (with-current-buffer (get-buffer-create buffer) -      (let ((inhibit-read-only t)) -        (switch-to-buffer buffer) -        (erase-buffer) -        (mastodon-mode) -        (mastodon-profile-mode) -        (setq mastodon-profile--account account) -        (mastodon-tl--set-buffer-spec buffer -                                      endpoint -                                      update-function -                                      link-header) -        (let* ((inhibit-read-only t) -               (is-statuses (string= endpoint-type "statuses")) -               (is-followers (string= endpoint-type "followers")) -               (is-following (string= endpoint-type "following")) -               (endpoint-name (cond -                               (is-statuses (if no-reblogs -                                                "  TOOTS (no boosts)" -                                              "    TOOTS    ")) -                               (is-followers "  FOLLOWERS  ") -                               (is-following "  FOLLOWING  ")))) -          (insert +    (with-mastodon-buffer buffer #'mastodon-mode nil +      (mastodon-profile-mode) +      (setq mastodon-profile--account account) +      (mastodon-tl--set-buffer-spec buffer +                                    endpoint +                                    update-function +                                    link-header) +      (let* ((inhibit-read-only t) +             (is-statuses (string= endpoint-type "statuses")) +             (is-followers (string= endpoint-type "followers")) +             (is-following (string= endpoint-type "following")) +             (endpoint-name (cond +                             (is-statuses (if no-reblogs +                                              "  TOOTS (no boosts)" +                                            "    TOOTS    ")) +                             (is-followers "  FOLLOWERS  ") +                             (is-following "  FOLLOWING  ")))) +        (insert +         (propertize +          (concat +           "\n" +           (mastodon-profile--image-from-account account 'avatar_static) +           (mastodon-profile--image-from-account account 'header_static) +           "\n" +           (propertize (mastodon-profile--account-field +                        account 'display_name) +                       'face 'mastodon-display-name-face) +           "\n" +           (propertize (concat "@" acct) +                       'face 'default) +           (if (equal locked t) +               (concat " " (mastodon-tl--symbol 'locked)) +             "") +           "\n " mastodon-tl--horiz-bar "\n" +           ;; profile note: +           ;; account here to enable tab-stops in profile note +           (mastodon-tl--render-text note account) +           ;; meta fields: +           (if fields +               (concat "\n" +                       (mastodon-tl--set-face +                        (mastodon-profile--fields-insert fields) +                        'success)) +             "") +           "\n" +           ;; Joined date:             (propertize -            (concat -             "\n" -             (mastodon-profile--image-from-account account 'avatar_static) -             (mastodon-profile--image-from-account account 'header_static) -             "\n" -             (propertize (mastodon-profile--account-field -                          account 'display_name) -                         'face 'mastodon-display-name-face) -             "\n" -             (propertize (concat "@" acct) -                         'face 'default) -             (if (equal locked t) -                 (concat " " (mastodon-tl--symbol 'locked)) -               "") -             "\n " mastodon-tl--horiz-bar "\n" -             ;; profile note: -             ;; account here to enable tab-stops in profile note -             (mastodon-tl--render-text note account) -             ;; meta fields: -             (if fields -                 (concat "\n" -                         (mastodon-tl--set-face -                          (mastodon-profile--fields-insert fields) -                          'success)) -               "") -             "\n" -             ;; Joined date: -             (propertize -              (mastodon-profile--format-joined-date-string joined) -              'face 'success) -             "\n\n") -            'profile-json account) -           ;; insert counts -           (mastodon-tl--set-face -            (concat " " mastodon-tl--horiz-bar "\n" -                    " TOOTS: " toots-count " | " -                    "FOLLOWERS: " followers-count " | " -                    "FOLLOWING: " following-count "\n" -                    " " mastodon-tl--horiz-bar "\n\n") -            'success) -           ;; insert relationship (follows) -           (if followsp -               (mastodon-tl--set-face -                (concat (when (equal follows-you 't) -                          " | FOLLOWS YOU") -                        (when (equal followed-by-you 't) -                          " | FOLLOWED BY YOU") -                        (when (equal requested-you 't) -                          " | REQUESTED TO FOLLOW YOU") -                        "\n\n") -                'success) -             "") ; if no followsp we still need str-or-char-p for insert -           ;; insert endpoint -           (mastodon-tl--set-face -            (concat " " mastodon-tl--horiz-bar "\n" -                    endpoint-name "\n" -                    " " mastodon-tl--horiz-bar "\n") -            'success)) -          (setq mastodon-tl--update-point (point)) -          (mastodon-media--inline-images (point-min) (point)) -          ;; insert pinned toots first -          (when (and pinned (equal endpoint-type "statuses")) -            (mastodon-profile--insert-statuses-pinned pinned) -            (setq mastodon-tl--update-point (point))) ;updates to follow pinned toots -          (funcall update-function json))) -      (goto-char (point-min))))) +            (mastodon-profile--format-joined-date-string joined) +            'face 'success) +           "\n\n") +          'profile-json account) +         ;; insert counts +         (mastodon-tl--set-face +          (concat " " mastodon-tl--horiz-bar "\n" +                  " TOOTS: " toots-count " | " +                  "FOLLOWERS: " followers-count " | " +                  "FOLLOWING: " following-count "\n" +                  " " mastodon-tl--horiz-bar "\n\n") +          'success) +         ;; insert relationship (follows) +         (if followsp +             (mastodon-tl--set-face +              (concat (when (equal follows-you 't) +                        " | FOLLOWS YOU") +                      (when (equal followed-by-you 't) +                        " | FOLLOWED BY YOU") +                      (when (equal requested-you 't) +                        " | REQUESTED TO FOLLOW YOU") +                      "\n\n") +              'success) +           "") ; if no followsp we still need str-or-char-p for insert +         ;; insert endpoint +         (mastodon-tl--set-face +          (concat " " mastodon-tl--horiz-bar "\n" +                  endpoint-name "\n" +                  " " mastodon-tl--horiz-bar "\n") +          'success)) +        (setq mastodon-tl--update-point (point)) +        (mastodon-media--inline-images (point-min) (point)) +        ;; insert pinned toots first +        (when (and pinned (equal endpoint-type "statuses")) +          (mastodon-profile--insert-statuses-pinned pinned) +          (setq mastodon-tl--update-point (point))) ;updates to follow pinned toots +        (funcall update-function json))) +    (goto-char (point-min))))  (defun mastodon-profile--format-joined-date-string (joined)    "Format a human-readable Joined string from timestamp JOINED. | 
