From 1f33e125f681cd0a3b4c3851c984ce3af83c30fd Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Thu, 3 Sep 2026 00:43:05 -0500 Subject: [PATCH] Stubbed Settings --- lib/worker/api/settings.rb | 78 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 lib/worker/api/settings.rb diff --git a/lib/worker/api/settings.rb b/lib/worker/api/settings.rb new file mode 100644 index 0000000..074de89 --- /dev/null +++ b/lib/worker/api/settings.rb @@ -0,0 +1,78 @@ +module W3DHubLauncher + class Worker + class Api + + # Inferred or automaticly set options + class Settings + SCHEMA = 0 + + attr_reader :schema, :preferences + + def initialize(data) + @schema = data["schema"] || SCHEMA + + @last_selected_app = data["last_selected_app"] || "ren" + @last_selected_app_channel = data["last_selected_app_channel"] || "release" + + @preferences = Preferences.new(data["preferences"]) + @applications = (data["applications"] || []).map { |app_data| Application.new(app_data) } + end + + def to_json(context = nil) + { + schema: @schema, + last_selected_app: @last_selected_app, + last_selected_app_channel: @last_selected_app_channel, + preferences: @preferences, + applications: @applications + }.to_json(context) + end + + # User explictly set options + class Preferences + SCHEMA = 0 + + def initialize(data) + @schema = data["schema"] || SCHEMA + + @language = data["language"] || "en" + @nickname = data["nickname"] || "" + @launcher_package_cache_directory = data["launcher_package_cache_directory"] || DEFAULT_PACKAGE_CACHE_PATH + @application_installation_directory = data["application_installation_directory"] || DEFAULT_APPLICATIONS_PATH + @wine_prefix_path = data["wine_prefix_path"] || "" + @wine_command = data["wine_command"] || "wine" + @winetricks_command = data["winetricks_command"] || "winetricks" + end + + def to_json(context = nil) + { + + }.to_json(context) + end + end + + # Installed application data + class Application + SCHEMA = 0 + + def initialize(data) + @schema = data["schema"] || SCHEMA + + @id = data["id"] + @channel = data["channel"] + @version = data["version"] + @installation_path = data["installation_path"] + @wine_prefix_path = data["wine_prefix_path"] + @launch_command = data["launch_command"] + end + + def to_json(context = nil) + { + + }.to_json(context) + end + end + end + end + end +end