diff options
author | Thanos Apollo <[email protected]> | 2025-02-08 22:06:24 +0200 |
---|---|---|
committer | Thanos Apollo <[email protected]> | 2025-02-08 22:06:24 +0200 |
commit | 933185ecc28118f8bfb885a45a51ab05789c0453 (patch) | |
tree | 8388579aabbfc67dd034195592b13a3142a77b53 | |
parent | 5b6e70d6597be77d82530a4797cec11b02607b62 (diff) |
Rewrite data retrieval specifically for org-gnosis
-rw-r--r-- | org-gnosis-ui.el | 63 |
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." |