mirror of https://codeberg.org/cage/tinmop/
- [gemini]
- added command to refresh all gemlogs; - added scheduled refresh of all gemlogs; - fixed sorting of gemlog posts.
This commit is contained in:
parent
f09b0f4aa3
commit
44b6c62e44
|
@ -145,7 +145,9 @@
|
||||||
|
|
||||||
(define-key "M-c" #'open-chats-list-window)
|
(define-key "M-c" #'open-chats-list-window)
|
||||||
|
|
||||||
(define-key "M-g s" #'gemini-open-gemlog-window)
|
(define-key "M-g s o" #'gemini-open-gemlog-window)
|
||||||
|
|
||||||
|
(define-key "M-g s r" #'gemlog-refresh-all)
|
||||||
|
|
||||||
;; focus
|
;; focus
|
||||||
|
|
||||||
|
|
26
src/db.lisp
26
src/db.lisp
|
@ -2947,6 +2947,8 @@ than `days-in-the-past' days (default: `(swconf:config-purge-cache-days-offset)'
|
||||||
|
|
||||||
(gen-access-message-row post-link :post-link)
|
(gen-access-message-row post-link :post-link)
|
||||||
|
|
||||||
|
(gen-access-message-row post-seenp :seenp)
|
||||||
|
|
||||||
(defun gemlog-entries (gemlog-url &key (unseen-only nil) (seen-only nil))
|
(defun gemlog-entries (gemlog-url &key (unseen-only nil) (seen-only nil))
|
||||||
(assert (not (and unseen-only
|
(assert (not (and unseen-only
|
||||||
seen-only)))
|
seen-only)))
|
||||||
|
@ -2972,18 +2974,22 @@ than `days-in-the-past' days (default: `(swconf:config-purge-cache-days-offset)'
|
||||||
unordered-rows))
|
unordered-rows))
|
||||||
(t
|
(t
|
||||||
unordered-rows))))
|
unordered-rows))))
|
||||||
(num:multisort actual-rows (list (num:gen-multisort-test string>
|
(num:multisort actual-rows (list (num:gen-multisort-test (lambda (a b)
|
||||||
|
(if (and (db-nil-p a)
|
||||||
|
(db-nil-p b))
|
||||||
|
a
|
||||||
|
(db-nil-p a)))
|
||||||
|
(lambda (a b)
|
||||||
|
(if (and (db-nil-p a)
|
||||||
|
(db-nil-p b))
|
||||||
|
b
|
||||||
|
(db-nil-p b)))
|
||||||
|
(lambda (a)
|
||||||
|
(db-getf a :seenp)))
|
||||||
|
(num:gen-multisort-test string>
|
||||||
string<
|
string<
|
||||||
(lambda (a)
|
(lambda (a)
|
||||||
(row-post-date a)))
|
(row-post-date a)))))))
|
||||||
(num:gen-multisort-test (lambda (a b)
|
|
||||||
(declare (ignore a))
|
|
||||||
(db-nil-p b))
|
|
||||||
(lambda (a b)
|
|
||||||
(declare (ignore b))
|
|
||||||
(db-nil-p a))
|
|
||||||
(lambda (a)
|
|
||||||
(db-getf a :seenp)))))))
|
|
||||||
|
|
||||||
(defun delete-gemlog-entry (gemlog-url)
|
(defun delete-gemlog-entry (gemlog-url)
|
||||||
(query (delete-from +table-gemlog-entries+ (where (:= :url gemlog-url)))))
|
(query (delete-from +table-gemlog-entries+ (where (:= :url gemlog-url)))))
|
||||||
|
|
|
@ -966,6 +966,7 @@
|
||||||
:row-post-date
|
:row-post-date
|
||||||
:row-post-title
|
:row-post-title
|
||||||
:row-post-link
|
:row-post-link
|
||||||
|
:row-post-seenp
|
||||||
:gemlog-entries
|
:gemlog-entries
|
||||||
:delete-gemlog-entry))
|
:delete-gemlog-entry))
|
||||||
|
|
||||||
|
@ -1351,6 +1352,7 @@
|
||||||
:gemini-gemlog-subscribe-event
|
:gemini-gemlog-subscribe-event
|
||||||
:gemlog-cancel-subscription-event
|
:gemlog-cancel-subscription-event
|
||||||
:gemlog-show-event
|
:gemlog-show-event
|
||||||
|
:gemlog-refresh-all-event
|
||||||
:get-chat-messages-event
|
:get-chat-messages-event
|
||||||
:get-chats-event
|
:get-chats-event
|
||||||
:chat-show-event
|
:chat-show-event
|
||||||
|
@ -2391,6 +2393,7 @@
|
||||||
:gemlogs-subscription-go-down
|
:gemlogs-subscription-go-down
|
||||||
:close-gemlog-window
|
:close-gemlog-window
|
||||||
:show-gemlog-to-screen
|
:show-gemlog-to-screen
|
||||||
|
:gemlog-refresh-all
|
||||||
:gemlog-cancel-subscription
|
:gemlog-cancel-subscription
|
||||||
:send-to-pipe
|
:send-to-pipe
|
||||||
:send-message-to-pipe))
|
:send-message-to-pipe))
|
||||||
|
|
|
@ -1199,11 +1199,13 @@
|
||||||
(encoded-date (db-utils:encode-datetime-string date))
|
(encoded-date (db-utils:encode-datetime-string date))
|
||||||
(title (text-utils:strcat (format-time encoded-date date-format)
|
(title (text-utils:strcat (format-time encoded-date date-format)
|
||||||
" "
|
" "
|
||||||
(db:row-post-title entry))))
|
(db:row-post-title entry)))
|
||||||
|
(seenp (db:row-post-seenp entry)))
|
||||||
(format stream
|
(format stream
|
||||||
"~a~%"
|
(_ "~a ~:[(not opened)~;(opened)~]~%")
|
||||||
(gemini-parser:make-gemini-link link
|
(gemini-parser:make-gemini-link link
|
||||||
title))))))
|
title)
|
||||||
|
seenp)))))
|
||||||
(url (iri:iri-parse gemlog-url))
|
(url (iri:iri-parse gemlog-url))
|
||||||
(parsed (gemini-parser:parse-gemini-file gemini-page))
|
(parsed (gemini-parser:parse-gemini-file gemini-page))
|
||||||
(links (gemini-parser:sexp->links parsed
|
(links (gemini-parser:sexp->links parsed
|
||||||
|
@ -1220,6 +1222,13 @@
|
||||||
keybindings:*gemini-message-keymap*)
|
keybindings:*gemini-message-keymap*)
|
||||||
(windows:draw specials:*message-window*))))
|
(windows:draw specials:*message-window*))))
|
||||||
|
|
||||||
|
(defclass gemlog-refresh-all-event (program-event) ())
|
||||||
|
|
||||||
|
(defmethod process-event ((object gemlog-refresh-all-event))
|
||||||
|
(let ((all-subscribed-gemlogs (mapcar #'db:row-url (db:gemini-all-subscriptions))))
|
||||||
|
(loop for subscription in all-subscribed-gemlogs do
|
||||||
|
(gemini-subscription:refresh subscription))))
|
||||||
|
|
||||||
;;;; pleroma
|
;;;; pleroma
|
||||||
|
|
||||||
(defclass get-chat-messages-event (program-event)
|
(defclass get-chat-messages-event (program-event)
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
|
|
||||||
(define-constant +refresh-all-chats-messages-frequency+ 50 :test #'=)
|
(define-constant +refresh-all-chats-messages-frequency+ 50 :test #'=)
|
||||||
|
|
||||||
|
(define-constant +refresh-gemlog-subscriptions-frequency+ 50000 :test #'=)
|
||||||
|
|
||||||
(defun triggedp (ticks frequency)
|
(defun triggedp (ticks frequency)
|
||||||
(= (rem ticks frequency)
|
(= (rem ticks frequency)
|
||||||
0))
|
0))
|
||||||
|
@ -30,12 +32,16 @@
|
||||||
(when (triggedp ticks ,frequency)
|
(when (triggedp ticks ,frequency)
|
||||||
,@body-if-triggered)))
|
,@body-if-triggered)))
|
||||||
|
|
||||||
(gen-scheduler-function (refresh-refresh-all-chats-data
|
(gen-scheduler-function (refresh-all-chats-data
|
||||||
+refresh-all-chats-data-frequency+)
|
+refresh-all-chats-data-frequency+)
|
||||||
(ui:notify (_ "Updating all chats."))
|
(ui:notify (_ "Updating all chats."))
|
||||||
(ui:update-all-chats-data))
|
(ui:update-all-chats-data))
|
||||||
|
|
||||||
(gen-scheduler-function (refresh-refresh-all-chats-messages
|
(gen-scheduler-function (refresh-gemlog-subscriptions
|
||||||
|
+refresh-gemlog-subscriptions-frequency+)
|
||||||
|
(ui:gemlog-refresh-all))
|
||||||
|
|
||||||
|
(gen-scheduler-function (refresh-all-chats-messages
|
||||||
+refresh-all-chats-messages-frequency+)
|
+refresh-all-chats-messages-frequency+)
|
||||||
(when (message-window:display-chat-p *message-window*)
|
(when (message-window:display-chat-p *message-window*)
|
||||||
(ui:update-all-chats-messages)
|
(ui:update-all-chats-messages)
|
||||||
|
@ -44,5 +50,6 @@
|
||||||
(program-events:push-event show-event))))
|
(program-events:push-event show-event))))
|
||||||
|
|
||||||
(defun run-scheduled-events (ticks)
|
(defun run-scheduled-events (ticks)
|
||||||
(refresh-refresh-all-chats-messages ticks)
|
(refresh-all-chats-messages ticks)
|
||||||
(refresh-refresh-all-chats-data ticks))
|
(refresh-all-chats-data ticks)
|
||||||
|
(refresh-gemlog-subscriptions ticks))
|
||||||
|
|
|
@ -1267,6 +1267,9 @@ certificate).
|
||||||
(program-events:push-event event)
|
(program-events:push-event event)
|
||||||
(focus-to-message-window))))
|
(focus-to-message-window))))
|
||||||
|
|
||||||
|
(defun gemlog-refresh-all ()
|
||||||
|
(with-blocking-notify-procedure ((_ "updating gemlog's subscriptions"))
|
||||||
|
(program-events:push-event (make-instance 'program-events:gemlog-refresh-all-event))))
|
||||||
|
|
||||||
(defun prompt-for-username (prompt complete-function event
|
(defun prompt-for-username (prompt complete-function event
|
||||||
notify-starting-message
|
notify-starting-message
|
||||||
|
|
Loading…
Reference in New Issue