summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThanos Apollo <public@thanosapollo.org>2026-04-29 05:58:01 +0300
committerThanos Apollo <public@thanosapollo.org>2026-04-29 05:58:01 +0300
commitcf977fee13c76dbc523f44276332972e91578406 (patch)
treeab193dfabca5363a732564d12d9cee535d37ecd8
parent0e2afe43ec0b3219072bd9d337e581adc8276220 (diff)
[fix] db: Fix is_locked always true due to :json-false being non-nil
-rw-r--r--lisp/forgejo-db.el12
-rw-r--r--lisp/forgejo-view.el7
2 files changed, 16 insertions, 3 deletions
diff --git a/lisp/forgejo-db.el b/lisp/forgejo-db.el
index cd518d8..903ddef 100644
--- a/lisp/forgejo-db.el
+++ b/lisp/forgejo-db.el
@@ -256,7 +256,7 @@ whether a `pull_request' field is present in the data."
(if pr 1 0)
(or .pin_order 0)
(forgejo-db--nullable .due_date)
- (if .is_locked 1 0)))))))))
+ (if (eq .is_locked t) 1 0)))))))))
(defun forgejo-db--like (s)
"Wrap S in SQL LIKE wildcards."
@@ -456,6 +456,16 @@ FILTERS is a plist with keys:
ORDER BY owner, repo"
(list host))))
+;;; Pin
+
+(defun forgejo-db-set-pin-order (host owner repo number pin-order)
+ "Set PIN-ORDER for issue NUMBER in HOST/OWNER/REPO."
+ (setq owner (downcase owner) repo (downcase repo))
+ (forgejo-db--execute
+ "UPDATE issues SET pin_order = ?
+ WHERE host = ? AND owner = ? AND repo = ? AND number = ?"
+ (list pin-order host owner repo number)))
+
;;; Delete
(defun forgejo-db-delete-issue (host owner repo number)
diff --git a/lisp/forgejo-view.el b/lisp/forgejo-view.el
index 9b3df5b..80797eb 100644
--- a/lisp/forgejo-view.el
+++ b/lisp/forgejo-view.el
@@ -392,7 +392,8 @@ Restores point to RESTORE-LINE if given."
(defun forgejo-view-toggle-pin ()
"Toggle pin state of the current issue or PR.
-Works from both detail and list views."
+Works from both detail and list views.
+Updates the API, then updates pin_order in the DB."
(interactive)
(let* ((number (or (and (bound-and-true-p forgejo-view--data)
(alist-get 'number forgejo-view--data))
@@ -407,7 +408,9 @@ Works from both detail and list views."
(pinned-p (and pin-order (> pin-order 0))))
(forgejo-utils-toggle-pin
host-url owner repo number pinned-p
- (forgejo--post-action-callback))))))
+ (lambda ()
+ (forgejo-db-set-pin-order host owner repo number
+ (if pinned-p 0 1))))))))
(defun forgejo-view-comment ()
"Post a comment on the current item."