Extract select conversation session logic into func for reusability

This commit is contained in:
Debanjum Singh Solanky
2024-06-13 08:24:53 +05:30
parent e15dc23bbe
commit e3d995a74f

View File

@@ -858,17 +858,22 @@ CBARGS are optional additional arguments to pass to CALLBACK."
"GET" "GET"
(when session-id `(("conversation_id" ,session-id))))) (when session-id `(("conversation_id" ,session-id)))))
(defun khoj--open-conversation-session () (defun khoj--select-conversation-session (&optional completion-action)
"Menu to select Khoj conversation session to open." "Select Khoj conversation session to perform COMPLETION-ACTION on."
(let* ((sessions (khoj--get-chat-sessions)) (let* ((completion-text (format "%s Conversation:" (or completion-action "Open")))
(sessions (khoj--get-chat-sessions))
(session-alist (-map (lambda (session) (session-alist (-map (lambda (session)
(cons (if (not (equal :null (cdr (assoc 'slug session)))) (cons (if (not (equal :null (cdr (assoc 'slug session))))
(cdr (assoc 'slug session)) (cdr (assoc 'slug session))
(format "New Conversation (%s)" (cdr (assoc 'conversation_id session)))) (format "New Conversation (%s)" (cdr (assoc 'conversation_id session))))
(cdr (assoc 'conversation_id session)))) (cdr (assoc 'conversation_id session))))
sessions)) sessions))
(selected-session-slug (completing-read "Open Conversation: " session-alist nil t)) (selected-session-slug (completing-read completion-text session-alist nil t)))
(selected-session-id (cdr (assoc selected-session-slug session-alist)))) (cdr (assoc selected-session-slug session-alist))))
(defun khoj--open-conversation-session ()
"Menu to select Khoj conversation session to open."
(let ((selected-session-id (khoj--select-conversation-session "Open")))
(khoj--load-chat-session khoj--chat-buffer-name selected-session-id) (khoj--load-chat-session khoj--chat-buffer-name selected-session-id)
(khoj--open-side-pane khoj--chat-buffer-name))) (khoj--open-side-pane khoj--chat-buffer-name)))