diff --git a/public/js/reader.js b/public/js/reader.js index 012ba6f..ec8ab32 100644 --- a/public/js/reader.js +++ b/public/js/reader.js @@ -57,12 +57,12 @@ $('#page-select').change(function(){ jumpTo(parseInt($('#page-select').val())); }); function showControl(idx) { - $('#page-select').val(idx + 1); + $('#page-select').val(idx); UIkit.modal($('#modal-sections')).show(); } function jumpTo(page) { var ary = window.location.pathname.split('/'); - ary[ary.length - 1] = page - 1; + ary[ary.length - 1] = page; ary.shift(); // remove leading `/` ary.unshift(window.location.origin); window.location.replace(ary.join('/')); diff --git a/src/library.cr b/src/library.cr index 65ea215..89fa9bc 100644 --- a/src/library.cr +++ b/src/library.cr @@ -32,7 +32,7 @@ class Entry MIME.from_filename? e.filename } .size - @cover_url = "/api/page/#{@book_title}/#{title}/0" + @cover_url = "/api/page/#{@book_title}/#{title}/1" end def read_page(page_num) Zip::File.open @zip_path do |file| @@ -42,7 +42,7 @@ class Entry MIME.from_filename? e.filename } .sort { |a, b| a.filename <=> b.filename } - .[page_num] + .[page_num - 1] page.open do |io| slice = Bytes.new page.uncompressed_size bytes_read = io.read_fully? slice diff --git a/src/mango.cr b/src/mango.cr index b3a93e6..72e501c 100644 --- a/src/mango.cr +++ b/src/mango.cr @@ -163,11 +163,11 @@ get "/reader/:title/:entry" do |env| # load progress username = get_username env - page = (title.load_progress username, entry.title) - 1 + page = title.load_progress username, entry.title # we go back 2 * `IMGS_PER_PAGE` pages. the infinite scroll library # perloads a few pages in advance, and the user might not have actually # read them - page = [page - 2 * IMGS_PER_PAGE, 0].max + page = [page - 2 * IMGS_PER_PAGE, 1].max env.redirect "/reader/#{title.title}/#{entry.title}/#{page}" rescue @@ -180,19 +180,19 @@ get "/reader/:title/:entry/:page" do |env| title = (library.get_title env.params.url["title"]).not_nil! entry = (title.get_entry env.params.url["entry"]).not_nil! page = env.params.url["page"].to_i - raise "" if page >= entry.pages + raise "" if page > entry.pages # save progress username = get_username env - title.save_progress username, entry.title, page + 1 + title.save_progress username, entry.title, page - pages = (page...[entry.pages, page + IMGS_PER_PAGE].min) + pages = (page...[entry.pages + 1, page + IMGS_PER_PAGE].min) urls = pages.map { |idx| "/api/page/#{title.title}/#{entry.title}/#{idx}" } reader_urls = pages.map { |idx| "/reader/#{title.title}/#{entry.title}/#{idx}" } next_page = page + IMGS_PER_PAGE - next_url = next_page >= entry.pages ? nil : + next_url = next_page > entry.pages ? nil : "/reader/#{title.title}/#{entry.title}/#{next_page}" exit_url = "/book/#{title.title}"