Simplify chapter retrieval for new stories
This commit is contained in:
parent
742be4b6c4
commit
5f62ace3be
1 changed files with 9 additions and 4 deletions
|
|
@ -1,5 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'digest'
|
||||
require_relative 'light/tag'
|
||||
|
||||
module FicTracker::Models
|
||||
|
|
@ -80,7 +81,7 @@ module FicTracker::Models
|
|||
end
|
||||
to_keep << aut unless id
|
||||
end
|
||||
to_remove.delete aut.id if id
|
||||
to_remove.delete aut.id
|
||||
end
|
||||
|
||||
if id
|
||||
|
|
@ -107,6 +108,7 @@ module FicTracker::Models
|
|||
latest_chapter_at = self.published_at || Time.at(0)
|
||||
|
||||
to_add = []
|
||||
to_keep = []
|
||||
to_remove = self.chapters.map(&:id)
|
||||
|
||||
entries.each do |entry|
|
||||
|
|
@ -117,8 +119,9 @@ module FicTracker::Models
|
|||
chapter.set(**entry)
|
||||
else
|
||||
chapter = FicTracker::Models::Chapter.new(**entry)
|
||||
to_add << chapter
|
||||
to_add << chapter if id
|
||||
end
|
||||
to_keep << chapter unless id
|
||||
to_remove.delete chapter.id
|
||||
end
|
||||
|
||||
|
|
@ -135,11 +138,13 @@ module FicTracker::Models
|
|||
|
||||
update(updated_at: latest_chapter_at) if latest_chapter_at > Time.at(0) && (updated_at.nil? || latest_chapter_at >= updated_at)
|
||||
else
|
||||
@chapters = (@chapters || []) + to_add - to_remove
|
||||
@chapters = to_keep
|
||||
end
|
||||
end
|
||||
|
||||
def ensure_fully_loaded
|
||||
return backend.load_full_story(self) unless id
|
||||
|
||||
refresh_content
|
||||
refresh_metadata
|
||||
|
||||
|
|
@ -179,7 +184,7 @@ module FicTracker::Models
|
|||
end
|
||||
|
||||
def etag
|
||||
chapters.select { |c| c.etag }.compact.last&.etag
|
||||
Digest::SHA1.hexdigest(chapters.map(&:etag).join('|'))
|
||||
end
|
||||
|
||||
def cache_key
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue