emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/mastodon f1bdef0b73 40/50: revert transient polls to use m


From: ELPA Syncer
Subject: [nongnu] elpa/mastodon f1bdef0b73 40/50: revert transient polls to use mastodon-toot-poll
Date: Sat, 2 Nov 2024 13:00:56 -0400 (EDT)

branch: elpa/mastodon
commit f1bdef0b734fef63aeb4854b2a87503d442bd4ec
Author: marty hiatt <martianhiatus@disroot.org>
Commit: marty hiatt <martianhiatus@disroot.org>

    revert transient polls to use mastodon-toot-poll
    
    internally, the transients still use tp-transient-settings, but they fetch
    from mastodon-toot-poll, and set it when done.
    
    we also hack around so that the cancelling functions work ok.
---
 lisp/mastodon-toot.el      | 45 ++++++++++++++++++++++-----------------------
 lisp/mastodon-transient.el | 14 ++++++++++----
 2 files changed, 32 insertions(+), 27 deletions(-)

diff --git a/lisp/mastodon-toot.el b/lisp/mastodon-toot.el
index fa5a955c8d..14aa7def5f 100644
--- a/lisp/mastodon-toot.el
+++ b/lisp/mastodon-toot.el
@@ -57,7 +57,6 @@
 (defvar mastodon-tl--enable-proportional-fonts)
 (defvar mastodon-profile-account-settings)
 (defvar mastodon-profile-acccount-preferences-data)
-(defvar tp-transient-settings)
 
 (autoload 'iso8601-parse "iso8601")
 (autoload 'mastodon-auth--user-acct "mastodon-auth")
@@ -780,7 +779,7 @@ TEXT-ONLY means don't check for attachments or polls."
   (and (if text-only
            t
          (and (not mastodon-toot--media-attachments)
-              (not (mastodon-toot-poll-var))))
+              (not mastodon-toot-poll)))
        (string-empty-p (mastodon-tl--clean-tabs-and-nl
                         (mastodon-toot--remove-docs)))))
 
@@ -881,7 +880,7 @@ to `emojify-user-emojis', and the emoji data is updated."
 (defun mastodon-toot--build-poll-params ()
   "Return an alist of parameters for POSTing a poll status."
   (if mastodon-toot-poll-use-transient
-      (let-alist tp-transient-settings
+      (let-alist mastodon-toot-poll
         (append
          (mastodon-http--build-array-params-alist
           "poll[options][]"
@@ -930,13 +929,12 @@ instance to edit a toot."
                        (mastodon-http--build-array-params-alist
                         "media_ids[]"
                         mastodon-toot--media-attachment-ids)))
-         (poll-var (mastodon-toot-poll-var))
-         (args-poll (when poll-var
+         (args-poll (when mastodon-toot-poll
                       (mastodon-toot--build-poll-params)))
          ;; media || polls:
          (args (if mastodon-toot--media-attachment-ids
                    (append args-media args-no-media)
-                 (if poll-var
+                 (if mastodon-toot-poll
                      (append args-no-media args-poll)
                    args-no-media)))
          (prev-window-config mastodon-toot-previous-window-config))
@@ -951,7 +949,9 @@ instance to edit a toot."
                 (> (mastodon-toot--count-toot-chars toot 
mastodon-toot--content-warning)
                    mastodon-toot--max-toot-chars))
            (user-error "Looks like your toot (inc. CW) is longer than that 
maximum allowed length"))
-          ((mastodon-toot--empty-p)
+          ;; polls must have text, so we use poll as flag for text-only
+          ;; check here:
+          ((mastodon-toot--empty-p mastodon-toot-poll)
            (user-error "Empty toot. Cowardly refusing to post this"))
           (t
            (let ((response (funcall (if edit-id ; we are sending an edit:
@@ -964,7 +964,7 @@ instance to edit a toot."
                 ;; kill buffer:
                 (mastodon-toot--kill)
                 ;; nil our poll var:
-                (set poll-var nil)
+                (setq mastodon-toot-poll nil)
                 (message "Toot %s!" (if scheduled "scheduled" "toot"))
                 ;; cancel scheduled toot if we were editing it:
                 (when scheduled-id
@@ -1395,12 +1395,6 @@ which is used to attach it to a toot when posting."
 
 ;;; POLL
 
-(defun mastodon-toot-poll-var ()
-  "Return the correct poll var."
-  (if mastodon-toot-poll-use-transient
-      'tp-transient-settings
-    'mastodon-toot-poll))
-
 (defun mastodon-toot--fetch-max-poll-options (instance)
   "Return the maximum number of poll options from JSON data INSTANCE."
   (mastodon-toot--fetch-poll-field 'max_options instance))
@@ -1492,14 +1486,20 @@ Return a cons of a human readable string, and a 
seconds-from-now string."
     ("14 days" . ,(number-to-string (* 60 60 24 14)))
     ("30 days" . ,(number-to-string (* 60 60 24 30)))))
 
-(defun mastodon-toot--clear-poll ()
+(defun mastodon-toot--clear-poll (&optional transient)
   "Remove poll from toot compose buffer.
-Sets `mastodon-toot-poll' to nil."
+Sets `mastodon-toot-poll' to nil.
+If TRANSIENT, we are called from a transient, so nil
+`tp-transient-settings' too."
   (interactive)
-  (let ((var (mastodon-toot-poll-var)))
-    (if (not var)
+  (let ((var (if transient
+                 'tp-transient-settings
+               'mastodon-toot-poll)))
+    (if (not (symbol-value var))
         (user-error "No poll?")
       (set var nil)
+      (when transient
+        (setq mastodon-toot-poll nil))
       (mastodon-toot--update-status-fields))))
 
 (defun mastodon-toot--server-poll-to-local (json)
@@ -1517,7 +1517,7 @@ Sets `mastodon-toot-poll' to nil."
            (options (mastodon-tl--map-alist 'title .options))
            (multiple (if (eq :json-false .multiple) nil t)))
       (if mastodon-toot-poll-use-transient
-          (setq tp-transient-settings
+          (setq mastodon-toot-poll
                 `((multi . ,multiple)
                   (expiry . ,expiry-str)
                   ;; (hide . ,hide)
@@ -1805,8 +1805,7 @@ REPLY-REGION is a string to be injected into the buffer."
            (poll-region (mastodon-tl--find-property-range 'toot-post-poll-flag
                                                           (point-min)))
            (toot-string (buffer-substring-no-properties (cdr header-region)
-                                                        (point-max)))
-           (poll-var (mastodon-toot-poll-var)))
+                                                        (point-max))))
       (mastodon-toot--apply-fields-props
        count-region
        (format "%s/%s chars"
@@ -1840,11 +1839,11 @@ REPLY-REGION is a string to be injected into the 
buffer."
        'mastodon-cw-face)
       (mastodon-toot--apply-fields-props
        poll-region
-       (if (symbol-value poll-var)
+       (if mastodon-toot-poll
            "POLL"
          "")
        'mastodon-cw-face
-       (prin1-to-string (symbol-value poll-var)))
+       (prin1-to-string mastodon-toot-poll))
       (mastodon-toot--apply-fields-props
        cw-region
        (if (and mastodon-toot--content-warning
diff --git a/lisp/mastodon-transient.el b/lisp/mastodon-transient.el
index c96e1d5319..6b1296fcb8 100644
--- a/lisp/mastodon-transient.el
+++ b/lisp/mastodon-transient.el
@@ -268,8 +268,12 @@ Do not add more than the server's maximum setting."
 
 (transient-define-prefix mastodon-create-poll ()
   "A transient for creating a poll."
-  ;; FIXME: handle existing polls when editing a toot
-  :value (lambda () tp-transient-settings)
+  :value (lambda ()
+           ;; we set `tp-transient-settings' here to the poll value poss
+           ;; pulled from the server by
+           ;; `mastodon-toot--server-poll-to-local'. when we are done with
+           ;; the transient, we set `mastodon-toot-poll' again
+           (setq tp-transient-settings mastodon-toot-poll))
   ["Create poll"
    (:info (lambda ()
             (format "Max options: %s"
@@ -305,7 +309,7 @@ Do not add more than the server's maximum setting."
   "Clear current poll data."
   :transient 'transient--do-stay
   (interactive)
-  (mastodon-toot--clear-poll)
+  (mastodon-toot--clear-poll :transient)
   (transient-reset))
 
 (transient-define-suffix mastodon-create-poll-done (args)
@@ -335,7 +339,9 @@ Do not add more than the server's maximum setting."
         (call-interactively #'mastodon-create-poll)
       ;; if we are called with no poll data, do not set:
       (unless (not vals)
-        (setq tp-transient-settings
+        ;; we set `mastodon-toot-poll' here not `tp-transient-settings'
+        ;; as that is our var outside of our transient:
+        (setq mastodon-toot-poll
               (tp-bools-to-strs args)))
       (mastodon-toot--update-status-fields))))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]