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
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'digest'
|
||||||
require_relative 'light/tag'
|
require_relative 'light/tag'
|
||||||
|
|
||||||
module FicTracker::Models
|
module FicTracker::Models
|
||||||
|
|
@ -80,7 +81,7 @@ module FicTracker::Models
|
||||||
end
|
end
|
||||||
to_keep << aut unless id
|
to_keep << aut unless id
|
||||||
end
|
end
|
||||||
to_remove.delete aut.id if id
|
to_remove.delete aut.id
|
||||||
end
|
end
|
||||||
|
|
||||||
if id
|
if id
|
||||||
|
|
@ -107,6 +108,7 @@ module FicTracker::Models
|
||||||
latest_chapter_at = self.published_at || Time.at(0)
|
latest_chapter_at = self.published_at || Time.at(0)
|
||||||
|
|
||||||
to_add = []
|
to_add = []
|
||||||
|
to_keep = []
|
||||||
to_remove = self.chapters.map(&:id)
|
to_remove = self.chapters.map(&:id)
|
||||||
|
|
||||||
entries.each do |entry|
|
entries.each do |entry|
|
||||||
|
|
@ -117,8 +119,9 @@ module FicTracker::Models
|
||||||
chapter.set(**entry)
|
chapter.set(**entry)
|
||||||
else
|
else
|
||||||
chapter = FicTracker::Models::Chapter.new(**entry)
|
chapter = FicTracker::Models::Chapter.new(**entry)
|
||||||
to_add << chapter
|
to_add << chapter if id
|
||||||
end
|
end
|
||||||
|
to_keep << chapter unless id
|
||||||
to_remove.delete chapter.id
|
to_remove.delete chapter.id
|
||||||
end
|
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)
|
update(updated_at: latest_chapter_at) if latest_chapter_at > Time.at(0) && (updated_at.nil? || latest_chapter_at >= updated_at)
|
||||||
else
|
else
|
||||||
@chapters = (@chapters || []) + to_add - to_remove
|
@chapters = to_keep
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def ensure_fully_loaded
|
def ensure_fully_loaded
|
||||||
|
return backend.load_full_story(self) unless id
|
||||||
|
|
||||||
refresh_content
|
refresh_content
|
||||||
refresh_metadata
|
refresh_metadata
|
||||||
|
|
||||||
|
|
@ -179,7 +184,7 @@ module FicTracker::Models
|
||||||
end
|
end
|
||||||
|
|
||||||
def etag
|
def etag
|
||||||
chapters.select { |c| c.etag }.compact.last&.etag
|
Digest::SHA1.hexdigest(chapters.map(&:etag).join('|'))
|
||||||
end
|
end
|
||||||
|
|
||||||
def cache_key
|
def cache_key
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue