Skip to content

Commit fb527a2

Browse files
committed
Merge branch 'feat/compose-beta' into 'master'
Jetpack Compose Beta See merge request fmasa/wfrp-master!197
2 parents b106d46 + 8e00b3c commit fb527a2

File tree

113 files changed

+1041
-1552
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

113 files changed

+1041
-1552
lines changed

app/build.gradle.kts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ plugins {
1414

1515
android {
1616

17-
lintOptions {
17+
lint {
1818
disable("InvalidFragmentVersionForActivityResult") // This is temporary until we drop authentication fragment
1919
}
2020

@@ -64,7 +64,7 @@ android {
6464
resValue("string", "app_name", "[Debug] WFRP Master")
6565
resValue("string", "character_ad_unit_id", "ca-app-pub-3940256099942544/6300978111")
6666
resValue("string", "game_master_ad_unit_id", "ca-app-pub-3940256099942544/6300978111")
67-
manifestPlaceholders(mapOf("analytics_deactivated" to "true"))
67+
manifestPlaceholders(mapOf("analytics_activated" to "false"))
6868
}
6969

7070

@@ -76,7 +76,7 @@ android {
7676
resValue("string", "app_name", "WFRP Master")
7777
resValue("string", "character_ad_unit_id", "ca-app-pub-8647604386686373/9919978313")
7878
resValue("string", "game_master_ad_unit_id", "ca-app-pub-8647604386686373/7714574658")
79-
manifestPlaceholders(mapOf("analytics_deactivated" to "false"))
79+
manifestPlaceholders(mapOf("analytics_activated" to "true"))
8080
}
8181
}
8282

@@ -85,7 +85,7 @@ android {
8585
}
8686

8787
composeOptions {
88-
kotlinCompilerExtensionVersion = "1.0.0-alpha11"
88+
kotlinCompilerExtensionVersion = "1.0.0-beta01"
8989
}
9090

9191
compileOptions {
@@ -104,6 +104,7 @@ android {
104104
"-Xskip-prerelease-check" +
105105
"-Xopt-in=androidx.compose.foundation.layout.ExperimentalLayout" +
106106
"-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" +
107+
"-Xopt-in=androidx.compose.material.ExperimentalMaterialApi" +
107108
"-P" +
108109
"plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true"
109110
}
@@ -118,7 +119,7 @@ dependencies {
118119

119120
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
120121
// Allow use of Java 8 APIs on older Android versions
121-
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.1")
122+
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
122123

123124
implementation("com.google.android.gms:play-services-auth:19.0.0")
124125

@@ -127,21 +128,24 @@ dependencies {
127128

128129
// QR code scanning
129130
implementation("com.google.zxing:core:3.3.3")
130-
implementation("androidx.camera:camera-camera2:1.0.0-rc01")
131-
implementation("androidx.camera:camera-core:1.0.0-rc01")
132-
implementation("androidx.camera:camera-lifecycle:1.0.0-rc01")
133-
implementation("androidx.camera:camera-view:1.0.0-alpha20")
131+
implementation("androidx.camera:camera-camera2:1.1.0-alpha02")
132+
implementation("androidx.camera:camera-core:1.1.0-alpha02")
133+
implementation("androidx.camera:camera-lifecycle:1.1.0-alpha02")
134+
implementation("androidx.camera:camera-view:1.0.0-alpha22")
134135

135136
// Testing utilities
136137
testImplementation("junit:junit:4.13.1")
137138
androidTestImplementation("androidx.test.ext:junit:1.1.2")
138139
androidTestImplementation("androidx.test.espresso:espresso-core:3.3.0")
139140
testImplementation("org.mockito:mockito-core:2.7.22")
140141

142+
// Time picker
143+
implementation("com.vanpra.compose-material-dialogs:datetime:0.3.0")
144+
141145
// Checking network access
142146
implementation("com.github.pwittchen:reactivenetwork-rx2:3.0.8")
143147
api("org.jetbrains.kotlinx:kotlinx-coroutines-rx2:1.4.2")
144148

145149
// Firebase Performance
146-
implementation("com.google.firebase:firebase-perf-ktx:19.1.0")
150+
implementation("com.google.firebase:firebase-perf-ktx:19.1.1")
147151
}

app/combat/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
id("kotlin-parcelize")
55
}
66

7-
val composeVersion = "1.0.0-alpha11"
7+
val composeVersion = "1.0.0-beta01"
88

99
android {
1010
compileSdkVersion(29)

app/combat/src/main/java/cz/frantisekmasa/wfrp_master/combat/ui/ActiveCombatScreen.kt

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package cz.frantisekmasa.wfrp_master.combat.ui
22

33
import android.widget.Toast
4-
import androidx.compose.animation.asDisposableClock
54
import androidx.compose.foundation.background
5+
import androidx.compose.foundation.clickable
66
import androidx.compose.foundation.layout.*
77
import androidx.compose.foundation.rememberScrollState
88
import androidx.compose.foundation.verticalScroll
@@ -12,12 +12,10 @@ import androidx.compose.runtime.*
1212
import androidx.compose.runtime.livedata.observeAsState
1313
import androidx.compose.ui.Alignment
1414
import androidx.compose.ui.Modifier
15-
import androidx.compose.ui.gesture.tapGestureFilter
16-
import androidx.compose.ui.platform.AmbientAnimationClock
17-
import androidx.compose.ui.platform.AmbientContext
18-
import androidx.compose.ui.platform.AmbientLifecycleOwner
15+
import androidx.compose.ui.platform.LocalContext
16+
import androidx.compose.ui.platform.LocalLifecycleOwner
17+
import androidx.compose.ui.res.painterResource
1918
import androidx.compose.ui.res.stringResource
20-
import androidx.compose.ui.res.vectorResource
2119
import androidx.compose.ui.text.intl.Locale
2220
import androidx.compose.ui.text.style.TextAlign
2321
import androidx.compose.ui.text.toUpperCase
@@ -26,7 +24,7 @@ import androidx.lifecycle.Observer
2624
import cz.frantisekmasa.wfrp_master.combat.R
2725
import cz.frantisekmasa.wfrp_master.combat.domain.encounter.Wounds
2826
import cz.frantisekmasa.wfrp_master.core.ads.BannerAd
29-
import cz.frantisekmasa.wfrp_master.core.auth.AmbientUser
27+
import cz.frantisekmasa.wfrp_master.core.auth.LocalUser
3028
import cz.frantisekmasa.wfrp_master.core.ui.buttons.BackButton
3129
import cz.frantisekmasa.wfrp_master.core.ui.components.CharacteristicsTable
3230
import cz.frantisekmasa.wfrp_master.core.ui.primitives.DraggableListFor
@@ -52,7 +50,7 @@ fun ActiveCombatScreen(routing: Routing<Route.ActiveCombat>) {
5250

5351
val party = viewModel.party.observeAsState(null).value
5452
val combatants = remember { viewModel.combatants() }.observeAsState().value
55-
val isGameMaster = AmbientUser.current.id == party?.gameMasterId
53+
val isGameMaster = LocalUser.current.id == party?.gameMasterId
5654

5755
var openedCombatant by remember { mutableStateOf<CombatantItem?>(null) }
5856
val bottomSheetState = rememberNotSavedModalBottomSheetState()
@@ -135,7 +133,7 @@ fun ActiveCombatScreen(routing: Routing<Route.ActiveCombat>) {
135133
isGameMaster = isGameMaster,
136134
onCombatantClicked = {
137135
openedCombatant = it
138-
bottomSheetState.show()
136+
coroutineScope.launch { bottomSheetState.show() }
139137
}
140138
)
141139
}
@@ -171,7 +169,7 @@ private fun BottomBar(turn: Int, round: Int, viewModel: CombatViewModel) {
171169
},
172170
) {
173171
Icon(
174-
vectorResource(R.drawable.ic_arrow_back),
172+
painterResource(R.drawable.ic_arrow_back),
175173
stringResource(R.string.icon_previous_turn),
176174
)
177175
}
@@ -184,7 +182,7 @@ private fun BottomBar(turn: Int, round: Int, viewModel: CombatViewModel) {
184182
}
185183
) {
186184
Icon(
187-
vectorResource(R.drawable.ic_arrow_forward),
185+
painterResource(R.drawable.ic_arrow_forward),
188186
stringResource(R.string.icon_next_turn),
189187
)
190188
}
@@ -194,11 +192,9 @@ private fun BottomBar(turn: Int, round: Int, viewModel: CombatViewModel) {
194192

195193
@Composable
196194
private fun rememberNotSavedModalBottomSheetState(): ModalBottomSheetState {
197-
val disposableClock = AmbientAnimationClock.current.asDisposableClock()
198-
return remember(disposableClock) {
195+
return remember {
199196
ModalBottomSheetState(
200197
initialValue = ModalBottomSheetValue.Hidden,
201-
clock = disposableClock,
202198
animationSpec = SwipeableDefaults.AnimationSpec,
203199
confirmStateChange = { true },
204200
)
@@ -210,8 +206,8 @@ private fun AutoCloseOnEndedCombat(
210206
viewModel: CombatViewModel,
211207
routing: Routing<Route.ActiveCombat>
212208
) {
213-
val context = AmbientContext.current
214-
val lifecycleOwner = AmbientLifecycleOwner.current
209+
val context = LocalContext.current
210+
val lifecycleOwner = LocalLifecycleOwner.current
215211

216212
val observer: Observer<Boolean> = remember(routing) {
217213
Observer { active ->
@@ -254,7 +250,7 @@ private fun CombatantList(
254250
isGameMaster: Boolean,
255251
onCombatantClicked: (CombatantItem) -> Unit,
256252
) {
257-
val userId = AmbientUser.current.id
253+
val userId = LocalUser.current.id
258254

259255
DraggableListFor(
260256
combatants,
@@ -271,7 +267,7 @@ private fun CombatantList(
271267
combatant,
272268
isDragged = isDragged,
273269
modifier = when {
274-
canEditCombatant(userId, isGameMaster, combatant) -> Modifier.tapGestureFilter {
270+
canEditCombatant(userId, isGameMaster, combatant) -> Modifier.clickable {
275271
onCombatantClicked(combatant)
276272
}
277273
else -> Modifier
@@ -287,7 +283,8 @@ private fun CombatantSheet(
287283
viewModel: CombatViewModel
288284
) {
289285
Column(
290-
Modifier.verticalScroll(rememberScrollState())
286+
Modifier
287+
.verticalScroll(rememberScrollState())
291288
.padding(Spacing.bodyPadding),
292289
verticalArrangement = Arrangement.spacedBy(Spacing.small),
293290
) {
@@ -376,7 +373,7 @@ private fun CombatantListItem(
376373
elevation = if (isDragged) 6.dp else 2.dp,
377374
shape = MaterialTheme.shapes.medium,
378375
) {
379-
Row(Modifier.preferredHeight(IntrinsicSize.Max)) {
376+
Row(Modifier.height(IntrinsicSize.Max)) { /* TODO: REMOVE COMMENT */
380377
Box(
381378
Modifier
382379
.fillMaxHeight()
@@ -395,14 +392,14 @@ private fun CombatantListItem(
395392
when (combatant) {
396393
is CombatantItem.Character -> {
397394
Icon(
398-
vectorResource(R.drawable.ic_character),
395+
painterResource(R.drawable.ic_character),
399396
stringResource(R.string.icon_combatant_character),
400397
iconModifier,
401398
)
402399
}
403400
is CombatantItem.Npc -> {
404401
Icon(
405-
vectorResource(R.drawable.ic_npc),
402+
painterResource(R.drawable.ic_npc),
406403
stringResource(R.string.icon_combatant_npc),
407404
iconModifier,
408405
)

app/combat/src/main/java/cz/frantisekmasa/wfrp_master/combat/ui/StartCombatDialog.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import androidx.compose.foundation.verticalScroll
88
import androidx.compose.material.*
99
import androidx.compose.runtime.*
1010
import androidx.compose.ui.Modifier
11-
import androidx.compose.ui.platform.AmbientContext
11+
import androidx.compose.ui.platform.LocalContext
1212
import androidx.compose.ui.res.stringResource
1313
import cz.frantisekmasa.wfrp_master.combat.R
1414
import cz.frantisekmasa.wfrp_master.combat.domain.encounter.Npc
@@ -58,7 +58,7 @@ fun StartCombatDialog(
5858
actions = {
5959
val saving by remember { mutableStateOf(false) }
6060
val coroutineScope = rememberCoroutineScope()
61-
val context = AmbientContext.current
61+
val context = LocalContext.current
6262

6363
TopBarAction(
6464
textRes = R.string.button_save,

app/compendium/build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
id("kotlin-parcelize")
55
}
66

7-
val composeVersion = "1.0.0-alpha11"
7+
val composeVersion = "1.0.0-beta01"
88

99
android {
1010
compileSdkVersion(29)
@@ -43,6 +43,7 @@ android {
4343
"-Xallow-jvm-ir-dependencies" +
4444
"-Xopt-in=androidx.compose.foundation.layout.ExperimentalLayout" +
4545
"-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" +
46+
"-Xopt-in=androidx.compose.material.ExperimentalMaterialApi" +
4647
"-P" +
4748
"plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true"
4849
}
@@ -53,7 +54,7 @@ dependencies {
5354
implementation(project(":app:navigation"))
5455

5556
// Tools for Rulebook PDF parsing
56-
implementation("com.github.librepdf:openpdf:1.3.23")
57+
implementation("com.github.librepdf:openpdf:1.3.25")
5758
implementation("com.github.andob:android-awt:1.0.0")
5859

5960
// Testing utilities

app/compendium/src/main/java/cz/frantisekmasa/wfrp_master/compendium/ui/CompendiumImportScreen.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import androidx.compose.runtime.*
1515
import androidx.compose.runtime.livedata.observeAsState
1616
import androidx.compose.ui.Alignment
1717
import androidx.compose.ui.Modifier
18-
import androidx.compose.ui.platform.AmbientContext
18+
import androidx.compose.ui.platform.LocalContext
1919
import androidx.compose.ui.res.stringResource
2020
import androidx.compose.ui.text.intl.Locale
2121
import androidx.compose.ui.text.style.TextAlign
@@ -27,7 +27,7 @@ import cz.frantisekmasa.wfrp_master.compendium.R
2727
import cz.frantisekmasa.wfrp_master.compendium.domain.importer.RulebookCompendiumImporter
2828
import cz.frantisekmasa.wfrp_master.core.ui.buttons.BackButton
2929
import cz.frantisekmasa.wfrp_master.core.ui.scaffolding.Subtitle
30-
import cz.frantisekmasa.wfrp_master.core.ui.viewinterop.AmbientActivity
30+
import cz.frantisekmasa.wfrp_master.core.ui.viewinterop.LocalActivity
3131
import cz.frantisekmasa.wfrp_master.core.ui.viewinterop.registerForActivityResult
3232
import cz.frantisekmasa.wfrp_master.core.viewModel.viewModel
3333
import cz.frantisekmasa.wfrp_master.navigation.Route
@@ -62,7 +62,7 @@ private fun TopBar(routing: Routing<Route.CompendiumImport>) {
6262

6363
@Composable
6464
private fun MainContainer(routing: Routing<Route.CompendiumImport>) {
65-
val context = AmbientContext.current
65+
val context = LocalContext.current
6666
val coroutineScope = rememberCoroutineScope()
6767

6868
var importState by remember { mutableStateOf<ImportDialogState?>(null) }
@@ -121,7 +121,7 @@ private fun MainContainer(routing: Routing<Route.CompendiumImport>) {
121121
verticalArrangement = Arrangement.spacedBy(20.dp, Alignment.CenterVertically),
122122
horizontalAlignment = Alignment.CenterHorizontally,
123123
) {
124-
val activity = AmbientActivity.current
124+
val activity = LocalActivity.current
125125
val storeUrl = stringResource(R.string.rulebook_store_url)
126126

127127
Text(

0 commit comments

Comments
 (0)