API/Autodoc/Files/RuStoreGodotAppUpdate.gd.en.md
Source code
# Currently supported: delayed, silent (without RuStore UI), and immediate update.
class_name RuStoreGodotAppUpdateManager extends Object
const SINGLETON_NAME = "RuStoreGodotAppUpdate"
const METRIC_TYPE = "godot"
# @brief Action performed on successful completion of get_app_update_info.
signal on_get_app_update_info_success
# @brief Action performed on get_app_update_info error.
signal on_get_app_update_info_failure
# @brief Action performed on successful completion of start_update_flow_*.
signal on_start_update_flow_success
# @brief Action performed on start_update_flow_* error.
signal on_start_update_flow_failure
# @brief Action performed on complete_update_* error.
signal on_complete_update_failure
# @brief Update state callback.
signal on_state_updated
var _isInitialized: bool = false
var _clientWrapper: Object = null
static var _instance: RuStoreGodotAppUpdateManager = null
# Creates the instance if it has not been created yet.
static func get_instance() -> RuStoreGodotAppUpdateManager:
if _instance == null:
_instance = RuStoreGodotAppUpdateManager.new()
return _instance
func _init():
if Engine.has_singleton(SINGLETON_NAME):
_clientWrapper = Engine.get_singleton(SINGLETON_NAME)
_clientWrapper.rustore_get_app_update_info_success.connect(_on_get_app_update_info_success)
_clientWrapper.rustore_get_app_update_info_failure.connect(_on_get_app_update_info_failure)
_clientWrapper.rustore_start_update_flow_success.connect(_on_start_update_flow_success)
_clientWrapper.rustore_start_update_flow_failure.connect(_on_start_update_flow_failure)
_clientWrapper.rustore_complete_update_failure.connect(_on_complete_update_failure)
_clientWrapper.rustore_on_state_updated.connect(_on_state_updated)
_clientWrapper.init(METRIC_TYPE)
_isInitialized = true
# @return Returns true if registration is successful, otherwise false.
func register_listener() -> bool:
return _clientWrapper.registerListener()
# @return Returns true if the operation completed successfully, otherwise false.
func unregister_listener() -> bool:
return _clientWrapper.unregisterListener()
# @brief Checks for available updates.
func get_app_update_info():
_clientWrapper.getAppUpdateInfo()
func _on_get_app_update_info_success(data: String):
var obj = RuStoreAppUpdateInfo.new(data)
on_get_app_update_info_success.emit(obj)
func _on_get_app_update_info_failure(data: String):
var obj = RuStoreError.new(data)
on_get_app_update_info_failure.emit(obj)
# @return Returns true if an immediate update is available, otherwise false.
func check_is_immediate_update_allowed() -> bool:
return _clientWrapper.checkIsImmediateUpdateAllowed()
# @brief Starts the application update download procedure.
func start_update_flow_immediate():
_clientWrapper.startUpdateFlowImmediate()
func start_update_flow_silent():
_clientWrapper.startUpdateFlowSilent()
func start_update_flow_delayed():
_clientWrapper.startUpdateFlowDelayed()
func _on_start_update_flow_success(resultCode: int):
var flowResult: ERuStoreUpdateFlowResult.Item = resultCode
on_start_update_flow_success.emit(flowResult)
func _on_start_update_flow_failure(data: String):
var obj = RuStoreError.new(data)
on_start_update_flow_failure.emit(obj)
# ERuStoreAppUpdateType.Item.FLEXIBLE and ERuStoreAppUpdateType.Item.SILENT.
func complete_update_silent():
_clientWrapper.completeUpdateSilent()
func complete_update_flexible():
_clientWrapper.completeUpdateFlexible()
func _on_complete_update_failure(data: String):
var obj = RuStoreError.new(data)
on_complete_update_failure.emit(obj)
# On state updated
func _on_state_updated(data: String):
var obj = RuStoreInstallState.new(data)
on_state_updated.emit(obj)