mirror of
https://github.com/hkalexling/Mango.git
synced 2026-03-20 00:00:48 -04:00
- save/load reading progress
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user