diff --git a/app/build.gradle b/app/build.gradle
index 59e681f..9391b43 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -5,14 +5,14 @@ plugins {
android {
namespace 'com.mitchelbv.thuis_c'
- compileSdk 33
+ compileSdk 34
defaultConfig {
applicationId "com.mitchelbv.thuis_c"
minSdk 30
- targetSdk 33
- versionCode 1
- versionName "1.0"
+ targetSdk 34
+ versionCode 3
+ versionName "1.3"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1cc0729..05217f9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,7 +4,6 @@
-
{
+ val tempMatches = mutableListOf()
+ val token = feyenoordService.getToken()
+ val feyenoordApiResponse = token.token?.let { feyenoordService.getEvents(it) }
+ feyenoordApiResponse?.TabItems?.filter { it.CategoryId == 2 }?.forEach {
+ for (item in it.Items) {
+
+ tempMatches.add(
+ Match(
+ homeTeam = item.NameHomeTeam!!,
+ awayTeam = item.NameAwayTeam!!,
+ date = item.EventStartDateTime?.let { it1 ->
+ toLocalFormattedDateTime(
+ it1,
+ "dd MMMM"
+ )
+ }.toString(),
+ beginTime = item.EventStartDateTime?.let { it1 ->
+ toLocalFormattedDateTime(
+ it1,
+ "HH:mm"
+ )
+ }.toString(),
+ endTime = item.EventEndDateTime?.let { it1 ->
+ toLocalFormattedDateTime(
+ it1,
+ "HH:mm"
+ )
+ }.toString(),
+ awayImage = item.AwayImageUrl!!,
+ homeImage = item.HomeImageUrl!!
+ )
+ )
+ }
+ }
+ return tempMatches
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordView.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordView.kt
index ef157d1..2b600a7 100644
--- a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordView.kt
+++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordView.kt
@@ -1,6 +1,5 @@
package com.mitchelbv.thuis_c.ui.feyenoord
-import android.widget.Spinner
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
@@ -12,6 +11,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@@ -26,21 +26,23 @@ fun FeyenoordScreen(
navHostController: NavHostController
) {
val feyenoordUiState by feyenoordViewModel.uiState.collectAsState()
- if (feyenoordUiState.loading) {
- Column(
- modifier = Modifier.fillMaxSize(),
- verticalArrangement = Arrangement.Center,
- horizontalAlignment = Alignment.CenterHorizontally
- ) {
- CircularProgressIndicator()
- }
- }
Column(
- modifier = Modifier
- .verticalScroll(rememberScrollState())
-// .padding(16.dp)
+ modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()),
+ verticalArrangement = Arrangement.Center,
+ horizontalAlignment = Alignment.CenterHorizontally
) {
- MatchList(matches = feyenoordUiState.matches, Modifier)
+ if (feyenoordUiState.matches.isEmpty()) {
+ CircularProgressIndicator()
+ } else {
+ MatchList(matches = feyenoordUiState.matches, Modifier)
+ }
+// if (feyenoordUiState.loading) {
+// CircularProgressIndicator()
+// } else if (feyenoordUiState.error) {
+// Text(feyenoordUiState.errorMessage)
+// } else {
+// MatchList(matches = feyenoordUiState.matches, Modifier)
+// }
}
}
@@ -54,7 +56,7 @@ fun MatchList(matches: List, modifier: Modifier) {
}
@Composable
-fun TeamNameWithLogo(team_name: String, team_logo_url: String, modifier: Modifier) {
+fun TeamNameWithLogo(teamName: String, teamLogoUrl: String, modifier: Modifier) {
Column(
modifier = modifier
.size(128.dp)
@@ -63,17 +65,18 @@ fun TeamNameWithLogo(team_name: String, team_logo_url: String, modifier: Modifie
Alignment.CenterHorizontally
) {
AsyncImage(
- model = team_logo_url,
- contentDescription = team_name,
+ model = teamLogoUrl,
+ contentDescription = teamName,
placeholder = painterResource(id = R.drawable.placeholder),
contentScale = ContentScale.Fit,
modifier = modifier.size(64.dp)
)
Text(
- text = team_name,
+ text = teamName,
+ textAlign = TextAlign.Center,
modifier = modifier
.fillMaxWidth()
- .wrapContentWidth(Alignment.CenterHorizontally)
+// .wrapContentWidth(Alignment.CenterHorizontally)
)
}
@@ -90,8 +93,8 @@ fun MatchCard(match: Match, modifier: Modifier) {
.height(128.dp)
) {
TeamNameWithLogo(
- team_name = match.homeTeam,
- team_logo_url = match.homeImage,
+ teamName = match.homeTeam,
+ teamLogoUrl = match.homeImage,
modifier = modifier
)
Column(
@@ -106,8 +109,8 @@ fun MatchCard(match: Match, modifier: Modifier) {
}
}
TeamNameWithLogo(
- team_name = match.awayTeam,
- team_logo_url = match.awayImage,
+ teamName = match.awayTeam,
+ teamLogoUrl = match.awayImage,
modifier = modifier
)
diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordViewModel.kt
index a656495..81dd0cf 100644
--- a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordViewModel.kt
+++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/FeyenoordViewModel.kt
@@ -1,8 +1,11 @@
package com.mitchelbv.thuis_c.ui.feyenoord
+import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.mitchelbv.thuis_c.network.feyenoord.FeyenoordRetrofitHelper
+import com.mitchelbv.thuis_c.network.feyenoord.FeyenoordService
+import com.mitchelbv.thuis_c.repository.FeyenoordRepository
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -14,58 +17,21 @@ import java.util.TimeZone
data class FeyenoordUiState(
val matches: List = listOf(),
- val loading: Boolean = true
+ val loading: Boolean = true,
)
class FeyenoordViewModel : ViewModel() {
private val _uiState = MutableStateFlow(FeyenoordUiState())
val uiState: StateFlow = _uiState.asStateFlow()
+ private val feyenoordRepository: FeyenoordRepository = FeyenoordRepository()
init {
fillMatches()
}
- private fun toLocalFormattedDateTime(date: String, outputFormat: String): String {
- val apiUtcDate = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault())
- apiUtcDate.timeZone = TimeZone.getTimeZone("UTC")
- val parsedDate = apiUtcDate.parse(date)
-
- val localDateFormat = SimpleDateFormat(outputFormat, Locale.getDefault())
- localDateFormat.timeZone = TimeZone.getDefault()
- return localDateFormat.format(parsedDate);
- }
-
private fun fillMatches() {
- val tempMatches = mutableListOf()
viewModelScope.launch(Dispatchers.IO) {
-
- val tokenResponse = FeyenoordRetrofitHelper.feyenoord.getToken()
- val apiResponse = tokenResponse.token?.let {
- FeyenoordRetrofitHelper.feyenoord.getEvents(
- it
- )
- }
- if (apiResponse != null) {
- for (tabItem in apiResponse.TabItems) {
- val test = arrayOf(tabItem).filter { it.CategoryId == 2 }
- test.forEach {
- for (item in it.Items) {
- tempMatches.add(
- Match(
- homeTeam = item.NameHomeTeam!!,
- awayTeam = item.NameAwayTeam!!,
- date = item.EventStartDateTime?.let { it1 -> toLocalFormattedDateTime(it1, "dd MMMM") }.toString(),
- beginTime = item.EventStartDateTime?.let { it1 -> toLocalFormattedDateTime(it1, "HH:mm")}.toString(),
- endTime = item.EventEndDateTime?.let { it1 -> toLocalFormattedDateTime(it1, "HH:mm")}.toString(),
- awayImage = item.AwayImageUrl!!,
- homeImage = item.HomeImageUrl!!
- )
- )
- }
- }
- }
- }
- _uiState.value = FeyenoordUiState(matches = tempMatches, loading = false)
+ _uiState.value = FeyenoordUiState(matches = feyenoordRepository.getMatches(), loading = false)
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/home/Home.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/home/Home.kt
index 5eb850e..612a538 100644
--- a/app/src/main/java/com/mitchelbv/thuis_c/ui/home/Home.kt
+++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/home/Home.kt
@@ -24,8 +24,8 @@ fun HomeScreen(navController: NavHostController) {
// Row(modifier = Modifier.height(100.dp).width(180.dp)) {
// HomeCard(cardId = R.drawable.storefront, cardText = R.string.home_card_cards, routeTo = Screen.Cards.route, navController = navController)
// HomeCard(cardId = R.drawable.feyenoord, cardText = R.string.home_card_freezer, routeTo = Screen.Freezer.route, navController = navController)
- HomeButton(buttonText = R.string.home_card_cards, routeTo = Screen.Cards.route, navController = navController)
- HomeButton(buttonText = R.string.home_card_freezer, routeTo = Screen.Freezer.route, navController = navController)
+// HomeButton(buttonText = R.string.home_card_cards, routeTo = Screen.Cards.route, navController = navController)
+// HomeButton(buttonText = R.string.home_card_freezer, routeTo = Screen.Freezer.route, navController = navController)
// }
}
}
diff --git a/build.gradle b/build.gradle
index e919c0c..0d3b968 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ buildscript {
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
- id 'com.android.application' version '8.6.0' apply false
- id 'com.android.library' version '8.6.0' apply false
+ id 'com.android.application' version '8.7.3' apply false
+ id 'com.android.library' version '8.7.3' apply false
id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 00c1a66..2000017 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Mon Oct 31 14:59:45 CET 2022
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME