Phase 1: Context 拆分 - 新增 RDEPUBReaderState/RDEPUBReaderEnvironment/RDEPUBReaderServices - RDEPUBReaderContext 改为过渡门面,代理到 State/Environment/Services Phase 2: Runtime 拆分 - 新增 RDEPUBPresentationRuntime 处理分页状态管理 - 新增 RDEPUBChapterWarmupOrchestrator 处理章节预热与加载编排 - RDEPUBReaderRuntime 从 1277 行收缩,公共 API 转发到新 facade Phase 0.5: 性能优化 - prepareOnDemandChapter 支持异步模式(allowSynchronousLoad: false) - extendPartialBookPageMapIfNeeded 改为 DispatchGroup 并发加载 - RDEPUBChapterOffsetMap.cfiMap 加 NSLock 保护数据竞争 - CFI Map 构建延迟到后台队列(scheduleDeferredCFIMapBuildIfNeeded) - RDEPUBTextPageRenderView 引入静态位图缓存 - RDEPUBTextContentView 新增 loadingSpinner 占位页 Phase 3: 状态机 - 新增 RDEPUBNavigationStateMachine(含 DEBUG 合法转换校验) - 新增 RDEPUBPaginationState 记录分页来源 Review 修复 - makeSummary 重复方法合并 - ensureNavigationTargetAvailable 同步路径加注释标记 UI 测试 - 新增 AsyncChapterLoadingTests(20 个测试,覆盖全部架构整改场景) - 跨章节翻页、延迟 CFI、状态机、内存警告、预加载、位置恢复等
62 lines
3.3 KiB
Swift
62 lines
3.3 KiB
Swift
import Foundation
|
|
|
|
enum IDs {
|
|
static let demoStatus = "demo.status"
|
|
static let demoBooksTable = "demo.books.table"
|
|
static func demoBook(_ index: Int) -> String { "demo.book.\(index)" }
|
|
static let demoReaderState = "demo.reader.state"
|
|
|
|
static let readerBack = "epub.reader.back"
|
|
static let readerTitle = "epub.reader.title"
|
|
static let readerTopToolbar = "epub.reader.topToolbar"
|
|
static let readerBottomToolbar = "epub.reader.bottomToolbar"
|
|
static let readerContent = "epub.reader.content"
|
|
static let readerPaging = "epub.reader.paging"
|
|
static let readerBookmark = "epub.reader.bookmark"
|
|
static let readerToc = "epub.reader.toc"
|
|
static let readerBookmarks = "epub.reader.bookmarks"
|
|
static let readerHighlights = "epub.reader.highlights"
|
|
static let readerAddHighlight = "epub.reader.add-highlight"
|
|
static let readerSettings = "epub.reader.settings"
|
|
static let readerTocPanel = "epub.reader.toc.panel"
|
|
static let readerTocTable = "epub.reader.toc.table"
|
|
static let readerTocNavBar = "epub.reader.toc.navbar"
|
|
static let readerBookmarksPanel = "epub.reader.bookmarks.panel"
|
|
static let readerBookmarksTable = "epub.reader.bookmarks.table"
|
|
static let readerBookmarksNavBar = "epub.reader.bookmarks.navbar"
|
|
static let readerSelectionText = "epub.reader.selection.text"
|
|
static let readerSelectionHighlight = "epub.reader.selection.高亮"
|
|
static let readerContentView = "epub.reader.content.view"
|
|
static let readerLoadingSpinner = "epub.reader.loadingSpinner"
|
|
static let readerHighlightsPanel = "epub.reader.highlights.panel"
|
|
static let readerHighlightsTable = "epub.reader.highlights.table"
|
|
static let readerHighlightsFilter = "epub.reader.highlights.filter"
|
|
static let readerHighlightsEmptyLabel = "epub.reader.highlights.empty"
|
|
static let readerHighlightsNavBar = "epub.reader.highlights.navbar"
|
|
static let readerBookmarksEmptyLabel = "epub.reader.bookmarks.empty"
|
|
static let readerNoteText = "epub.reader.note.text"
|
|
static let readerNoteActions = "epub.reader.note.actions"
|
|
static let readerNoteReturn = "epub.reader.note.return"
|
|
static let readerNoteOpen = "epub.reader.note.open"
|
|
|
|
static let readerSearch = "epub.reader.search"
|
|
static let searchBar = "epub.reader.search.bar"
|
|
static let searchField = "epub.reader.search.field"
|
|
static let searchPrevious = "epub.reader.search.previous"
|
|
static let searchNext = "epub.reader.search.next"
|
|
static let searchClose = "epub.reader.search.close"
|
|
static let searchCount = "epub.reader.search.count"
|
|
|
|
static let settingsScroll = "epub.reader.settings.scroll"
|
|
static let settingsBrightness = "epub.reader.settings.brightness"
|
|
static let settingsFontIncrease = "epub.reader.settings.font.increase"
|
|
static let settingsFontDecrease = "epub.reader.settings.font.decrease"
|
|
static let settingsFontValue = "epub.reader.settings.font.value"
|
|
static let settingsFontChoice = "epub.reader.settings.font.choice"
|
|
static let settingsLineHeight = "epub.reader.settings.lineHeight"
|
|
static let settingsColumns = "epub.reader.settings.columns"
|
|
static let settingsDisplayType = "epub.reader.settings.displayType"
|
|
static let settingsDone = "epub.reader.settings.done"
|
|
static func settingsTheme(_ index: Int) -> String { "epub.reader.settings.theme.\(index)" }
|
|
}
|