mirror of https://codeberg.org/cage/tinmop/
- prevented false positives for new message in the subscribed tags.
This commit is contained in:
parent
ea9675c832
commit
f393812207
29
src/db.lisp
29
src/db.lisp
|
@ -2759,29 +2759,32 @@ of (timeline, folder) pairs that has statuses marked for deletion."
|
||||||
name"
|
name"
|
||||||
(cl-ppcre:regex-replace +folder-tag-prefix+ folder ""))
|
(cl-ppcre:regex-replace +folder-tag-prefix+ folder ""))
|
||||||
|
|
||||||
(defun max-status-id-subscribed-tag (tag)
|
(defun max-status-id-subscribed-tag (tag &key (include-ignored t))
|
||||||
(let* ((max-status-id-row (fetch-single (select (fields (:max :status-id))
|
(let* ((max-status-id-row (fetch-single (select (fields (:max :status-id))
|
||||||
(from +table-status+)
|
(from +table-status+)
|
||||||
(where (:= :folder
|
(where (:= :folder
|
||||||
(tag->folder-name tag))))))
|
(tag->folder-name tag))))))
|
||||||
(max-status-id (second max-status-id-row))
|
(max-status-id (second max-status-id-row)))
|
||||||
(max-ignored-status-id-row (fetch-single (select (fields (:max :status-id))
|
(if (not include-ignored)
|
||||||
(from +table-ignored-status+)
|
max-status-id
|
||||||
(where (:= :folder
|
(let* ((max-ignored-status-id-row (fetch-single (select (fields (:max :status-id))
|
||||||
(tag->folder-name tag))))))
|
(from +table-ignored-status+)
|
||||||
(max-ignored-status-id (second max-ignored-status-id-row)))
|
(where (:= :folder
|
||||||
(or max-status-id
|
(tag->folder-name tag))))))
|
||||||
max-ignored-status-id)))
|
(max-ignored-status-id (second max-ignored-status-id-row)))
|
||||||
|
(or max-status-id
|
||||||
|
max-ignored-status-id)))))
|
||||||
|
|
||||||
(defun more-recent-tag-fetched-p (tag)
|
(defun more-recent-tag-fetched-p (tag)
|
||||||
"Returns the most recent message fetched that contains tag `tag', or
|
"Returns the most recent message fetched that contains tag `tag', or
|
||||||
nil if no such message exists"
|
nil if no such message exists"
|
||||||
(when-let* ((row (fetch-from-id +table-subscribed-tag+ tag)))
|
(when-let* ((row (fetch-from-id +table-subscribed-tag+ tag)))
|
||||||
(let* ((last-status-id (db-getf row :last-status-id-fetched))
|
(let* ((last-status-id (db-getf row :last-status-id-fetched))
|
||||||
(max-status-id-fetched (max-status-id-subscribed-tag tag)))
|
(max-status-id-fetched (max-status-id-subscribed-tag tag :include-ignored nil)))
|
||||||
(or (null last-status-id)
|
(or (null last-status-id)
|
||||||
(string> max-status-id-fetched
|
(and max-status-id-fetched
|
||||||
last-status-id)))))
|
(string> max-status-id-fetched
|
||||||
|
last-status-id))))))
|
||||||
|
|
||||||
(defun all-tags-with-new-message-fetched ()
|
(defun all-tags-with-new-message-fetched ()
|
||||||
"Returns the most recent messages fetched that contains subscribed tags, or
|
"Returns the most recent messages fetched that contains subscribed tags, or
|
||||||
|
@ -2790,7 +2793,7 @@ nil if no such messages exist"
|
||||||
(all-subscribed-tags-name)))
|
(all-subscribed-tags-name)))
|
||||||
|
|
||||||
(defun update-last-seen-status-with-tag (tag)
|
(defun update-last-seen-status-with-tag (tag)
|
||||||
(when-let* ((max-status-id (max-status-id-subscribed-tag tag)))
|
(when-let* ((max-status-id (max-status-id-subscribed-tag tag :include-ignored nil)))
|
||||||
(query (make-update +table-subscribed-tag+
|
(query (make-update +table-subscribed-tag+
|
||||||
(:last-status-id-fetched)
|
(:last-status-id-fetched)
|
||||||
(max-status-id)
|
(max-status-id)
|
||||||
|
|
|
@ -977,7 +977,7 @@
|
||||||
|
|
||||||
(defmethod process-event ((object tag-mark-got-messages-event))
|
(defmethod process-event ((object tag-mark-got-messages-event))
|
||||||
(loop for tag in (db:all-tags-with-new-message-fetched) do
|
(loop for tag in (db:all-tags-with-new-message-fetched) do
|
||||||
(db:mark-tag-got-new-messages tag)))
|
(db:mark-tag-got-new-messages tag)))
|
||||||
|
|
||||||
(defclass refresh-tag-window-event (program-event) ())
|
(defclass refresh-tag-window-event (program-event) ())
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue