137 lines
6.2 KiB
Markdown
137 lines
6.2 KiB
Markdown
# 1.30dazhi合并前 · 完结页相关变更清单(禁止应用)
|
||
|
||
**说明**:根据 git 拉取的 **1.30dazhi合并前** 分支与 commit **f725f31** 核对:除完结页外,**其他页面是否有被影响**。
|
||
**结论**:仅做审查与清单整理,**绝对禁止应用任何代码**。
|
||
|
||
---
|
||
|
||
## 一、当前分支与提交
|
||
|
||
- **当前分支**:`1.30dazhi合并前`
|
||
- **完结页相关提交**:`f725f31` — `feat: 完成页逻辑与占位页进入、无完成按钮;课程完成导航与文档`
|
||
- **工作区**:有 **1 个未提交修改** — `ios/WildGrowth/WildGrowth/VerticalScreenPlayerView.swift`(约 41 行变更)
|
||
|
||
---
|
||
|
||
## 二、f725f31 中「除完结页外」被改动的文件(其他页面)
|
||
|
||
在 **f725f31** 里,**除了** 新增的 `CompletionView.swift` 和文档、以及 `VerticalScreenPlayerView.swift` 的完成页逻辑外,**以下页面/文件也被一起改动了**:
|
||
|
||
### 1. CourseNavigation.swift
|
||
|
||
| 变更 | 说明 |
|
||
|------|------|
|
||
| `.player` | 由 `(courseId, nodeId)` 改为 `(courseId, nodeId, isLastNode, courseTitle)` |
|
||
| 新增 `.completion` | `(courseId, courseTitle, completedLessonCount)` |
|
||
| 注释 | 「从 HomeView 提取」改为「供 DiscoveryView / GrowthView / MapView / ProfileView 共用」 |
|
||
|
||
**影响**:所有使用 `CourseNavigation.player` / `.completion` 的调用方必须传新参数或处理新 case。
|
||
|
||
---
|
||
|
||
### 2. MainTabView.swift
|
||
|
||
| 变更 | 说明 |
|
||
|------|------|
|
||
| Tab 选中状态 | 由 `@State private var selection` 改为使用 `navStore.selectedTab` |
|
||
| 新增 `NavigationStore` | `@Published var selectedTab`、`func switchToGrowthTab()` |
|
||
| TabView 绑定 | `TabView(selection: $selection)` → `TabView(selection: $navStore.selectedTab)` |
|
||
| 登录成功跳转 | `selection = 2` → `navStore.selectedTab = 2` |
|
||
| 多处 print | `selection` → `navStore.selectedTab` |
|
||
|
||
**影响**:Tab 切换与完成页「回到技能页」依赖 `navStore.selectedTab` 与 `switchToGrowthTab()`。
|
||
|
||
---
|
||
|
||
### 3. MapView.swift
|
||
|
||
| 变更 | 说明 |
|
||
|------|------|
|
||
| 点击小节进入播放器 | `CourseNavigation.player(courseId, nodeId)` → `CourseNavigation.player(courseId, nodeId, isLastNode, courseTitle)` |
|
||
| 新增 `isLastNode` | `(chapter.id == data.chapters.last?.id) && (index == chapter.nodes.count - 1)` |
|
||
| 传入 `courseTitle` | `data.courseTitle` |
|
||
|
||
**影响**:从地图进播放器时,会多传 `isLastNode`、`courseTitle`,与 `CourseNavigation` 新签名一致。
|
||
|
||
---
|
||
|
||
### 4. ProfileView.swift
|
||
|
||
| 变更 | 说明 |
|
||
|------|------|
|
||
| `.map` | `MapView(courseId:)` → `MapView(courseId:, navigationPath: $navStore.profilePath)` |
|
||
| `.player` | `VerticalScreenPlayerView` 增加 `navigationPath: $navStore.profilePath`、`isLastNode`、`courseTitle` |
|
||
| 新增 `.completion` | `CompletionView(courseId, courseTitle, completedLessonCount)` |
|
||
|
||
**影响**:我的 Tab 下地图、播放器、完成页的导航与传参全部按新枚举和完成页流程改过。
|
||
|
||
---
|
||
|
||
### 5. DiscoveryView.swift
|
||
|
||
| 变更 | 说明 |
|
||
|------|------|
|
||
| `.map` | `MapView(courseId:)` → `MapView(courseId:, navigationPath: $navStore.homePath)` |
|
||
| `.player` | `VerticalScreenPlayerView` 增加 `isLastNode`、`courseTitle`(原已有 navigationPath) |
|
||
| 新增 `.completion` | `CompletionView(courseId, courseTitle, completedLessonCount)` |
|
||
|
||
**影响**:发现 Tab 下地图、播放器、完成页的导航与传参全部按新枚举和完成页流程改过。
|
||
|
||
---
|
||
|
||
### 6. GrowthView.swift
|
||
|
||
| 变更 | 说明 |
|
||
|------|------|
|
||
| `.player` | `VerticalScreenPlayerView` 增加 `isLastNode`、`courseTitle`(原已有 MapView navigationPath) |
|
||
| 新增 `.completion` | `CompletionView(courseId, courseTitle, completedLessonCount)` |
|
||
|
||
**影响**:技能 Tab 下播放器、完成页的导航与传参全部按新枚举和完成页流程改过。
|
||
|
||
---
|
||
|
||
### 7. VerticalScreenPlayerView.swift(f725f31 内)
|
||
|
||
| 变更 | 说明 |
|
||
|------|------|
|
||
| 占位页 | `CompletionPlaceholderPage` 由「带 courseId/courseTitle/navigationPath + onAppear 里 push」改为「纯视觉占位」 |
|
||
| 新增 | TabView 上 `.onChange(of: currentNodeId)`,当 `newId == "wg://completion"` 时 0.1s 后 append `.completion` |
|
||
|
||
**影响**:完成页进入方式从「占位页 onAppear」改为「父视图 onChange」,避免预加载误触。
|
||
|
||
---
|
||
|
||
## 三、当前工作区未提交改动(仅 1 个文件)
|
||
|
||
| 文件 | 变更概要 |
|
||
|------|----------|
|
||
| **VerticalScreenPlayerView.swift** | 在 f725f31 基础上:CompletionPlaceholderPage 去掉参数、改为纯 ZStack;TabView 增加 `.onChange(of: currentNodeId)` 的完成页 push 逻辑(与上面「f725f31 内」描述一致,可能是同一逻辑的又一次提交前微调或重复修改) |
|
||
|
||
**其他页面**:当前 **无** 未提交修改。GrowthView、ProfileView、DiscoveryView、MapView、MainTabView、CourseNavigation 等在工作区均为已提交状态(f725f31)。
|
||
|
||
---
|
||
|
||
## 四、直接回答「除了完结页,其他页面有没有被影响」
|
||
|
||
**有。**
|
||
|
||
在引入完结页的 **f725f31** 中,除了:
|
||
|
||
- 新增:`CompletionView.swift`、`COMPLETION_PAGE_MEANING.md`、`COMPLETION_VIEW_*` 等文档
|
||
- 修改:`VerticalScreenPlayerView.swift`(占位页 + 完成页进入逻辑)
|
||
|
||
还**一并修改了**以下「其他页面」以支持完成页导航与播放器参数:
|
||
|
||
1. **CourseNavigation.swift** — 枚举增加 `.completion`、`.player` 增加 `isLastNode`、`courseTitle`
|
||
2. **MainTabView.swift** — Tab 状态迁到 `navStore.selectedTab`,新增 `switchToGrowthTab()`
|
||
3. **MapView.swift** — 进播放器时传 `isLastNode`、`courseTitle`
|
||
4. **ProfileView.swift** — MapView 传 navigationPath;播放器传 isLastNode、courseTitle;增加 `.completion` destination
|
||
5. **DiscoveryView.swift** — MapView 传 navigationPath;播放器传 isLastNode、courseTitle;增加 `.completion` destination
|
||
6. **GrowthView.swift** — 播放器传 isLastNode、courseTitle;增加 `.completion` destination
|
||
|
||
因此:**1.30dazhi合并前** 分支上,完结页不是「只动完结页」,而是**和上述 6 个文件一起**在 f725f31 里改的;当前工作区里,只有 **VerticalScreenPlayerView.swift** 还有未提交修改,其他页面没有新的未提交变更。
|
||
|
||
---
|
||
|
||
**未对仓库进行任何应用或修改操作。**
|