- save/load reading progress

This commit is contained in:
Alex Ling
2020-02-14 03:22:12 +00:00
parent 042df2bf1f
commit 5534b9bcdf
4 changed files with 100 additions and 13 deletions

View File

@@ -70,7 +70,70 @@ class Title
def get_entry(name)
@entries.find { |e| e.title == name }
end
def save_progress(username, entry, page)
info = TitleInfo.new @dir
if info.progress[username]?.nil?
info.progress[username] = {entry => page}
info.save @dir
return
end
info.progress[username][entry] = page
info.save @dir
end
def load_progress(username, entry : String)
info = TitleInfo.new @dir
if info.progress[username]?.nil?
return 0
end
if info.progress[username][entry]?.nil?
return 0
end
info.progress[username][entry]
end
def load_percetage(username, entry : String)
info = TitleInfo.new @dir
page = load_progress username, entry
entry_obj = get_entry entry
return 0 if entry_obj.nil?
page / entry_obj.pages
end
def load_percetage(username)
read_pages = 0
total_pages = 0
@entries.each do |e|
read_pages += load_progress username, e.title
total_pages += e.pages
end
read_pages / total_pages
end
end
class TitleInfo
# { user1: { entry1: 10, entry2: 0 } }
include JSON::Serializable
@[JSON::Field(key: "comment")]
property comment = "Generated by Mango. DO NOT EDIT!"
@[JSON::Field(key: "progress")]
property progress : Hash(String, Hash(String, Int32))
def initialize(title_dir)
info = nil
json_path = File.join title_dir, "info.json"
if File.exists? json_path
info = TitleInfo.from_json File.read json_path
else
info = TitleInfo.from_json "{\"progress\": {}}"
end
@progress = info.progress.clone
end
def save(title_dir)
json_path = File.join title_dir, "info.json"
File.write json_path, self.to_pretty_json
end
end
class Library