Small corrections
continuous-integration/drone/push Build is passing Details

pull/3/head
Arthur VALIN 1 year ago
parent 19b76360f4
commit c97bf42cb6

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" /> <bytecodeTargetLevel target="17" />
</component> </component>
</project> </project>

@ -7,6 +7,7 @@
<option name="testRunner" value="GRADLE" /> <option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="Android Studio default JDK" />
<option name="modules"> <option name="modules">
<set> <set>
<option value="$PROJECT_DIR$" /> <option value="$PROJECT_DIR$" />

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

@ -40,7 +40,7 @@ class BetVOTest {
//When //When
composeTestRule.activity.setContent { composeTestRule.activity.setContent {
AllInTheme{ AllInTheme{
Bets.bets[0].toBetVO()?.accept(v = visitor) Bets.bets[0].toBetVO()?.Accept(v = visitor)
} }
} }
//Expect //Expect
@ -55,7 +55,7 @@ class BetVOTest {
//When //When
composeTestRule.activity.setContent { composeTestRule.activity.setContent {
AllInTheme{ AllInTheme{
Bets.bets[1].toBetVO()?.accept(v = visitor) Bets.bets[1].toBetVO()?.Accept(v = visitor)
} }
} }
//Expect //Expect

@ -10,12 +10,12 @@ import fr.iut.alldev.allin.test.TestTags
class BetTestVisitor : DisplayBetVisitor { class BetTestVisitor : DisplayBetVisitor {
@Composable @Composable
override fun visitYesNoBet(b: YesNoBet) { override fun VisitYesNoBet(b: YesNoBet) {
Text("This is a YesNo Bet", Modifier.testTag(TestTags.YES_NO_BET.tag)) Text("This is a YesNo Bet", Modifier.testTag(TestTags.YES_NO_BET.tag))
} }
@Composable @Composable
override fun visitMatchBet(b: MatchBet) { override fun VisitMatchBet(b: MatchBet) {
Text("This is a Match Bet", Modifier.testTag(TestTags.MATCH_BET.tag)) Text("This is a Match Bet", Modifier.testTag(TestTags.MATCH_BET.tag))
} }
} }

@ -51,7 +51,7 @@ fun BetStatusBottomSheet(
Column( Column(
Modifier.fillMaxHeight(SHEET_HEIGHT) Modifier.fillMaxHeight(SHEET_HEIGHT)
) { ) {
bet?.accept(visitor) bet?.Accept(visitor)
} }
} }
} }

@ -11,10 +11,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.*
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -28,6 +25,7 @@ import fr.iut.alldev.allin.data.model.bet.MatchBet
import fr.iut.alldev.allin.data.model.bet.YesNoBet import fr.iut.alldev.allin.data.model.bet.YesNoBet
import fr.iut.alldev.allin.ext.getDateEndLabel import fr.iut.alldev.allin.ext.getDateEndLabel
import fr.iut.alldev.allin.ext.getDateStartLabel import fr.iut.alldev.allin.ext.getDateStartLabel
import fr.iut.alldev.allin.theme.AllInTheme
import fr.iut.alldev.allin.ui.betstatus.components.BetStatusParticipationBottomSheet import fr.iut.alldev.allin.ui.betstatus.components.BetStatusParticipationBottomSheet
import fr.iut.alldev.allin.ui.betstatus.components.BetStatusWinner import fr.iut.alldev.allin.ui.betstatus.components.BetStatusWinner
import fr.iut.alldev.allin.ui.betstatus.components.YesNoDetailsLine import fr.iut.alldev.allin.ui.betstatus.components.YesNoDetailsLine
@ -36,13 +34,12 @@ import fr.iut.alldev.allin.ui.core.AllInDetailsDrawer
import fr.iut.alldev.allin.ui.core.RainbowButton import fr.iut.alldev.allin.ui.core.RainbowButton
import fr.iut.alldev.allin.ui.core.bet.BetDateTimeRow import fr.iut.alldev.allin.ui.core.bet.BetDateTimeRow
import fr.iut.alldev.allin.ui.core.bet.BetTitleHeader import fr.iut.alldev.allin.ui.core.bet.BetTitleHeader
import fr.iut.alldev.allin.theme.AllInTheme
import fr.iut.alldev.allin.vo.bet.factory.toBetVO import fr.iut.alldev.allin.vo.bet.factory.toBetVO
import fr.iut.alldev.allin.vo.bet.visitor.DisplayBetVisitor import fr.iut.alldev.allin.vo.bet.visitor.DisplayBetVisitor
import java.time.ZonedDateTime import java.time.ZonedDateTime
class BetStatusBottomSheetDisplayBetVisitor( class BetStatusBottomSheetDisplayBetVisitor(
val userCoinAmount: MutableState<Int>, val userCoinAmount: MutableIntState,
val onParticipate: (Int)->Unit val onParticipate: (Int)->Unit
) : DisplayBetVisitor { ) : DisplayBetVisitor {
@ -51,7 +48,7 @@ class BetStatusBottomSheetDisplayBetVisitor(
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
override fun visitYesNoBet(b: YesNoBet) { override fun VisitYesNoBet(b: YesNoBet) {
val (participateSheetVisibility, setParticipateSheetVisibility) = remember{ val (participateSheetVisibility, setParticipateSheetVisibility) = remember{
this.participateBottomSheetVisibility this.participateBottomSheetVisibility
@ -154,7 +151,7 @@ class BetStatusBottomSheetDisplayBetVisitor(
sheetVisibility = participateSheetVisibility && b.betStatus == BetStatus.WAITING, sheetVisibility = participateSheetVisibility && b.betStatus == BetStatus.WAITING,
safeBottomPadding = safeBottomPadding, safeBottomPadding = safeBottomPadding,
betPhrase = b.phrase, betPhrase = b.phrase,
coinAmount = userCoinAmount.value, coinAmount = userCoinAmount.intValue,
onDismiss = { setParticipateSheetVisibility(false) }, onDismiss = { setParticipateSheetVisibility(false) },
state = rememberModalBottomSheetState() state = rememberModalBottomSheetState()
){ ){
@ -162,7 +159,7 @@ class BetStatusBottomSheetDisplayBetVisitor(
} }
} }
@Composable @Composable
override fun visitMatchBet(b: MatchBet) { override fun VisitMatchBet(b: MatchBet) {
Text("This is a MATCH BET") Text("This is a MATCH BET")
} }
} }
@ -172,6 +169,7 @@ class BetStatusBottomSheetDisplayBetVisitor(
@Composable @Composable
private fun YesNoBetPreview() { private fun YesNoBetPreview() {
AllInTheme { AllInTheme {
val coins = remember { mutableIntStateOf(100) }
YesNoBet( YesNoBet(
theme = "Theme", theme = "Theme",
phrase = "Phrase", phrase = "Phrase",
@ -179,20 +177,20 @@ private fun YesNoBetPreview() {
endBetDate = ZonedDateTime.now(), endBetDate = ZonedDateTime.now(),
isPublic = true, isPublic = true,
betStatus = BetStatus.IN_PROGRESS betStatus = BetStatus.IN_PROGRESS
).toBetVO()?.accept( ).toBetVO()?.Accept(
BetStatusBottomSheetDisplayBetVisitor( BetStatusBottomSheetDisplayBetVisitor(
userCoinAmount = mutableStateOf(100), userCoinAmount = coins,
onParticipate = {} onParticipate = {}
) )
) )
} }
} }
@Preview @Preview
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) @Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable @Composable
private fun YesNoBetFinishedPreview() { private fun YesNoBetFinishedPreview() {
AllInTheme { AllInTheme {
val coins = remember { mutableIntStateOf(100) }
YesNoBet( YesNoBet(
theme = "Theme", theme = "Theme",
phrase = "Phrase", phrase = "Phrase",
@ -200,9 +198,9 @@ private fun YesNoBetFinishedPreview() {
endBetDate = ZonedDateTime.now(), endBetDate = ZonedDateTime.now(),
isPublic = true, isPublic = true,
betStatus = BetStatus.FINISHED betStatus = BetStatus.FINISHED
).toBetVO()?.accept( ).toBetVO()?.Accept(
BetStatusBottomSheetDisplayBetVisitor( BetStatusBottomSheetDisplayBetVisitor(
userCoinAmount = mutableStateOf(100), userCoinAmount = coins,
onParticipate = {} onParticipate = {}
) )
) )
@ -214,6 +212,7 @@ private fun YesNoBetFinishedPreview() {
@Composable @Composable
private fun MatchBetPreview() { private fun MatchBetPreview() {
AllInTheme { AllInTheme {
val coins = remember { mutableIntStateOf(100) }
MatchBet( MatchBet(
theme = "Theme", theme = "Theme",
phrase = "Phrase", phrase = "Phrase",
@ -223,9 +222,9 @@ private fun MatchBetPreview() {
betStatus = BetStatus.IN_PROGRESS, betStatus = BetStatus.IN_PROGRESS,
nameTeam1 = "Team 1", nameTeam1 = "Team 1",
nameTeam2 = "Team 2" nameTeam2 = "Team 2"
).toBetVO()?.accept( ).toBetVO()?.Accept(
BetStatusBottomSheetDisplayBetVisitor( BetStatusBottomSheetDisplayBetVisitor(
userCoinAmount = mutableStateOf(100), userCoinAmount = coins,
onParticipate = {} onParticipate = {}
) )
) )

@ -30,8 +30,8 @@ import racra.compose.smooth_corner_rect_library.AbsoluteSmoothCornerShape
fun AllInTextField( fun AllInTextField(
placeholder: String, placeholder: String,
value: String, value: String,
maxChar: Int? = null,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
maxChar: Int? = null,
enabled: Boolean = true, enabled: Boolean = true,
trailingIcon: ImageVector? = null, trailingIcon: ImageVector? = null,
trailingContent: @Composable (() -> Unit)? = null, trailingContent: @Composable (() -> Unit)? = null,
@ -57,7 +57,10 @@ fun AllInTextField(
} }
LaunchedEffect(key1 = value, block = { LaunchedEffect(key1 = value, block = {
textFieldValue = TextFieldValue(text = value, selection = TextRange(value.length)) textFieldValue = TextFieldValue(
text = value,
selection = textFieldValue.selection
)
}) })
OutlinedTextField( OutlinedTextField(
@ -71,7 +74,8 @@ fun AllInTextField(
bringIntoViewRequester.bringIntoView() bringIntoViewRequester.bringIntoView()
} }
} }
}, }
,
supportingText = errorText?.let { supportingText = errorText?.let {
{ AllInErrorLine(text = it) } { AllInErrorLine(text = it) }
}, },

@ -1,5 +1,6 @@
package fr.iut.alldev.allin.ui.main package fr.iut.alldev.allin.ui.main
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
@ -13,7 +14,7 @@ import kotlinx.coroutines.withContext
import javax.inject.Inject import javax.inject.Inject
class UserState(val user: User){ class UserState(val user: User){
val userCoins = mutableStateOf(user.coins) val userCoins = mutableIntStateOf(user.coins)
} }
@HiltViewModel @HiltViewModel
@ -32,7 +33,7 @@ class MainViewModel @Inject constructor(
viewModelScope.launch { viewModelScope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
loading.value = true loading.value = true
currentUserState.userCoins.value += 50 currentUserState.userCoins.intValue += 50
Thread.sleep(1000) Thread.sleep(1000)
loading.value = false loading.value = false
} }

@ -4,5 +4,5 @@ import androidx.compose.runtime.Composable
interface ViewObject<V : Visitor>{ interface ViewObject<V : Visitor>{
@Composable @Composable
fun accept(v: V) fun Accept(v: V)
} }

@ -10,19 +10,19 @@ import fr.iut.alldev.allin.vo.bet.visitor.DisplayBetVisitor
abstract class BetVO<T: Bet>(val bet: T) abstract class BetVO<T: Bet>(val bet: T)
: ViewObject<DisplayBetVisitor> { : ViewObject<DisplayBetVisitor> {
@Composable @Composable
abstract override fun accept(v: DisplayBetVisitor) abstract override fun Accept(v: DisplayBetVisitor)
} }
class YesNoBetVO(bet: YesNoBet) : BetVO<YesNoBet>(bet){ class YesNoBetVO(bet: YesNoBet) : BetVO<YesNoBet>(bet){
@Composable @Composable
override fun accept(v: DisplayBetVisitor){ override fun Accept(v: DisplayBetVisitor){
v.visitYesNoBet(b = bet) v.VisitYesNoBet(b = bet)
} }
} }
class MatchBetVO(bet: MatchBet) : BetVO<MatchBet>(bet){ class MatchBetVO(bet: MatchBet) : BetVO<MatchBet>(bet){
@Composable @Composable
override fun accept(v: DisplayBetVisitor){ override fun Accept(v: DisplayBetVisitor){
v.visitMatchBet(b = bet) v.VisitMatchBet(b = bet)
} }
} }

@ -8,8 +8,8 @@ import fr.iut.alldev.allin.vo.Visitor
interface DisplayBetVisitor : Visitor { interface DisplayBetVisitor : Visitor {
@Composable @Composable
fun visitYesNoBet(b: YesNoBet) fun VisitYesNoBet(b: YesNoBet)
@Composable @Composable
fun visitMatchBet(b: MatchBet) fun VisitMatchBet(b: MatchBet)
} }
Loading…
Cancel
Save