diff --git a/src/library/library.cr b/src/library/library.cr index a5a4a80..30e93b2 100644 --- a/src/library/library.cr +++ b/src/library/library.cr @@ -51,11 +51,6 @@ class Library def sorted_titles(username, opt : SortOptions? = nil) if opt.nil? opt = SortOptions.from_info_json @dir, username - else - TitleInfo.new @dir do |info| - info.sort_by[username] = opt.to_tuple - info.save - end end # Helper function from src/util/util.cr diff --git a/src/library/title.cr b/src/library/title.cr index 2983a69..aa4a479 100644 --- a/src/library/title.cr +++ b/src/library/title.cr @@ -1,3 +1,4 @@ +require "digest" require "../archive" class Title @@ -329,11 +330,6 @@ class Title def sorted_entries(username, opt : SortOptions? = nil) if opt.nil? opt = SortOptions.from_info_json @dir, username - else - TitleInfo.new @dir do |info| - info.sort_by[username] = opt.to_tuple - info.save - end end case opt.not_nil!.method diff --git a/src/routes/main.cr b/src/routes/main.cr index 57917bb..4aa7da6 100644 --- a/src/routes/main.cr +++ b/src/routes/main.cr @@ -41,7 +41,7 @@ struct MainRouter username = get_username env sort_opt = SortOptions.from_info_json Library.default.dir, username - get_sort_opt + get_and_save_sort_opt Library.default.dir titles = Library.default.sorted_titles username, sort_opt percentage = titles.map &.load_percentage username @@ -59,12 +59,12 @@ struct MainRouter username = get_username env sort_opt = SortOptions.from_info_json title.dir, username - get_sort_opt + get_and_save_sort_opt title.dir entries = title.sorted_entries username, sort_opt - percentage = title.load_percentage_for_all_entries username, sort_opt title_percentage = title.titles.map &.load_percentage username + layout "title" rescue e Logger.error e diff --git a/src/util/web.cr b/src/util/web.cr index 12459e5..5704ea8 100644 --- a/src/util/web.cr +++ b/src/util/web.cr @@ -107,6 +107,26 @@ macro get_sort_opt end end +macro get_and_save_sort_opt(dir) + sort_method = env.params.query["sort"]? + + if sort_method + is_ascending = true + + ascend = env.params.query["ascend"]? + if ascend && ascend.to_i? == 0 + is_ascending = false + end + + sort_opt = SortOptions.new sort_method, is_ascending + + TitleInfo.new {{dir}} do |info| + info.sort_by[username] = sort_opt.to_tuple + info.save + end + end +end + module HTTP class Client private def self.exec(uri : URI, tls : TLSContext = nil)