Initial support for offline mode

This commit is contained in:
2022-06-19 18:23:45 -05:00
parent 7e305cdec1
commit 8d0c27d6fc
4 changed files with 66 additions and 15 deletions

View File

@@ -54,6 +54,8 @@ class W3DHub
@progressbar.value = @fraction
load_offline_applications_list if @offline_mode
push_state(States::Interface) if @offline_mode || (@progressbar.value >= 1.0 && @task_index == @tasks.size)
return if @offline_mode
@@ -188,6 +190,42 @@ class W3DHub
@tasks[:server_list][:complete] = true
end
end
def load_offline_applications_list
hash = {
applications: []
}
Store.settings[:games].each do |key, game|
app_id, channel_id = key.to_s.split("_")
app = hash[:applications].find { |a| a[:id] == app_id }
app_in_array = !app.nil?
app ||= {
id: app_id,
name: game[:name],
type: "",
category: "games",
"studio-id": "",
channels: [],
"web-links": [],
"extended-data": [{ name: "colour", value: "#353535" }]
}
channel = {
id: channel_id,
name: channel_id,
"user-level": "",
"current-version": game[:installed_version]
}
app[:channels] << channel
hash[:applications] << app unless app_in_array
end
Store.applications = Api::Applications.new(hash.to_json)
end
end
end
end