diff options
| -rw-r--r-- | lisp/mastodon-profile.el | 49 | 
1 files changed, 49 insertions, 0 deletions
diff --git a/lisp/mastodon-profile.el b/lisp/mastodon-profile.el index fa9642e..8cea4d7 100644 --- a/lisp/mastodon-profile.el +++ b/lisp/mastodon-profile.el @@ -822,5 +822,54 @@ These include the author, author of reblogged entries and any user mentioned."            (t             (mastodon-profile--search-account-by-handle handle))))) +(defun mastodon-profile--remove-user-from-followers (&optional id) +  "Remove a user from your followers. +User may be the current profile page if not your own, or the +account ('toot-json) at point if you are on your own profile page (followers)." +  (interactive) +  (let* ((account (unless id +                    (cond ((and ;; we are on a profile page +                            mastodon-profile--account +                            ;; that is not our own: +                            (not (string= (mastodon-auth--user-acct) +                                          (alist-get 'acct mastodon-profile--account)))) +                           mastodon-profile--account) +                          ;; we are on our own profile page: +                          ((and (string= (mastodon-auth--user-acct) +                                         (alist-get 'acct mastodon-profile--account)) +                                ;; viewing our followers: +                                (string= endpoint-type "followers")) +                           ;; try for a follower at point: +                           ;; (mastodon-tl--field 'toot-json) +                           (get-text-property (point) 'toot-json)) +                          (t +                           ;; FIXME: do some thing else? +                           (get-text-property (point) 'toot-json))))) +         ;; TODO: read account from list of all followers' handles +         (id (or (alist-get 'id account))) +         (handle (if account +                     (alist-get 'acct account) +                   (let ((account +                          (mastodon-profile--account-from-id id))) +                     (alist-get 'acct account)))) +         (url (mastodon-http--api +               (format "accounts/%s/remove_from_followers" id)))) +    (when (y-or-n-p "Remove follower %s? " handle) +      (let ((response (mastodon-http--post url))) +        (mastodon-http--triage (lambda () +                                 (message "Follower %s removed!" handle))))))) + +(defun mastodon-profile--remove-from-followers-toot-at-point () +  "Prompt for a user in the toot at point and remove from followers." +  (let* ((handles +          (mastodon-profile--extract-users-handles +           (mastodon-profile--toot-json))) +         (handle (completing-read "Handle to unfollow: " +                                  handles)) +         (account (mastodon-profile--lookup-account-in-status +                   handle (mastodon-profile--toot-json))) +         (id (alist-get 'id account))) +    (mastodon-profile--remove-user-from-followers id))) +  (provide 'mastodon-profile)  ;;; mastodon-profile.el ends here  | 
