Refactor get_on_deck_entry

This commit is contained in:
Alex Ling 2020-05-19 12:05:15 +00:00
parent 16fa27e4f6
commit ff6e64f12a

View File

@ -326,25 +326,18 @@ class Title
end
def get_on_deck_entry(username)
# this assumes @entries is in order (low to high), otherwise we would need to sort first
idx_latest_read_entry_reverse = -99 # hack to set var, refactor this and `return nil if` below
@entries.reverse.each_with_index do |e, i|
if load_progress(username, e.title) > 0
idx_latest_read_entry_reverse = i
break
end
in_progress_entries = @entries.select do |e|
load_progress(username, e.title) > 0
end
return nil if idx_latest_read_entry_reverse == -99 # handle if no matching entry
latest_read_entry = @entries.reverse[idx_latest_read_entry_reverse]
if load_progress(username, latest_read_entry.title) == latest_read_entry.pages
# return next entry (if exists)
if idx_latest_read_entry_reverse - 1 >= 0
return @entries.reverse[idx_latest_read_entry_reverse - 1]
end
else # return in progress entry
return latest_read_entry
return nil if in_progress_entries.empty?
latest_read_entry = in_progress_entries[-1]
if load_progress(username, latest_read_entry.title) ==
latest_read_entry.pages
next_entry latest_read_entry
else
latest_read_entry
end
return nil
end
end