Fix #119: Introduce interface for StoryProgressController #177
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This introduces the interface and a stubbed implementation for StoryProgressController, including tests. Note that this actually introduces more logic than a typical stub because I wanted to make sure that
recordCompletedChapter()
actually did something interesting, even if its implementation is not fully complete (e.g. it doesn't record to disk or notify theLiveData
returned bygetStoryProgress
).This controller does not directly correspond to any specific pages. Instead, it will aid the real implementations of #15 and #9 since both require story progress in order to properly populate their structures.
This does introduce a
ChapterPlayState
enum that will replace the playability enum introduced in #174. That one was written first and without context, this one is better defined in the context of tracking story progress.This controller also assumes that lessons are not playable unless all previous lessons are completed per the mocks on the story page.