Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions src/one_dragon/envs/update_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,11 @@ def _get_launcher_zip_suffix(launcher_type: LauncherType) -> str:
"""获取启动器类型对应的压缩包后缀。"""
return RUNTIME_LAUNCHER_ZIP_SUFFIX if launcher_type == 'runtime' else LAUNCHER_ZIP_SUFFIX

def get_launcher_version_info(self, launcher_type: LauncherType) -> tuple[str, str, str]:
"""获取当前启动器版本、最新稳定版和最新测试版(带缓存,重复调用不重新请求网络)。"""
def fetch_launcher_version_info(self, launcher_type: LauncherType) -> tuple[str, str, str]:
"""查询当前启动器版本、最新稳定版和最新测试版并写入缓存。

含网络请求,只能在后台线程调用;已缓存时直接返回缓存。
"""
cached = self._launcher_version_cache.get(launcher_type)
if cached is not None:
return cached
Expand All @@ -71,11 +74,19 @@ def get_launcher_version_info(self, launcher_type: LauncherType) -> tuple[str, s
self._launcher_version_cache[launcher_type] = result
return result

def get_launcher_version_info(self, launcher_type: LauncherType) -> tuple[str, str, str]:
"""读取缓存的启动器版本信息;无缓存时返回空版本,不发起网络请求。

主线程安全:UI 构造下载项只读缓存,网络查询由后台线程的
fetch_launcher_version_info 完成。
"""
return self._launcher_version_cache.get(launcher_type, ('', '', ''))

def is_launcher_update_available(self) -> bool:
"""检查当前启动器通道是否存在可用更新。"""
"""检查当前启动器通道是否存在可用更新(后台线程调用,含网络请求)。"""
launcher_type = self.detect_running_launcher_type() or 'launcher'
current_version, latest_stable, latest_beta = (
self.get_launcher_version_info(launcher_type)
self.fetch_launcher_version_info(launcher_type)
)
target_latest = self.get_launcher_target_version(
current_version,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def __init__(self, update_service: UpdateService, launcher_type: LauncherType) -
def run(self) -> None:
try:
current_version, latest_stable, latest_beta = (
self.update_service.get_launcher_version_info(self.launcher_type)
self.update_service.fetch_launcher_version_info(self.launcher_type)
)
except Exception:
# 检查失败也要发出信号 否则界面会永远停在检查中且按钮不可用
Expand Down
Loading