Get bets in bet page
continuous-integration/drone/push Build is passing Details

pull/3/head
Arthur VALIN 2 years ago
parent 269dfdd433
commit 8499f70df0

@ -35,56 +35,10 @@ import fr.iut.alldev.allin.R
import fr.iut.alldev.allin.data.ext.formatToMediumDateNoYear
import fr.iut.alldev.allin.data.ext.formatToTime
import fr.iut.alldev.allin.data.model.bet.Bet
import fr.iut.alldev.allin.data.model.bet.BetFinishedStatus
import fr.iut.alldev.allin.data.model.bet.BetStatus
import fr.iut.alldev.allin.data.model.bet.MatchBet
import fr.iut.alldev.allin.data.model.bet.YesNoBet
import fr.iut.alldev.allin.theme.AllInTheme
import fr.iut.alldev.allin.ui.bet.components.BetScreenCard
import fr.iut.alldev.allin.ui.bet.components.BetScreenPopularCard
import fr.iut.alldev.allin.ui.core.AllInChip
import java.time.ZonedDateTime
private val bets = listOf(
YesNoBet(
theme = "Études",
phrase = "Emre va t'il finir son TP de MAUI?",
endRegisterDate = ZonedDateTime.now(),
endBetDate = ZonedDateTime.now(),
isPublic = true,
betStatus = BetStatus.Waiting,
creator = "Lucas"
),
YesNoBet(
theme = "Études",
phrase = "Emre va t'il finir son TP de MAUI?",
endRegisterDate = ZonedDateTime.now(),
endBetDate = ZonedDateTime.now(),
isPublic = true,
betStatus = BetStatus.InProgress,
creator = "Lucas"
),
YesNoBet(
theme = "Études",
phrase = "Emre va t'il finir son TP de MAUI?",
endRegisterDate = ZonedDateTime.now(),
endBetDate = ZonedDateTime.now(),
isPublic = true,
betStatus = BetStatus.Finished(BetFinishedStatus.WON),
creator = "Lucas"
),
MatchBet(
theme = "Études",
phrase = "Emre va t'il finir son TP de MAUI?",
endRegisterDate = ZonedDateTime.now(),
endBetDate = ZonedDateTime.now(),
isPublic = true,
betStatus = BetStatus.Waiting,
nameTeam1 = "Team 1",
nameTeam2 = "Team 2",
creator = "Lucas"
),
)
@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterialApi::class)
@Composable
@ -93,6 +47,8 @@ fun BetScreen(
selectBet: (Bet, Boolean) -> Unit,
) {
val bets by viewModel.bets.collectAsState()
val horizontalPadding = 23.dp
val refreshing by viewModel.isRefreshing.collectAsState()

@ -3,23 +3,41 @@ package fr.iut.alldev.allin.ui.bet
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import fr.iut.alldev.allin.data.model.bet.Bet
import fr.iut.alldev.allin.data.repository.BetRepository
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.emitAll
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import javax.inject.Inject
@HiltViewModel
class BetViewModel @Inject constructor(
private val betRepository: BetRepository
) : ViewModel() {
private val _isRefreshing = MutableStateFlow(false)
val isRefreshing: StateFlow<Boolean>
get() = _isRefreshing.asStateFlow()
val bets: StateFlow<List<Bet>> by lazy {
flow {
kotlin.runCatching { emitAll(betRepository.getAllBets()) }
}
.filterNotNull()
.stateIn(
viewModelScope,
SharingStarted.WhileSubscribed(5_000L),
emptyList()
)
}
private fun refreshData() {
Thread.sleep(1000)

@ -3,6 +3,7 @@ package fr.iut.alldev.allin.data.api
import fr.iut.alldev.allin.data.api.model.CheckUser
import fr.iut.alldev.allin.data.api.model.RequestBet
import fr.iut.alldev.allin.data.api.model.RequestUser
import fr.iut.alldev.allin.data.api.model.ResponseBet
import fr.iut.alldev.allin.data.api.model.ResponseUser
import retrofit2.http.Body
import retrofit2.http.GET
@ -21,4 +22,7 @@ interface AllInApi {
@POST("bets/add")
suspend fun createBet(@Body body: RequestBet)
@GET("bets/gets")
suspend fun getAllBets(): List<ResponseBet>
}

@ -7,4 +7,5 @@ abstract class BetRepository {
abstract suspend fun createBet(bet: Bet, token: String)
abstract suspend fun getHistory(): Flow<List<Bet>>
abstract suspend fun getCurrentBets(): Flow<List<Bet>>
abstract suspend fun getAllBets(): Flow<List<Bet>>
}

@ -21,7 +21,6 @@ class BetRepositoryImpl @Inject constructor(
}
override suspend fun getHistory(): Flow<List<Bet>> {
// TODO
return flowOf(
listOf(
YesNoBet(
@ -90,4 +89,10 @@ class BetRepositoryImpl @Inject constructor(
)
}
override suspend fun getAllBets(): Flow<List<Bet>> {
return flowOf(
api.getAllBets().map { it.toBet() }
)
}
}
Loading…
Cancel
Save