aboutsummaryrefslogtreecommitdiff
path: root/lisp/mastodon-toot.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/mastodon-toot.el')
-rw-r--r--lisp/mastodon-toot.el45
1 files changed, 45 insertions, 0 deletions
diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
new file mode 100644
index 0000000..82fac8c
--- /dev/null
+++ b/lisp/mastodon-toot.el
@@ -0,0 +1,45 @@
+(require 'mastodon-auth)
+(require 'mastodon-http)
+
+(defgroup mastodon-toot nil
+ "Capture Mastodon toots."
+ :group 'mastodon)
+
+(defun mastodon-new-toot ()
+ (interactive)
+ (progn
+ (switch-to-buffer-other-window (get-buffer-create "*new toot*"))
+ (mastodon-toot-mode t)))
+
+(defun mastodon-toot--send ()
+ (interactive)
+ (let ((toot (buffer-string))
+ (endpoint (mastodon--api-for "statuses")))
+ (progn
+ (kill-buffer-and-window)
+ (mastodon--http-post endpoint
+ (lambda (status) (switch-to-buffer (current-buffer))) ;; FIXME
+ `(("status" . ,toot)
+ ("visibility" . "public"))
+ `(("Authorization" . ,(concat
+ "Bearer "
+ (mastodon--access-token))))))))
+
+(defun mastodon-toot--cancel ()
+ (interactive)
+ (kill-buffer-and-window))
+
+(defvar mastodon-toot-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map (kbd "C-c C-c") #'mastodon-toot--send)
+ (define-key map (kbd "C-c C-k") #'mastodon-toot--cancel)
+ map)
+ "Keymap for `mastodon-toot-mode'.")
+
+(define-minor-mode mastodon-toot-mode
+ "Minor mode to capture Mastodon toots."
+ :group 'mastodon-toot
+ :keymap mastodon-toot-mode-map
+ :global nil)
+
+(provide 'mastodon-toot)