Simplify chapter retrieval for new stories

This commit is contained in:
Alexander Olofsson 2024-07-12 07:53:47 +02:00
parent 742be4b6c4
commit 5f62ace3be
Signed by: ace
GPG key ID: D439C9470CB04C73

View file

@ -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