         is-busy?    (subscribe [:ui-state :is-busy?])
         ;; On the next one, we can't use not-empty because (= nil (not-empty nil)), and :show expects true/false,
         ;; not a truth-ish value.
-        show?       (reaction (seq @edit-memory))]
+        show?       (reaction (not (empty? @edit-memory)))]
     (fn []
       [Modal {:show @show? :onHide #(dispatch [:memory-edit-set nil])}
        [ModalBody

          url    (str "/api/thoughts/" (:id memory))]
      (PUT url {:params        {:thought note}
                :headers       {:authorization (str "Token " (get-in app-state [:credentials :token]))}
                :handler       #(dispatch [:memory-edit-save-success note])
                :error-handler #(dispatch [:memory-edit-save-error %])}))
    (assoc-in app-state [:ui-state :is-busy?] true)))


(register-handler
  :memory-edit-save-success
  (fn [app-state [_ msg]]
    (let [thread-id (get-in app-state [:ui-state :show-thread-id])]
      (dispatch [:state-message (str "Updated memory to: " msg) "alert-success"])
      (if (= :remember (get-in app-state [:ui-state :section])) ; Just in case we allow editing from elsewhere...
        (dispatch [:memories-load]))
      (if thread-id
        (dispatch [:thread-load thread-id]))
      (-> app-state
          (assoc-in [:ui-state :is-busy?] false)

        ; to the @path... but the subscription is not refreshed when the @path changes.
        threads   (subscribe [:cache :threads])
        thread    (reaction (get @threads @thread-id))
        ready?    (reaction (and (not-empty @thread) @show?))]
    (fn []
      [Modal {:show @ready? :onHide #(dispatch [:state-show-thread false])}
       [ModalBody
