1
0
Fork 0

- added code to try to recover from a failed tag request.

This commit is contained in:
cage 2022-11-12 14:12:45 +01:00
parent ccff6616c4
commit c0cbe8f519
3 changed files with 45 additions and 28 deletions

View File

@ -377,14 +377,25 @@ Returns nil if the user did not provided a server in the configuration file"
(defun-api-call get-timeline-tag (tag &key min-id (limit 20))
"Gets messages that contains tags identified by parameter `tag'"
(tooter:timeline-tag *client*
tag
:local nil
:only-media nil
:max-id nil
:since-id nil
:min-id min-id
:limit limit))
(restart-case
(tooter:timeline-tag *client*
tag
:local nil
:only-media nil
:max-id nil
:since-id nil
:min-id min-id
:limit limit)
(retry-ignoring-min-id ()
(ignore-errors
(tooter:timeline-tag *client*
tag
:local nil
:only-media nil
:max-id nil
:since-id nil
:min-id nil
:limit limit)))))
(defun-api-call update-timeline-tag (tag folder &key
(recover-count 0)
@ -395,22 +406,22 @@ Returns nil if the user did not provided a server in the configuration file"
reflectings the changes in the timeline (saves messages in the
database etc.)"
(when tag
(let* ((timeline-statuses (get-timeline-tag tag
:min-id min-id
:limit limit))
(trees (if command-line:*update-timeline-climb-message-tree*
(flatten (loop
for node-status in timeline-statuses
collect
(expand-status-tree node-status)))
timeline-statuses))
(save-timeline-in-db-event (make-instance 'program-events:save-timeline-in-db-event
:payload trees
:timeline-type db:+federated-timeline+
:folder folder
:localp nil
:min-id min-id
:recover-count recover-count)))
(when-let* ((timeline-statuses (get-timeline-tag tag
:min-id min-id
:limit limit))
(trees (if command-line:*update-timeline-climb-message-tree*
(flatten (loop
for node-status in timeline-statuses
collect
(expand-status-tree node-status)))
timeline-statuses))
(save-timeline-in-db-event (make-instance 'program-events:save-timeline-in-db-event
:payload trees
:timeline-type db:+federated-timeline+
:folder folder
:localp nil
:min-id min-id
:recover-count recover-count)))
(update-pagination-statuses-so-far timeline-statuses
db:+default-tag-timeline+
folder

View File

@ -21,11 +21,11 @@
(defun safe-parse-number (maybe-number &key (fix-fn #'(lambda (e) (declare (ignore e)) nil)))
(handler-bind ((error
(lambda(e)
(lambda (e)
(return-from safe-parse-number (funcall fix-fn e)))))
(if (or (not (stringp maybe-number))
(string= maybe-number "-"))
(error "Paring a non string element")
(error "Parsing a non string element")
(parse-number:parse-number maybe-number))))
(defun parse-number-default (maybe-number default)

View File

@ -473,7 +473,7 @@ Metadata includes:
(setf intersect-sorted
(remove window intersect-sorted))
(setf intersect-sorted
(remove-if-not (lambda(a) (typep a 'main-window::focus-marked-window))
(remove-if-not (lambda (a) (typep a 'main-window::focus-marked-window))
intersect-sorted))
(when intersect-sorted
(remove-focus-to-all-windows)
@ -1025,7 +1025,13 @@ If some posts was deleted before, download them again."
(let* ((all-tags (db:all-subscribed-tags-name))
(all-paginations (db:all-tag-paginations-status all-tags)))
(flet ((update ()
(client:update-subscribed-tags all-tags all-paginations)
(handler-bind ((tooter:request-failed
(lambda (e)
(notify (format nil
(_ "Error getting the latest unread messages for tag ~a, trying fetching the latest")
(tooter:url e)))
(invoke-restart 'api-client::retry-ignoring-min-id))))
(client:update-subscribed-tags all-tags all-paginations))
(let ((update-got-message-event
(make-instance 'tag-mark-got-messages-event))
(notify-event