davidsansome / tsurukame

Tsurukame is an unofficial WaniKani app for iOS. It helps you learn Japanese Kanji.
https://tsurukame.app
Apache License 2.0
252 stars 58 forks source link

Add extra practice methods: recent mistakes, recent lessons, burned items #674

Closed Deadpikle closed 6 months ago

Deadpikle commented 6 months ago

This PR adds three new practice features to the app: review recent mistakes, review recent lessons, and review burned items.

Practice: Review Recent Mistakes

Works like the website. You can review mistakes from the last 24 hours. Readings and meanings are grouped like on the website. This PR does not add the "redo lessons" feature like the website has.

Because the API does not currently let you get review history, however, this is only a local cache of recent mistakes. In theory, if/when that API comes back, this functionality will need to be updated/enhanced.

UI to get here is on the main screen and in the "Upcoming Reviews" section.

Practice: Review Recent Lessons

Works like the website. You can review your recent lessons, review-style. Readings and meanings are grouped like on the website. The definition of a "recent" lesson is found here:

Any item you’ve learned in lessons and haven’t Guru’d in your reviews will be part of Recent Lessons mode. Once you complete your reviews and the item moves to the Guru stage, this will no longer remain in Recent Lessons.

UI to get here is on the main screen and in the "Upcoming Reviews" section (and above the recent mistakes review).

Practice: Review Burned Items

Works like the website. You can review all your burned items review-style. Readings and meanings are grouped like on the website. I believe the WK website lets you practice all your burned items but doesn't repeat in between sessions until you have reviewed them all again. Right now, the app just throws all the burned items into a review session.

UI to get here is on the main screen all the way at the bottom under the "Burned" category.

Potential issue?

I think, for the practice sessions noted above, any changes to custom user data (custom meaning/reading explanation) aren't saved to the database. Am I reading the code correctly in that case? If so, this is probably a problem, since presumably a user might be using the explanation features when practicing recent mistakes. How should this best be solved? A refactor of LocalCachingClient.sendProgress? A new function to just save newer explanation data? all is well, carry on.

Fixes

davidsansome commented 6 months ago

I think, for the practice sessions noted above, any changes to custom user data (custom meaning/reading explanation) aren't saved to the database. Am I reading the code correctly in that case?

It looks like ReviewSession.addSynonym does its thing even if isPracticeSession is true, so it should work okay. Did something not work when you tested it?

Deadpikle commented 6 months ago

Thanks for the review. I've updated the code per your change requests and rebased on master. (Which greatly simplifies my commits since now the copyright year for most things has been updated, haha. Thanks for updating that.)

I think, for the practice sessions noted above, any changes to custom user data (custom meaning/reading explanation) aren't saved to the database. Am I reading the code correctly in that case?

It looks like ReviewSession.addSynonym does its thing even if isPracticeSession is true, so it should work okay. Did something not work when you tested it?

Ah. You're right. I retested. Works fine and as one would expect. Have edited the original post. My fault.

davidsansome commented 6 months ago

This looks great, thanks for making these changes!

Deadpikle commented 6 months ago

This is just a comment for documentation/future searches if it ever comes up: Right now, for recent mistakes, if you get it right again within 24 hrs, Tsurukame will no longer consider it a recent mistake. This behavior matches WaniKani per this forum post announcing the feature.

Q. A Recent Mistake I had in the past 24 hours disappeared, what happened? Most likely, you got that item correct in a Reviews session after getting it wrong in a previous Reviews session. If you get an item correct in a Reviews session before 24 hours have gone by, it disappears from the Recent Mistakes list.

So mistakes within 24 hrs that you then get correct in a subsequent review session should be and will be cleared from recent mistakes.