Skip to content

Commit

Permalink
nit: rename ankidroidJsAPI to jsApi and isReviewer to returnDefaultVa…
Browse files Browse the repository at this point in the history
…lues
  • Loading branch information
krmanik authored and david-allison committed Feb 16, 2024
1 parent 2a45379 commit 8c30031
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ abstract class AbstractFlashcardViewer :
private var replayOnTtsInit = false

@VisibleForTesting
val ankiDroidJsAPI by lazy { AnkiDroidJsAPI(this) }
val jsApi by lazy { AnkiDroidJsAPI(this) }

/**
* Broadcast that informs us when the sd card is about to be unmounted
Expand Down Expand Up @@ -2556,7 +2556,11 @@ abstract class AbstractFlashcardViewer :

override suspend fun handlePostRequest(uri: String, bytes: ByteArray): ByteArray {
return if (uri.startsWith(AnkiServer.ANKIDROID_JS_PREFIX)) {
ankiDroidJsAPI.handleJsApiRequest(uri.substring(AnkiServer.ANKIDROID_JS_PREFIX.length), bytes, false)
jsApi.handleJsApiRequest(
uri.substring(AnkiServer.ANKIDROID_JS_PREFIX.length),
bytes,
returnDefaultValues = true
)
} else {
throw IllegalArgumentException("unhandled request: $uri")
}
Expand Down
8 changes: 4 additions & 4 deletions AnkiDroid/src/main/java/com/ichi2/anki/AnkiDroidJsAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -177,18 +177,18 @@ open class AnkiDroidJsAPI(private val activity: AbstractFlashcardViewer) {

/**
* Handle js api request,
* some of the methods are overriden in Reviewer.kt and default values are returned.
* some of the methods are overridden in Reviewer.kt and default values are returned.
* @param methodName
* @param bytes
* @param isReviewer
* @param returnDefaultValues `true` if default values should be returned (if non-[Reviewer])
* @return
*/
open suspend fun handleJsApiRequest(methodName: String, bytes: ByteArray, isReviewer: Boolean) = withContext(Dispatchers.Main) {
open suspend fun handleJsApiRequest(methodName: String, bytes: ByteArray, returnDefaultValues: Boolean = true) = withContext(Dispatchers.Main) {
// the method will call to set the card supplied data and is valid version for each api request
val apiContract = parseJsApiContract(bytes)!!
// if api not init or is api not called from reviewer then return default -1
// also other action will not be modified
if (!apiContract.isValid or !isReviewer) {
if (!apiContract.isValid or returnDefaultValues) {
return@withContext convertToByteArray(apiContract, -1)
}

Expand Down
6 changes: 5 additions & 1 deletion AnkiDroid/src/main/java/com/ichi2/anki/Reviewer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1358,7 +1358,11 @@ open class Reviewer :
else -> throw IllegalArgumentException("unhandled request: $methodName")
}
} else if (uri.startsWith(ANKIDROID_JS_PREFIX)) {
ankiDroidJsAPI.handleJsApiRequest(uri.substring(ANKIDROID_JS_PREFIX.length), bytes, true)
jsApi.handleJsApiRequest(
uri.substring(ANKIDROID_JS_PREFIX.length),
bytes,
returnDefaultValues = false
)
} else {
throw IllegalArgumentException("unhandled request: $uri")
}
Expand Down
16 changes: 8 additions & 8 deletions AnkiDroid/src/test/java/com/ichi2/anki/AnkiDroidJsAPITest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class AnkiDroidJsAPITest : RobolectricTest() {
addNoteUsingBasicModel("foo", "bar")

val reviewer: Reviewer = startReviewer()
val jsapi = reviewer.ankiDroidJsAPI
val jsapi = reviewer.jsApi

reviewer.displayCardAnswer()

Expand Down Expand Up @@ -75,7 +75,7 @@ class AnkiDroidJsAPITest : RobolectricTest() {
addNoteUsingBasicModel("foo", "bar")

val reviewer: Reviewer = startReviewer()
val jsapi = reviewer.ankiDroidJsAPI
val jsapi = reviewer.jsApi
reviewer.displayCardAnswer()

waitForAsyncTasksToComplete()
Expand Down Expand Up @@ -185,7 +185,7 @@ class AnkiDroidJsAPITest : RobolectricTest() {
addNoteUsingBasicModel("foo", "bar")

val reviewer: Reviewer = startReviewer()
val jsapi = reviewer.ankiDroidJsAPI
val jsapi = reviewer.jsApi

waitForAsyncTasksToComplete()

Expand Down Expand Up @@ -227,7 +227,7 @@ class AnkiDroidJsAPITest : RobolectricTest() {
addNoteUsingBasicModel("foo", "bar")

val reviewer: Reviewer = startReviewer()
val jsapi = reviewer.ankiDroidJsAPI
val jsapi = reviewer.jsApi

waitForAsyncTasksToComplete()

Expand Down Expand Up @@ -291,7 +291,7 @@ class AnkiDroidJsAPITest : RobolectricTest() {
addNoteUsingBasicModel("Test Note", "Bury and Suspend Note")

val reviewer: Reviewer = startReviewer()
val jsapi = reviewer.ankiDroidJsAPI
val jsapi = reviewer.jsApi

// ----------
// Bury Card
Expand Down Expand Up @@ -360,7 +360,7 @@ class AnkiDroidJsAPITest : RobolectricTest() {
val reviewer: Reviewer = startReviewer()
waitForAsyncTasksToComplete()

val jsapi = reviewer.ankiDroidJsAPI
val jsapi = reviewer.jsApi
// get card id for testing due
val cardIdRes = getDataFromRequest("cardId", jsapi)
val jsonObject = JSONObject(cardIdRes)
Expand Down Expand Up @@ -396,7 +396,7 @@ class AnkiDroidJsAPITest : RobolectricTest() {
val reviewer: Reviewer = startReviewer()
waitForAsyncTasksToComplete()

val jsapi = reviewer.ankiDroidJsAPI
val jsapi = reviewer.jsApi

// test that card reset
assertThat(getDataFromRequest("resetProgress", jsapi), equalTo(formatApiResult(true)))
Expand Down Expand Up @@ -428,7 +428,7 @@ class AnkiDroidJsAPITest : RobolectricTest() {
jsAPI: AnkiDroidJsAPI,
apiData: String = ""
): String {
return jsAPI.handleJsApiRequest(methodName, jsApiContract(apiData), true)
return jsAPI.handleJsApiRequest(methodName, jsApiContract(apiData), false)
.decodeToString()
}
}
Expand Down
6 changes: 3 additions & 3 deletions AnkiDroid/src/test/java/com/ichi2/anki/ReviewerTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -205,11 +205,11 @@ class ReviewerTest : RobolectricTest() {
addDeck("A", setAsSelected = true)

val reviewer = startReviewer()
val javaScriptFunction = reviewer.ankiDroidJsAPI
val jsApi = reviewer.jsApi

waitForAsyncTasksToComplete()
assertThat(
javaScriptFunction.handleJsApiRequest("deckName", jsApiContract(), true)
jsApi.handleJsApiRequest("deckName", jsApiContract(), false)
.decodeToString(),
equalTo(formatApiResult("B"))
)
Expand Down Expand Up @@ -316,7 +316,7 @@ class ReviewerTest : RobolectricTest() {

@Suppress("SameParameterValue")
private fun assertCounts(r: Reviewer, newCount: Int, stepCount: Int, revCount: Int) = runTest {
val jsApi = r.ankiDroidJsAPI
val jsApi = r.jsApi
val countList = listOf(
getDataFromRequest("newCardCount", jsApi),
getDataFromRequest("lrnCardCount", jsApi),
Expand Down

0 comments on commit 8c30031

Please sign in to comment.