mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2026-03-21 19:56:14 +00:00
Compare commits
2 Commits
2d429cb834
...
38a882179c
| Author | SHA1 | Date | |
|---|---|---|---|
| 38a882179c | |||
| f350a9a937 |
@@ -76,7 +76,7 @@ class W3DHub
|
|||||||
end
|
end
|
||||||
|
|
||||||
def save_config(config = @config)
|
def save_config(config = @config)
|
||||||
File.write(CONFIG_PATH, config.to_json)
|
File.write(CONFIG_PATH, JSON.pretty_generate(config))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ class W3DHub
|
|||||||
end
|
end
|
||||||
|
|
||||||
def save_settings
|
def save_settings
|
||||||
File.write(SETTINGS_FILE_PATH, @settings.to_json)
|
File.write(SETTINGS_FILE_PATH, JSON.pretty_generate(@settings))
|
||||||
end
|
end
|
||||||
|
|
||||||
def save_application_cache(json)
|
def save_application_cache(json)
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ class W3DHub
|
|||||||
Api.on_thread(:_applications) do |applications|
|
Api.on_thread(:_applications) do |applications|
|
||||||
if applications
|
if applications
|
||||||
Store.applications = applications
|
Store.applications = applications
|
||||||
Store.settings.save_application_cache(applications.data.to_json)
|
Store.settings.save_application_cache(JSON.pretty_generate(applications.data))
|
||||||
@tasks[:applications][:complete] = true
|
@tasks[:applications][:complete] = true
|
||||||
else
|
else
|
||||||
# FIXME: Failed to retreive!
|
# FIXME: Failed to retreive!
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class W3DHub
|
|||||||
@service_status = @options[:service_status]
|
@service_status = @options[:service_status]
|
||||||
@applications = @options[:applications]
|
@applications = @options[:applications]
|
||||||
|
|
||||||
|
@account_expire = Gosu.milliseconds
|
||||||
@applications_expire = Gosu.milliseconds + APPLICATIONS_UPDATE_INTERVAL # ten minutes
|
@applications_expire = Gosu.milliseconds + APPLICATIONS_UPDATE_INTERVAL # ten minutes
|
||||||
@server_list_expire = Gosu.milliseconds + SERVER_LIST_UPDATE_INTERVAL # 5 minutes
|
@server_list_expire = Gosu.milliseconds + SERVER_LIST_UPDATE_INTERVAL # 5 minutes
|
||||||
|
|
||||||
@@ -132,6 +133,13 @@ class W3DHub
|
|||||||
end
|
end
|
||||||
|
|
||||||
hide_application_taskbar
|
hide_application_taskbar
|
||||||
|
|
||||||
|
every(3_000) do
|
||||||
|
# NOTE: each method called, internally checks whether it should act.
|
||||||
|
refresh_account_token
|
||||||
|
refresh_applications
|
||||||
|
refresh_server_list
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def draw
|
def draw
|
||||||
@@ -146,36 +154,6 @@ class W3DHub
|
|||||||
@page&.update
|
@page&.update
|
||||||
|
|
||||||
update_interface_task_status(@interface_task_update_pending) if @interface_task_update_pending
|
update_interface_task_status(@interface_task_update_pending) if @interface_task_update_pending
|
||||||
|
|
||||||
if Gosu.milliseconds >= @applications_expire
|
|
||||||
@applications_expire = Gosu.milliseconds + 30_000
|
|
||||||
|
|
||||||
Api.on_thread(:_applications) do |applications|
|
|
||||||
if applications
|
|
||||||
@applications_expire = Gosu.milliseconds + APPLICATIONS_UPDATE_INTERVAL # ten minutes
|
|
||||||
|
|
||||||
Store.applications = applications
|
|
||||||
|
|
||||||
# TODO: Signal Games and ServerBrowser that applications have been updated
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if Gosu.milliseconds >= @server_list_expire
|
|
||||||
@server_list_expire = Gosu.milliseconds + 30_000
|
|
||||||
|
|
||||||
Api.on_thread(:server_list, 2) do |list|
|
|
||||||
if list
|
|
||||||
@server_list_expire = Gosu.milliseconds + SERVER_LIST_UPDATE_INTERVAL # five minutes
|
|
||||||
|
|
||||||
Store.server_list_last_fetch = Gosu.milliseconds
|
|
||||||
|
|
||||||
Api::ServerListUpdater.instance.refresh_server_list(list)
|
|
||||||
|
|
||||||
BackgroundWorker.foreground_job(-> {}, ->(_) { States::Interface.instance&.update_server_browser(nil, :refresh_all) })
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def button_down(id)
|
def button_down(id)
|
||||||
@@ -274,6 +252,63 @@ class W3DHub
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def refresh_account_token
|
||||||
|
return if Gosu.milliseconds < @account_expire
|
||||||
|
return unless account = Store.account
|
||||||
|
|
||||||
|
@account_expire = Gosu.milliseconds + 30_000
|
||||||
|
|
||||||
|
if (account.access_token_expiry - Time.now) / 60 <= 60 * 3 # Refresh if token expires within 3 hours
|
||||||
|
logger.info(LOG_TAG) { "Refreshing user login..." }
|
||||||
|
|
||||||
|
Api.on_thread(:refresh_user_login, account.refresh_token) do |refreshed_account|
|
||||||
|
if refreshed_account
|
||||||
|
Store.account = refreshed_account
|
||||||
|
|
||||||
|
Store.settings[:account][:data] = refreshed_account
|
||||||
|
else
|
||||||
|
Store.settings[:account] = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
Store.settings.save_settings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def refresh_applications
|
||||||
|
return if Gosu.milliseconds < @applications_expire
|
||||||
|
|
||||||
|
@applications_expire = Gosu.milliseconds + 30_000
|
||||||
|
|
||||||
|
Api.on_thread(:_applications) do |applications|
|
||||||
|
if applications
|
||||||
|
@applications_expire = Gosu.milliseconds + APPLICATIONS_UPDATE_INTERVAL # ten minutes
|
||||||
|
|
||||||
|
Store.applications = applications
|
||||||
|
|
||||||
|
# TODO: Signal Games and ServerBrowser that applications have been updated
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def refresh_server_list
|
||||||
|
return if Gosu.milliseconds < @server_list_expire
|
||||||
|
|
||||||
|
@server_list_expire = Gosu.milliseconds + 30_000
|
||||||
|
|
||||||
|
Api.on_thread(:server_list, 2) do |list|
|
||||||
|
if list
|
||||||
|
@server_list_expire = Gosu.milliseconds + SERVER_LIST_UPDATE_INTERVAL # five minutes
|
||||||
|
|
||||||
|
Store.server_list_last_fetch = Gosu.milliseconds
|
||||||
|
|
||||||
|
Api::ServerListUpdater.instance.refresh_server_list(list)
|
||||||
|
|
||||||
|
BackgroundWorker.foreground_job(-> {}, ->(_) { States::Interface.instance&.update_server_browser(nil, :refresh_all) })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user