From ff6e64f12ad350fc52844f791da027ad47da038f Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Tue, 19 May 2020 12:05:15 +0000 Subject: [PATCH] Refactor `get_on_deck_entry` --- src/library.cr | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/src/library.cr b/src/library.cr index ce19673..418102b 100644 --- a/src/library.cr +++ b/src/library.cr @@ -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