Skip to content

Commit 8d79858

Browse files
chore: Upgrade Kotlin side to match YouVersion Kotlin SDK 1.0.1 (#41)
* chore: bump Kotlin SDK to 1.0.1 * chore: set required Kotlin version to 2.3.0 in example app * chore: update UI views to use Expo 55 * chore: update Kotlin wrappers to match Kotlin SDK 1.0.1 * chore: use appropriate `Host` for each platform * chore: clean up unused imports and arguments * fixup! chore: update UI views to use Expo 55
1 parent ca5e59b commit 8d79858

File tree

13 files changed

+77
-60
lines changed

13 files changed

+77
-60
lines changed

android/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ dependencies {
6060
implementation 'androidx.compose.foundation:foundation-android:1.9.1'
6161
implementation 'androidx.compose.material3:material3-android:1.3.2'
6262

63-
implementation 'com.youversion.platform:platform-core:0.6.0'
64-
implementation 'com.youversion.platform:platform-ui:0.6.0'
65-
implementation 'com.youversion.platform:platform-reader:0.6.0'
63+
implementation 'com.youversion.platform:platform-core:1.0.1'
64+
implementation 'com.youversion.platform:platform-ui:1.0.1'
65+
implementation 'com.youversion.platform:platform-reader:1.0.1'
6666
}

android/src/main/java/com/youversion/reactnativesdk/RNYouVersionPlatformModule.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,8 @@ class RNYouVersionPlatformModule : Module() {
5757
}
5858

5959
AsyncFunction("chapter") Coroutine { bibleReference: BibleReferenceRecord ->
60-
val context = appContext.reactContext
61-
?: throw IllegalStateException("ReactContext is not available yet")
62-
6360
return@Coroutine YVPBibleApi.chapter(
64-
bibleReference = bibleReference,
65-
context = context
61+
bibleReference = bibleReference
6662
)
6763
}
6864

android/src/main/java/com/youversion/reactnativesdk/api/YVPBibleApi.kt

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@ package com.youversion.reactnativesdk.api
22

33
import android.content.Context
44
import com.youversion.platform.core.api.YouVersionApi
5-
import com.youversion.platform.core.bibles.domain.BibleReference
6-
import com.youversion.platform.core.bibles.domain.BibleVersionRepository
75

86
object YVPBibleApi {
97
suspend fun versions(languageTag: String?): List<BibleVersionRecord> {
10-
val response = YouVersionApi.bible.versions(languageTag)
11-
val records = response.map { BibleVersionRecord(it) }
12-
return records
8+
val allResults = mutableListOf<BibleVersionRecord>()
9+
var pageToken: String? = null
10+
11+
do {
12+
val response = YouVersionApi.bible.versions(languageTag, pageToken = pageToken)
13+
allResults.addAll(response.data.map { BibleVersionRecord(it) })
14+
15+
pageToken = response.nextPageToken
16+
} while (pageToken != null)
17+
18+
return allResults
1319
}
1420

1521
suspend fun version(versionId: Int): BibleVersionRecord {
@@ -18,15 +24,14 @@ object YVPBibleApi {
1824
return record
1925
}
2026

21-
suspend fun chapter(bibleReference: BibleReferenceRecord, context: Context): String {
22-
val response = BibleVersionRepository(context).chapter(
23-
reference = BibleReference(
24-
versionId = bibleReference.versionId,
25-
bookUSFM = bibleReference.bookUSFM,
26-
chapter = bibleReference.chapter,
27-
)
27+
suspend fun chapter(bibleReference: BibleReferenceRecord): String {
28+
val passageId = bibleReference.bookUSFM + "." + bibleReference.chapter.toString()
29+
30+
val response = YouVersionApi.bible.passage(
31+
versionId = bibleReference.versionId,
32+
passageId = passageId
2833
)
2934

30-
return response
35+
return response.content
3136
}
3237
}

android/src/main/java/com/youversion/reactnativesdk/api/YVPLanguagesApi.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,16 @@ import com.youversion.platform.core.api.YouVersionApi
44

55
object YVPLanguagesApi {
66
suspend fun languages(country: String?): List<LanguageRecord> {
7-
val response = YouVersionApi.languages.languages(country)
8-
val records = response.map { LanguageRecord(it) }
9-
return records
7+
val allResults = mutableListOf<LanguageRecord>()
8+
var pageToken: String? = null
9+
10+
do {
11+
val response = YouVersionApi.languages.languages(country, pageToken = pageToken)
12+
allResults.addAll(response.data.map { LanguageRecord(it) })
13+
14+
pageToken = response.nextPageToken
15+
} while (pageToken != null)
16+
17+
return allResults
1018
}
1119
}

android/src/main/java/com/youversion/reactnativesdk/api/YVPRecords.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,23 @@ data class YouVersionVerseOfTheDayRecord(
2323

2424
data class LanguageRecord(
2525
@Field
26-
val id: String,
26+
val id: String?,
2727
@Field
28-
val language: String,
28+
val language: String?,
2929
@Field
3030
val script: String?,
3131
@Field
3232
val scriptName: String?,
3333
@Field
34-
val aliases: List<String>,
34+
val aliases: List<String>?,
3535
@Field
36-
val displayNames: Map<String, String>,
36+
val displayNames: Map<String, String>?,
3737
@Field
38-
val scripts: List<String>,
38+
val scripts: List<String>?,
3939
@Field
40-
val variants: List<String>,
40+
val variants: List<String>?,
4141
@Field
42-
val countries: List<String>,
42+
val countries: List<String>?,
4343
@Field
4444
val textDirection: String,
4545
@Field

android/src/main/java/com/youversion/reactnativesdk/views/YVPBibleReaderView.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.ui.Modifier
88
import com.youversion.platform.core.bibles.domain.BibleReference
99
import com.youversion.platform.reader.BibleReader
1010
import expo.modules.kotlin.AppContext
11+
import expo.modules.kotlin.views.ComposableScope
1112
import expo.modules.kotlin.views.ComposeProps
1213
import expo.modules.kotlin.views.ExpoComposeView
1314

@@ -30,7 +31,7 @@ class YVPBibleReaderView(context: Context, appContext: AppContext) :
3031
override val props = BibleReaderViewProps()
3132

3233
@Composable
33-
override fun Content(modifier: Modifier) {
34+
override fun ComposableScope.Content() {
3435
BibleReader(
3536
appName = props.appName.value ?: "",
3637
appSignInMessage = props.signInMessage.value ?: "",

android/src/main/java/com/youversion/reactnativesdk/views/YVPBibleTextView.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.compose.ui.graphics.Color
1313
import androidx.compose.ui.unit.dp
1414
import expo.modules.kotlin.AppContext
1515
import expo.modules.kotlin.viewevent.EventDispatcher
16+
import expo.modules.kotlin.views.ComposableScope
1617
import expo.modules.kotlin.views.ComposeProps
1718
import expo.modules.kotlin.views.ExpoComposeView
1819

@@ -43,10 +44,10 @@ class YVPBibleTextView(context: Context, appContext: AppContext) :
4344
private val onTap by EventDispatcher()
4445

4546
@Composable
46-
override fun Content(modifier: Modifier) {
47+
override fun ComposableScope.Content() {
4748
// TODO: Replace with actual BibleText composable when Kotlin SDK is ready
4849
Box(
49-
modifier = modifier
50+
modifier = Modifier
5051
.fillMaxWidth()
5152
.padding(16.dp)
5253
) {

android/src/main/java/com/youversion/reactnativesdk/views/YVPBibleWidgetView.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.compose.ui.graphics.Color
1414
import androidx.compose.ui.unit.dp
1515
import androidx.compose.ui.unit.sp
1616
import expo.modules.kotlin.AppContext
17+
import expo.modules.kotlin.views.ComposableScope
1718
import expo.modules.kotlin.views.ComposeProps
1819
import expo.modules.kotlin.views.ExpoComposeView
1920

@@ -36,7 +37,7 @@ class YVPBibleWidgetView(context: Context, appContext: AppContext) :
3637
override val props = BibleWidgetViewProps()
3738

3839
@Composable
39-
override fun Content(modifier: Modifier) {
40+
override fun ComposableScope.Content() {
4041
val isDark = when (props.colorScheme.value) {
4142
"dark" -> true
4243
"light" -> false
@@ -45,7 +46,7 @@ class YVPBibleWidgetView(context: Context, appContext: AppContext) :
4546

4647
// TODO: Replace with actual BibleWidget composable when Kotlin SDK is ready
4748
Box(
48-
modifier = modifier
49+
modifier = Modifier
4950
.fillMaxWidth()
5051
.padding(16.dp)
5152
) {

android/src/main/java/com/youversion/reactnativesdk/views/YVPSignInWithYouVersionButton.kt

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,14 @@ import androidx.compose.foundation.isSystemInDarkTheme
55
import androidx.compose.runtime.Composable
66
import androidx.compose.runtime.MutableState
77
import androidx.compose.runtime.mutableStateOf
8-
import androidx.compose.ui.Modifier
98
import androidx.compose.ui.graphics.Shape
109
import com.youversion.platform.ui.views.SignInWithYouVersionButton
1110
import com.youversion.platform.ui.views.SignInWithYouVersionButtonDefaults
1211
import com.youversion.platform.ui.views.SignInWithYouVersionButtonMode
1312
import expo.modules.kotlin.AppContext
14-
import expo.modules.kotlin.views.AutoSizingComposable
13+
import expo.modules.kotlin.views.ComposableScope
1514
import expo.modules.kotlin.views.ComposeProps
16-
import expo.modules.kotlin.views.Direction
1715
import expo.modules.kotlin.views.ExpoComposeView
18-
import java.util.EnumSet
1916

2017
data class SignInWithYouVersionButtonProps(
2118
val mode: MutableState<String?> = mutableStateOf("full"),
@@ -30,16 +27,14 @@ class YVPSignInWithYouVersionButton(context: Context, appContext: AppContext) :
3027
// private val onTap by EventDispatcher()
3128

3229
@Composable
33-
override fun Content(modifier: Modifier) {
34-
AutoSizingComposable(shadowNodeProxy, axis = EnumSet.of(Direction.HORIZONTAL, Direction.VERTICAL)) {
35-
SignInWithYouVersionButton(
36-
mode = mode(),
37-
stroked = stroked(),
38-
shape = shape(),
39-
dark = isDark(),
40-
permissions = { HashSet() }
41-
)
42-
}
30+
override fun ComposableScope.Content() {
31+
SignInWithYouVersionButton(
32+
mode = mode(),
33+
stroked = stroked(),
34+
shape = shape(),
35+
dark = isDark(),
36+
permissions = { HashSet() }
37+
)
4338
}
4439

4540
fun mode(): SignInWithYouVersionButtonMode {

android/src/main/java/com/youversion/reactnativesdk/views/YVPVotdView.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.compose.ui.Modifier
1313
import androidx.compose.ui.graphics.Color
1414
import androidx.compose.ui.unit.dp
1515
import expo.modules.kotlin.AppContext
16+
import expo.modules.kotlin.views.ComposableScope
1617
import expo.modules.kotlin.views.ComposeProps
1718
import expo.modules.kotlin.views.ExpoComposeView
1819

@@ -27,7 +28,7 @@ class YVPVotdView(context: Context, appContext: AppContext) :
2728
override val props = VotdViewProps()
2829

2930
@Composable
30-
override fun Content(modifier: Modifier) {
31+
override fun ComposableScope.Content() {
3132
val isDark = when (props.colorScheme.value) {
3233
"dark" -> true
3334
"light" -> false
@@ -36,7 +37,7 @@ class YVPVotdView(context: Context, appContext: AppContext) :
3637

3738
// TODO: Replace with actual VerseOfTheDay composable when Kotlin SDK is ready
3839
Box(
39-
modifier = modifier
40+
modifier = Modifier
4041
.fillMaxWidth()
4142
.padding(16.dp)
4243
) {

0 commit comments

Comments
 (0)