feat: 添加 ApiCacheLoaded 提示,区分热更成功与使用缓存场景

This commit is contained in:
uye
2026-03-11 19:30:11 +08:00
parent 4cd186a15d
commit 4b595ab6b9
6 changed files with 33 additions and 10 deletions

View File

@@ -1364,6 +1364,8 @@ Cache files (such as maps, operator avatars, etc.) need to be regenerated after
<!-- !RootViewModel -->
<!-- Api -->
<system:String x:Key="ApiUpdateSuccess">Hot update data retrieval successful</system:String>
<system:String x:Key="ApiUpdateFailed">Hot update data retrieval failed</system:String>
<system:String x:Key="ApiCacheLoaded">Using local cached data</system:String>
<system:String x:Key="GameResourceUpdating">Game resources are being updated.</system:String>
<system:String x:Key="GameResourceUpdatingMirrorChyan">Updating resource {0} from 「{key=MirrorChyan}」...</system:String>
<system:String x:Key="GameResourceUpdatePreparing">Indexing in progress</system:String>

View File

@@ -1365,6 +1365,8 @@ DEBUGディレクトリに保存される画像には数量制限があり、超
<!-- !RootViewModel -->
<!-- Api -->
<system:String x:Key="ApiUpdateSuccess">ホットアップデートデータの取得に成功しました</system:String>
<system:String x:Key="ApiUpdateFailed">ホットアップデートデータの取得に失敗しました</system:String>
<system:String x:Key="ApiCacheLoaded">ローカルキャッシュデータを使用しています</system:String>
<system:String x:Key="GameResourceUpdating">ゲームリソースが更新中です。</system:String>
<system:String x:Key="GameResourceUpdatingMirrorChyan">「{key=MirrorChyan}」からリソース {0} を更新しています...</system:String>
<system:String x:Key="GameResourceUpdatePreparing">索引の作成中</system:String>

View File

@@ -1366,6 +1366,8 @@ DEBUG 디렉토리에 저장된 이미지는 수량 제한이 있으며 초과
<!-- !RootViewModel -->
<!-- Api -->
<system:String x:Key="ApiUpdateSuccess">핫 업데이트 데이터를 성공적으로 가져왔습니다</system:String>
<system:String x:Key="ApiUpdateFailed">핫 업데이트 데이터를 가져오지 못했습니다</system:String>
<system:String x:Key="ApiCacheLoaded">로컬 캐시 데이터를 사용하는 중</system:String>
<system:String x:Key="GameResourceUpdating">게임 리소스가 업데이트 중입니다.</system:String>
<system:String x:Key="GameResourceUpdatingMirrorChyan">「{key=MirrorChyan}」에서 {0} 리소스를 업데이트하는 중...</system:String>
<system:String x:Key="GameResourceUpdatePreparing">색인 작성 중</system:String>

View File

@@ -1365,6 +1365,8 @@ DEBUG 目录下保存的图片有数量限制,超出后会自动清理旧图
<!-- !RootViewModel -->
<!-- Api -->
<system:String x:Key="ApiUpdateSuccess">热更数据获取成功</system:String>
<system:String x:Key="ApiUpdateFailed">热更数据获取失败</system:String>
<system:String x:Key="ApiCacheLoaded">使用本地缓存数据</system:String>
<system:String x:Key="GameResourceUpdating">游戏资源正在更新。</system:String>
<system:String x:Key="GameResourceUpdatingMirrorChyan">正在使用 「{key=MirrorChyan}」 更新资源{0}……</system:String>
<system:String x:Key="GameResourceUpdatePreparing">正在编制索引</system:String>

View File

@@ -1365,6 +1365,8 @@ DEBUG 目錄下儲存的圖片有數量限制,超出後會自動清理舊圖
<!-- !RootViewModel -->
<!-- Api -->
<system:String x:Key="ApiUpdateSuccess">熱更新資料取得成功</system:String>
<system:String x:Key="ApiUpdateFailed">熱更新資料取得失敗</system:String>
<system:String x:Key="ApiCacheLoaded">使用本機快取資料</system:String>
<system:String x:Key="GameResourceUpdating">遊戲資源正在更新。</system:String>
<system:String x:Key="GameResourceUpdatingMirrorChyan">正在使用 「{key=MirrorChyan}」 更新資源 {0}……</system:String>
<system:String x:Key="GameResourceUpdatePreparing">正在建立索引</system:String>

View File

@@ -91,19 +91,28 @@ public class StageManager
}
}
var loaded = await LoadWebStages();
if (!loaded)
{
return;
}
var (loaded, cached) = await LoadWebStages();
_ = Execute.OnUIThreadAsync(() => {
var growlInfo = new GrowlInfo {
IsCustom = true,
Message = LocalizationHelper.GetString("ApiUpdateSuccess"),
IconKey = "HangoverGeometry",
IconBrushKey = "PallasBrush",
};
if (!loaded)
{
growlInfo.Message = LocalizationHelper.GetString("ApiUpdateFailed");
}
else if (cached)
{
growlInfo.Message = LocalizationHelper.GetString("ApiCacheLoaded");
}
else
{
growlInfo.Message = LocalizationHelper.GetString("ApiUpdateSuccess");
}
Growl.Info(growlInfo);
});
}
@@ -149,7 +158,7 @@ public class StageManager
}
*/
private async Task<bool> LoadWebStages()
private async Task<(bool Success, bool Cached)> LoadWebStages()
{
var clientType = GetClientType();
@@ -174,14 +183,17 @@ public class StageManager
if (activityJson is null || tasksJson is null)
{
return false;
return (false, false);
}
if (clientType != ClientType.Official && globalTasksJson is null)
{
return false;
return (false, false);
}
// 检查是否所有资源都命中缓存
bool allCached = activityCached && taskCached && globalTasksCached;
if (!taskCached || !globalTasksCached)
{
await Task.Run(() => {
@@ -193,7 +205,8 @@ public class StageManager
{
MergePermanentAndActivityStages(activityJson);
}
return true;
return (true, allCached);
}
private void MergePermanentAndActivityStages(JObject? activity)