diff options
author | marty hiatt <martianhiatus@riseup.net> | 2024-03-09 18:52:30 +0100 |
---|---|---|
committer | marty hiatt <martianhiatus@riseup.net> | 2024-03-09 18:52:30 +0100 |
commit | 5704193a0209b0238190af76078b5aab0b6417c4 (patch) | |
tree | abb4e8c970a521f3372c579029719f50de787e38 /lisp/mastodon-media.el | |
parent | 98351a7c4fb2bac778ca17ddd03706b0fb016c47 (diff) | |
parent | 2b5b5cdd214be61b91669f143a19a4400f35d8fd (diff) |
Merge branch 'develop'
Diffstat (limited to 'lisp/mastodon-media.el')
-rw-r--r-- | lisp/mastodon-media.el | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lisp/mastodon-media.el b/lisp/mastodon-media.el index 9dd22f4..ff40633 100644 --- a/lisp/mastodon-media.el +++ b/lisp/mastodon-media.el @@ -177,6 +177,45 @@ with the image." (set-marker marker nil))) (kill-buffer url-buffer)))))) +(defun mastodon-media--process-full-sized-image-response + (status-plist image-options url) + ;; FIXME: refactor this with but not into + ;; `mastodon-media--process-image-response'. + "Callback function processing the `url-retrieve' response for URL. +URL is a full-sized image URL attached to a timeline image. +STATUS-PLIST is a plist of status events as per `url-retrieve'. +IMAGE-OPTIONS are the precomputed options to apply to the image." + (let ((url-buffer (current-buffer)) + (is-error-response-p (eq :error (car status-plist)))) + (let* ((data (unless is-error-response-p + (goto-char (point-min)) + (search-forward "\n\n") + (buffer-substring (point) (point-max)))) + (image (when data + (apply #'create-image data + (if (version< emacs-version "27.1") + (when image-options 'imagemagick) + nil) ; inbuilt scaling in 27.1 + t nil)))) + (when mastodon-media--enable-image-caching + (unless (url-is-cached url) ;; cache if not already cached + (url-store-in-cache url-buffer))) + (with-current-buffer (get-buffer-create "*masto-image*") + (let ((inhibit-read-only t)) + (erase-buffer) + (insert " ") + (when image + (add-text-properties (point-min) (point-max) + `( display ,image + keymap ,(if (boundp 'shr-image-map) + shr-image-map + shr-map) + image-url ,url + shr-url ,url)) + (image-mode) + (goto-char (point-min)) + (switch-to-buffer-other-window (current-buffer)))))))) + (defun mastodon-media--load-image-from-url (url media-type start region-length) "Take a URL and MEDIA-TYPE and load the image asynchronously. MEDIA-TYPE is a symbol and either `avatar' or `media-link'. |