mirror of
https://codeberg.org/cage/tinmop/
synced 2025-02-08 07:08:39 +01:00
- basics chats works.
This commit is contained in:
parent
49880b986d
commit
f135292e53
@ -373,6 +373,28 @@
|
|||||||
|
|
||||||
(define-key "C-J" #'show-chat-to-screen *chats-list-keymap*)
|
(define-key "C-J" #'show-chat-to-screen *chats-list-keymap*)
|
||||||
|
|
||||||
|
;; chats
|
||||||
|
|
||||||
|
(defun write-to-chat ()
|
||||||
|
(chat-loop (message-window:metadata specials:*message-window*)))
|
||||||
|
|
||||||
|
(define-key "M-c" #'write-to-chat *chat-message-keymap*)
|
||||||
|
|
||||||
|
(define-key "up" #'message-scroll-up *chat-message-keymap*)
|
||||||
|
|
||||||
|
(define-key "down" #'message-scroll-down *chat-message-keymap*)
|
||||||
|
|
||||||
|
(define-key "home" #'message-scroll-begin *chat-message-keymap*)
|
||||||
|
|
||||||
|
(define-key "end" #'message-scroll-end *chat-message-keymap*)
|
||||||
|
|
||||||
|
(define-key "/" #'message-search-regex *chat-message-keymap*)
|
||||||
|
|
||||||
|
(define-key "npage" #'message-scroll-next-page *chat-message-keymap*)
|
||||||
|
|
||||||
|
(define-key "ppage" #'message-scroll-previous-page *chat-message-keymap*)
|
||||||
|
|
||||||
|
|
||||||
;;;; hooks
|
;;;; hooks
|
||||||
|
|
||||||
;;; this hooks will skips toots with contain less than 20 words
|
;;; this hooks will skips toots with contain less than 20 words
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
(_ "~a ~a wrote:~%~a ~a~2%")
|
(_ "~a ~a wrote:~%~a ~a~2%")
|
||||||
formatted-created-date
|
formatted-created-date
|
||||||
username
|
username
|
||||||
content
|
(html-utils:html->text content)
|
||||||
attachment-type))))))
|
attachment-type))))))
|
||||||
|
|
||||||
(defmethod resync-rows-db ((object chats-list-window)
|
(defmethod resync-rows-db ((object chats-list-window)
|
||||||
|
@ -258,6 +258,9 @@ produces a tree and graft the latter on `existing-tree'"
|
|||||||
(defparameter *chats-list-keymap* (make-starting-comand-tree)
|
(defparameter *chats-list-keymap* (make-starting-comand-tree)
|
||||||
"The keymap for window that shows all the chats.")
|
"The keymap for window that shows all the chats.")
|
||||||
|
|
||||||
|
(defparameter *chat-message-keymap* (make-starting-comand-tree)
|
||||||
|
"The keymap for message-window when shows chat.")
|
||||||
|
|
||||||
(defun define-key (key-sequence function &optional (existing-keymap *global-keymap*))
|
(defun define-key (key-sequence function &optional (existing-keymap *global-keymap*))
|
||||||
"Define a key sequence that trigger a function:
|
"Define a key sequence that trigger a function:
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ etc.) happened"
|
|||||||
(declare (ignore w e))
|
(declare (ignore w e))
|
||||||
(incf-dt)
|
(incf-dt)
|
||||||
(incf-ticks)
|
(incf-ticks)
|
||||||
;(scheduled-events:run-scheduled-events *ticks*)
|
(scheduled-events:run-scheduled-events *ticks*)
|
||||||
(program-events:dispatch-program-events)
|
(program-events:dispatch-program-events)
|
||||||
(windows:calculate-all +dt+)))))
|
(windows:calculate-all +dt+)))))
|
||||||
|
|
||||||
|
@ -37,6 +37,10 @@
|
|||||||
(eq (keybindings window)
|
(eq (keybindings window)
|
||||||
keybindings:*gemini-message-keymap*))
|
keybindings:*gemini-message-keymap*))
|
||||||
|
|
||||||
|
(defun display-chat-p (window)
|
||||||
|
(eq (keybindings window)
|
||||||
|
keybindings:*chat-message-keymap*))
|
||||||
|
|
||||||
(defun prepare-for-display-status-mode (window)
|
(defun prepare-for-display-status-mode (window)
|
||||||
(setf (keybindings window)
|
(setf (keybindings window)
|
||||||
keybindings:*message-keymap*))
|
keybindings:*message-keymap*))
|
||||||
|
@ -1388,6 +1388,7 @@
|
|||||||
:*open-gemini-link-keymap*
|
:*open-gemini-link-keymap*
|
||||||
:*gemini-downloads-keymap*
|
:*gemini-downloads-keymap*
|
||||||
:*chats-list-keymap*
|
:*chats-list-keymap*
|
||||||
|
:*chat-message-keymap*
|
||||||
:define-key
|
:define-key
|
||||||
:init-keyboard-mapping
|
:init-keyboard-mapping
|
||||||
:find-keymap-node
|
:find-keymap-node
|
||||||
@ -1761,6 +1762,7 @@
|
|||||||
:source-text
|
:source-text
|
||||||
:metadata
|
:metadata
|
||||||
:display-gemini-text-p
|
:display-gemini-text-p
|
||||||
|
:display-chat-p
|
||||||
:prepare-for-display-status-mode
|
:prepare-for-display-status-mode
|
||||||
:append-source-text
|
:append-source-text
|
||||||
:scroll-down
|
:scroll-down
|
||||||
|
@ -68,6 +68,10 @@
|
|||||||
|
|
||||||
(defgeneric process-event (object))
|
(defgeneric process-event (object))
|
||||||
|
|
||||||
|
#+debug
|
||||||
|
(defmethod process-event :before (object)
|
||||||
|
(misc:dbg "processing event ~a" object))
|
||||||
|
|
||||||
(defgeneric reinitialize-id (object))
|
(defgeneric reinitialize-id (object))
|
||||||
|
|
||||||
(defmacro wrapped-in-lock ((queue) &body body)
|
(defmacro wrapped-in-lock ((queue) &body body)
|
||||||
@ -1016,9 +1020,9 @@
|
|||||||
(dolist (chat all-chats)
|
(dolist (chat all-chats)
|
||||||
(let* ((chat-id (db:row-id chat))
|
(let* ((chat-id (db:row-id chat))
|
||||||
(min-id (db:last-chat-message-id chat-id)))
|
(min-id (db:last-chat-message-id chat-id)))
|
||||||
(program-events:push-event (make-instance 'program-events:get-chat-messages-event
|
(process-event (make-instance 'program-events:get-chat-messages-event
|
||||||
:chat-id chat-id
|
:chat-id chat-id
|
||||||
:min-message-id min-id))))))
|
:min-message-id min-id))))))
|
||||||
|
|
||||||
(defclass chat-show-event (program-event)
|
(defclass chat-show-event (program-event)
|
||||||
((chat
|
((chat
|
||||||
@ -1030,9 +1034,13 @@
|
|||||||
(with-accessors ((chat chat)) object
|
(with-accessors ((chat chat)) object
|
||||||
(let* ((chat-id (db:row-id chat)))
|
(let* ((chat-id (db:row-id chat)))
|
||||||
(db:mark-all-chat-messages-read chat-id)
|
(db:mark-all-chat-messages-read chat-id)
|
||||||
|
(setf (windows:keybindings specials:*message-window*)
|
||||||
|
keybindings:*chat-message-keymap*)
|
||||||
(setf (message-window:source-text specials:*message-window*)
|
(setf (message-window:source-text specials:*message-window*)
|
||||||
(chats-list-window:chat->text chat))
|
(chats-list-window:chat->text chat))
|
||||||
(message-window:scroll-end specials:*message-window*)
|
(message-window:scroll-end specials:*message-window*)
|
||||||
|
(setf (message-window:metadata specials:*message-window*)
|
||||||
|
chat)
|
||||||
(windows:draw specials:*message-window*))))
|
(windows:draw specials:*message-window*))))
|
||||||
|
|
||||||
(defclass chat-post-message-event (program-event)
|
(defclass chat-post-message-event (program-event)
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
(define-constant +refresh-all-chats-data-frequency+ 10000 :test #'=)
|
(define-constant +refresh-all-chats-data-frequency+ 10000 :test #'=)
|
||||||
|
|
||||||
(define-constant +refresh-all-chats-messages-frequency+ 1000 :test #'=)
|
(define-constant +refresh-all-chats-messages-frequency+ 50 :test #'=)
|
||||||
|
|
||||||
(defun triggedp (ticks frequency)
|
(defun triggedp (ticks frequency)
|
||||||
(= (rem ticks frequency)
|
(= (rem ticks frequency)
|
||||||
@ -37,7 +37,11 @@
|
|||||||
|
|
||||||
(gen-scheduler-function (refresh-refresh-all-chats-messages
|
(gen-scheduler-function (refresh-refresh-all-chats-messages
|
||||||
+refresh-all-chats-messages-frequency+)
|
+refresh-all-chats-messages-frequency+)
|
||||||
(ui:update-all-chats-messages))
|
(ui:update-all-chats-messages)
|
||||||
|
(when (message-window:display-chat-p *message-window*)
|
||||||
|
(let ((show-event (make-instance 'program-events:chat-show-event
|
||||||
|
:chat (message-window:metadata *message-window*))))
|
||||||
|
(program-events:push-event show-event))))
|
||||||
|
|
||||||
(defun run-scheduled-events (ticks)
|
(defun run-scheduled-events (ticks)
|
||||||
(refresh-refresh-all-chats-messages ticks)
|
(refresh-refresh-all-chats-messages ticks)
|
||||||
|
@ -1444,6 +1444,7 @@ mot recent updated to least recent"
|
|||||||
(chat-loop chat)))
|
(chat-loop chat)))
|
||||||
|
|
||||||
(defun chat-loop (chat)
|
(defun chat-loop (chat)
|
||||||
|
"Start writing to chat"
|
||||||
(labels ((post-message (message)
|
(labels ((post-message (message)
|
||||||
(let ((event (make-instance 'program-events:chat-post-message-event
|
(let ((event (make-instance 'program-events:chat-post-message-event
|
||||||
:priority +maximum-event-priority+
|
:priority +maximum-event-priority+
|
||||||
@ -1456,8 +1457,8 @@ mot recent updated to least recent"
|
|||||||
(post-message message)
|
(post-message message)
|
||||||
(update-all-chats-messages)
|
(update-all-chats-messages)
|
||||||
(let ((show-event (make-instance 'program-events:chat-show-event
|
(let ((show-event (make-instance 'program-events:chat-show-event
|
||||||
:priority +minimum-event-priority+
|
:priority +minimum-event-priority+
|
||||||
:chat chat)))
|
:chat chat)))
|
||||||
(push-event show-event)
|
(push-event show-event)
|
||||||
(%loop))))
|
(%loop))))
|
||||||
(ask-fn ()
|
(ask-fn ()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user