mirror of
https://codeberg.org/cage/tinmop/
synced 2025-02-01 04:26:47 +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*)
|
||||
|
||||
;; 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
|
||||
|
||||
;;; this hooks will skips toots with contain less than 20 words
|
||||
|
@ -64,7 +64,7 @@
|
||||
(_ "~a ~a wrote:~%~a ~a~2%")
|
||||
formatted-created-date
|
||||
username
|
||||
content
|
||||
(html-utils:html->text content)
|
||||
attachment-type))))))
|
||||
|
||||
(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)
|
||||
"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*))
|
||||
"Define a key sequence that trigger a function:
|
||||
|
||||
|
@ -56,7 +56,7 @@ etc.) happened"
|
||||
(declare (ignore w e))
|
||||
(incf-dt)
|
||||
(incf-ticks)
|
||||
;(scheduled-events:run-scheduled-events *ticks*)
|
||||
(scheduled-events:run-scheduled-events *ticks*)
|
||||
(program-events:dispatch-program-events)
|
||||
(windows:calculate-all +dt+)))))
|
||||
|
||||
|
@ -37,6 +37,10 @@
|
||||
(eq (keybindings window)
|
||||
keybindings:*gemini-message-keymap*))
|
||||
|
||||
(defun display-chat-p (window)
|
||||
(eq (keybindings window)
|
||||
keybindings:*chat-message-keymap*))
|
||||
|
||||
(defun prepare-for-display-status-mode (window)
|
||||
(setf (keybindings window)
|
||||
keybindings:*message-keymap*))
|
||||
|
@ -1388,6 +1388,7 @@
|
||||
:*open-gemini-link-keymap*
|
||||
:*gemini-downloads-keymap*
|
||||
:*chats-list-keymap*
|
||||
:*chat-message-keymap*
|
||||
:define-key
|
||||
:init-keyboard-mapping
|
||||
:find-keymap-node
|
||||
@ -1761,6 +1762,7 @@
|
||||
:source-text
|
||||
:metadata
|
||||
:display-gemini-text-p
|
||||
:display-chat-p
|
||||
:prepare-for-display-status-mode
|
||||
:append-source-text
|
||||
:scroll-down
|
||||
|
@ -68,6 +68,10 @@
|
||||
|
||||
(defgeneric process-event (object))
|
||||
|
||||
#+debug
|
||||
(defmethod process-event :before (object)
|
||||
(misc:dbg "processing event ~a" object))
|
||||
|
||||
(defgeneric reinitialize-id (object))
|
||||
|
||||
(defmacro wrapped-in-lock ((queue) &body body)
|
||||
@ -1016,7 +1020,7 @@
|
||||
(dolist (chat all-chats)
|
||||
(let* ((chat-id (db:row-id chat))
|
||||
(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
|
||||
:min-message-id min-id))))))
|
||||
|
||||
@ -1030,9 +1034,13 @@
|
||||
(with-accessors ((chat chat)) object
|
||||
(let* ((chat-id (db:row-id chat)))
|
||||
(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*)
|
||||
(chats-list-window:chat->text chat))
|
||||
(message-window:scroll-end specials:*message-window*)
|
||||
(setf (message-window:metadata specials:*message-window*)
|
||||
chat)
|
||||
(windows:draw specials:*message-window*))))
|
||||
|
||||
(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-messages-frequency+ 1000 :test #'=)
|
||||
(define-constant +refresh-all-chats-messages-frequency+ 50 :test #'=)
|
||||
|
||||
(defun triggedp (ticks frequency)
|
||||
(= (rem ticks frequency)
|
||||
@ -37,7 +37,11 @@
|
||||
|
||||
(gen-scheduler-function (refresh-refresh-all-chats-messages
|
||||
+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)
|
||||
(refresh-refresh-all-chats-messages ticks)
|
||||
|
@ -1444,6 +1444,7 @@ mot recent updated to least recent"
|
||||
(chat-loop chat)))
|
||||
|
||||
(defun chat-loop (chat)
|
||||
"Start writing to chat"
|
||||
(labels ((post-message (message)
|
||||
(let ((event (make-instance 'program-events:chat-post-message-event
|
||||
:priority +maximum-event-priority+
|
||||
|
Loading…
x
Reference in New Issue
Block a user