summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThanos Apollo <[email protected]>2025-02-08 22:06:24 +0200
committerThanos Apollo <[email protected]>2025-02-08 22:06:24 +0200
commit933185ecc28118f8bfb885a45a51ab05789c0453 (patch)
tree8388579aabbfc67dd034195592b13a3142a77b53
parent5b6e70d6597be77d82530a4797cec11b02607b62 (diff)
Rewrite data retrieval specifically for org-gnosis
-rw-r--r--org-gnosis-ui.el63
1 files changed, 13 insertions, 50 deletions
diff --git a/org-gnosis-ui.el b/org-gnosis-ui.el
index 291b236..8766ce2 100644
--- a/org-gnosis-ui.el
+++ b/org-gnosis-ui.el
@@ -276,56 +276,27 @@ Takes _WS and FRAME as arguments."
(org-gnosis-ui--on-msg-open-node data))
((string= command "delete")
(org-gnosis-ui--on-msg-delete-node data))
- ((string= command "create")
- (org-gnosis-ui--on-msg-create-node data))
(t
(message
"Something went wrong when receiving a message from org-gnosis-ui")))))
(defun org-gnosis-ui--on-msg-open-node (data)
"Open a node when receiving DATA from the websocket."
- (let* ((id (alist-get 'id data))
- (node (org-roam-node-from-id id))
- (pos (org-roam-node-point node))
- (buf (find-file-noselect (org-roam-node-file node))))
- (run-hook-with-args 'org-gnosis-ui-before-open-node-functions id)
- (unless (window-live-p org-gnosis-ui--window)
- (if-let ((windows (window-list))
- (or-windows (seq-filter
- (lambda (window)
- (when (bound-and-true-p org-gnosis-mode)
- (window-buffer window)))
- windows))
- (newest-window (car
- (seq-sort-by
- #'window-use-time #'> or-windows))))
- (setq org-gnosis-ui--window newest-window)
- (split-window-horizontally)
- (setq org-gnosis-ui--window (frame-selected-window))))
- (set-window-buffer org-gnosis-ui--window buf)
- (select-window org-gnosis-ui--window)
- (goto-char pos)
- (run-hook-with-args 'org-gnosis-ui-after-open-node-functions id)))
+ (let* ((id (cdr (assoc 'id data)))
+ (title (car (org-gnosis-select 'title 'nodes `(= id ,id) t)))
+ (file (car (org-gnosis-select 'file 'nodes `(= id ,id) t))))
+ (org-gnosis-find title file id)))
+;; TODO: Why is there no data received?
(defun org-gnosis-ui--on-msg-delete-node (data)
- "Delete a node when receiving DATA from the websocket.
-
-TODO: Be able to delete individual nodes."
- (progn
+ "Delete a node when receiving DATA from the websocket."
+ (let* ((id (cdr (assoc 'id data)))
+ (file (car (org-gnosis-select 'file 'nodes `(= id ,id) t))))
(message "Deleted %s" (alist-get 'file data))
- (delete-file (alist-get 'file data))
- (org-roam-db-sync)
+ (org-gnosis-delete-file file)
+ ;; (delete-file (alist-get 'file data))
(org-gnosis-ui--send-graphdata)))
-(defun org-gnosis-ui--on-msg-create-node (data)
- "Create a node when receiving DATA from the websocket."
- (progn
- (if (and (fboundp #'orb-edit-note) (alist-get 'ROAM_REFS data))
- (orb-edit-note (alist-get 'id data)))
- (org-roam-capture-
- :node (org-roam-node-create :title (alist-get 'title data))
- :props '(:finalize find-file))))
-
(defun org-gnosis-ui--ws-on-close (_websocket)
"What to do when _WEBSOCKET to org-gnosis-ui is closed."
(remove-hook 'after-save-hook #'org-gnosis-ui--on-save)
@@ -334,17 +305,9 @@ TODO: Be able to delete individual nodes."
(defun org-gnosis-ui--get-text (id)
"Retrieve the text from org-node ID."
- (let*
- ((node (org-roam-populate (org-roam-node-create
- :id id)))
- (file (org-roam-node-file node)))
- (org-roam-with-temp-buffer
- file
- (when (> (org-roam-node-level node) 0)
- ;; Heading nodes have level 1 and greater.
- (goto-char (org-roam-node-point node))
- (org-narrow-to-element))
- (buffer-substring-no-properties (buffer-end -1) (buffer-end 1)))))
+ (with-temp-buffer
+ (insert-file-contents (car (org-gnosis-select 'file 'nodes `(= id ,id) t)))
+ (buffer-substring-no-properties (buffer-end -1) (buffer-end 1))))
(defun org-gnosis-ui--send-text (id ws)
"Send the text from org-node ID through the websocket WS."