Skip to content

feat: 新增资源收藏功能#1541

Open
leemwood wants to merge 1 commit into
ZalithLauncher:mainfrom
leemwood:feature/asset_favorites
Open

feat: 新增资源收藏功能#1541
leemwood wants to merge 1 commit into
ZalithLauncher:mainfrom
leemwood:feature/asset_favorites

Conversation

@leemwood

@leemwood leemwood commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

功能概述

新增「资源收藏」功能,用户可收藏资源(整合包/模组/资源包/地图/光影)的项目 + 特定版本下载链接到本地,不收藏本地模组文件本身。

实现要点

持久化(Room)

  • 新增 FavoriteAsset 实体,复合唯一索引 (platform, projectId),DB v2 → v3 + MIGRATION_2_3
  • FavoriteAssetDaosuspendFavoriteManager object 管理器暴露 StateFlow<List<FavoriteAsset>>(参照 GamePathManager 模式)
  • ConvertersPlatform / PlatformClasses / PlatformReleaseType@TypeConverter

收藏入口(三处统一调 FavoriteManager

  1. 搜索结果卡_Search.Result.kt):仅有项目元信息,首次收藏 downloadUrl 留空 + versionName=null,UI 灰色徽标「未指定版本」
  2. 下载详情页版本行DownloadAssetsScreen / DownloadAssetsElements):收藏「项目 + 特定版本链接」,语义最完整,每个版本行独立显示收藏态
  3. 收藏列表FavoritesListScreen):卡片右侧图标显示已收藏态,点击取消

链接语义

  • downloadUrl平台原始直链(未经 MCIM 映射),下载时再 mapMCIMMirrorUrls
  • 未选版本允许 downloadUrl="" + versionName=null

路由

  • 点击收藏项 → 复用 NormalNavKey.DownloadAssets(platform, projectId, classes, iconUrl)
  • 侧边分类新增 NestedNavKey.DownloadFavorites,由 ScreenBackStackViewModel 持有 downloadFavoritesScreen
  • DownloadScreen.kt downloadsList 追加收藏分类(ic_favorite_outlined

收藏列表页

  • 顶部搜索框(按 title/slug/author/description/versionName 过滤)
  • 类别筛选 tab,图标复用下载页侧边栏同款 ic_*(整合包/模组/资源包/地图/光影)
  • 空态:图标 + 文案

字符串

  • 一律 favorites_ 前缀,5 语言(en/zh-rCN/tr/vi/pt-rBR)
  • 勿与「版本收藏」(CurrentGameInfo.favoritesMap)命名冲突

关键修复

  • FavoriteMapperprojectId 取自 PlatformProject.platformId()(非 PlatformVersion.platformId(),后者是 version id 会导致 404)
  • 下载详情页每版本行按 downloadUrl 比对判断收藏态,切换版本时保留原 savedAt

测试

  • ./gradlew :ZalithLauncher:assembleDebug 编译打包通过
  • 已在真机验证:搜索/下载详情/收藏列表三处入口正常,跳转不再 404

不包含

  • 未提交构建环境改动(gradle 镜像/JDK 路径,本地构建配置)
  • 未提交 AGENTS.md 开发规范文档

兼容性

  • DB 迁移 v2→3,不影响现有 accounts / servers / gamePaths
  • 不影响 CurrentGameInfo.favoritesMap(旧「版本收藏」语义保留)

- Room 持久化 FavoriteAsset 实体(platform+projectId 唯一),AppDatabase v2→3 迁移
- FavoriteManager 管理器 + StateFlow,三处入口(搜索结果卡/下载详情版本行/收藏列表)
- 收藏列表页支持按类别筛选(带侧边栏同款图标)与搜索
- 链接语义:存平台原始直链,下载时再走 MCIM 镜像
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant