From 019ed9c49a82e16395ab2f0c7a3c52dd2b81fe73 Mon Sep 17 00:00:00 2001 From: KaasKop Date: Sun, 22 Sep 2024 12:22:22 +0200 Subject: [PATCH] Update feyenoord authentication, UI fixes --- .gitignore | 9 +-- .idea/.gitignore | 3 - .idea/.name | 1 - .idea/compiler.xml | 6 -- .idea/deploymentTargetDropDown.xml | 17 ----- .idea/gradle.xml | 20 ------ .idea/inspectionProfiles/Project_Default.xml | 29 --------- .idea/misc.xml | 10 --- .idea/vcs.xml | 6 -- .../feyenoord/FeyenoordRetrofitHelper.kt | 4 +- .../network/feyenoord/FeyenoordService.kt | 12 ++-- .../FeyenoordTokenResponse/CurrentChannel.kt | 28 +++++++++ .../FeyenoordTokenResponse.kt | 11 ++++ .../FeyenoordTokenResponse/SalesChannel.kt | 26 ++++++++ .../ButtonData.kt | 6 +- .../EventEndDateTimeFormatted.kt | 2 +- .../EventStartDateTimeFormatted.kt | 2 +- .../FeyenoordEventResponse.kt | 2 +- .../HeaderItem.kt | 2 +- .../{ => FeyenoordEventResponse}/Items.kt | 4 +- .../{ => FeyenoordEventResponse}/TabItems.kt | 2 +- .../thuis_c/ui/feyenoord/FeyenoordView.kt | 54 +++++++++++----- .../ui/feyenoord/FeyenoordViewModel.kt | 63 ++++++++++++------- .../mitchelbv/thuis_c/ui/feyenoord/Match.kt | 12 ++-- .../thuis_c/ui/home/HomeViewModel.kt | 25 ++++---- build.gradle | 4 +- gradle.properties | 4 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 28 files changed, 188 insertions(+), 178 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/.name delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml create mode 100644 app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/CurrentChannel.kt create mode 100644 app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/FeyenoordTokenResponse.kt create mode 100644 app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/SalesChannel.kt rename app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/{ => FeyenoordEventResponse}/ButtonData.kt (79%) rename app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/{ => FeyenoordEventResponse}/EventEndDateTimeFormatted.kt (90%) rename app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/{ => FeyenoordEventResponse}/EventStartDateTimeFormatted.kt (89%) rename app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/{ => FeyenoordEventResponse}/FeyenoordEventResponse.kt (79%) rename app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/{ => FeyenoordEventResponse}/HeaderItem.kt (98%) rename app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/{ => FeyenoordEventResponse}/Items.kt (92%) rename app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/{ => FeyenoordEventResponse}/TabItems.kt (81%) diff --git a/.gitignore b/.gitignore index 01684f2..d848d30 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,11 @@ *.iml .gradle /local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml +/.idea .DS_Store /build /captures .externalNativeBuild .cxx local.properties -app/release +app/release \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 4aba80d..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -Thuis \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index fb7f4a8..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index b501610..0000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index a0de2a1..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index bd2a505..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index bdd9278..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordRetrofitHelper.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordRetrofitHelper.kt index 13fb1b1..a20a691 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordRetrofitHelper.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordRetrofitHelper.kt @@ -4,12 +4,12 @@ import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory object FeyenoordRetrofitHelper { - val baseUrl = "https://tickets-api.feyenoord.nl/api/" + const val baseUrl = "https://feyenoord.api.tymes4-infra.com/v2/" private val retrofit = Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .build() - val feyenoord = retrofit.create(FeyenoordService::class.java) + val feyenoord: FeyenoordService = retrofit.create(FeyenoordService::class.java) } \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordService.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordService.kt index c3c92cf..92b761e 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordService.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordService.kt @@ -1,10 +1,14 @@ package com.mitchelbv.thuis_c.network.feyenoord -import com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse -import retrofit2.Call +import com.mitchelbv.thuis_c.network.feyenoord.FeyenoordTokenResponse.FeyenoordTokenResponse +import com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse.FeyenoordEventResponse import retrofit2.http.GET +import retrofit2.http.Header interface FeyenoordService { - @GET("event") - suspend fun getEvents(): FeyenoordEventResponse + @GET("Event") + suspend fun getEvents(@Header("Authorization") token: String): FeyenoordEventResponse + + @GET("Account/default-token") + suspend fun getToken(): FeyenoordTokenResponse } \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/CurrentChannel.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/CurrentChannel.kt new file mode 100644 index 0000000..9fb75d9 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/CurrentChannel.kt @@ -0,0 +1,28 @@ +package com.mitchelbv.thuis_c.network.feyenoord.FeyenoordTokenResponse + +import com.google.gson.annotations.SerializedName + + +data class CurrentChannel( + + @SerializedName("Id") var id: Int? = null, + @SerializedName("Name") var name: String? = null, + @SerializedName("Code") var code: String? = null, + @SerializedName("HexColor") var hexColor: String? = null, + @SerializedName("Active") var active: Boolean? = null, + @SerializedName("HexBackColor") var hexBackColor: String? = null, + @SerializedName("HexForeColor") var hexForeColor: String? = null, + @SerializedName("SalesGroupId") var salesGroupId: Int? = null, + @SerializedName("ShowMarketplaceForEvent") var showMarketplaceForEvent: Boolean? = null, + @SerializedName("RedirectToMarketplace") var redirectToMarketplace: Boolean? = null, + @SerializedName("AllowAnonymous") var allowAnonymous: Boolean? = null, + @SerializedName("ParentCode") var parentCode: String? = null, + @SerializedName("ParentId") var parentId: String? = null, + @SerializedName("UserSelectable") var userSelectable: Boolean? = null, + @SerializedName("HeaderImageId") var headerImageId: String? = null, + @SerializedName("HeaderImageFileName") var headerImageFileName: String? = null, + @SerializedName("HeaderImageUrl") var headerImageUrl: String? = null, + @SerializedName("TicketshopHeaderLinkText") var ticketshopHeaderLinkText: String? = null, + @SerializedName("CustomCSS") var customCSS: String? = null + +) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/FeyenoordTokenResponse.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/FeyenoordTokenResponse.kt new file mode 100644 index 0000000..b38af33 --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/FeyenoordTokenResponse.kt @@ -0,0 +1,11 @@ +package com.mitchelbv.thuis_c.network.feyenoord.FeyenoordTokenResponse + +import com.google.gson.annotations.SerializedName + +data class FeyenoordTokenResponse( + @SerializedName("AuthResult") var authResult: Int? = null, + @SerializedName("Token") var token: String? = null, + @SerializedName("CurrentChannel") var currentChannel: CurrentChannel? = CurrentChannel(), + @SerializedName("SalesChannels") var salesChannels: ArrayList = arrayListOf(), + @SerializedName("IsArchiveMode") var isArchiveMode: Boolean? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/SalesChannel.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/SalesChannel.kt new file mode 100644 index 0000000..c24c92d --- /dev/null +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/FeyenoordTokenResponse/SalesChannel.kt @@ -0,0 +1,26 @@ +package com.mitchelbv.thuis_c.network.feyenoord.FeyenoordTokenResponse + +import com.google.gson.annotations.SerializedName + +data class SalesChannels( + @SerializedName("Id") var id: Int? = null, + @SerializedName("Name") var name: String? = null, + @SerializedName("Code") var code: String? = null, + @SerializedName("HexColor") var hexColor: String? = null, + @SerializedName("Active") var active: Boolean? = null, + @SerializedName("HexBackColor") var hexBackColor: String? = null, + @SerializedName("HexForeColor") var hexForeColor: String? = null, + @SerializedName("SalesGroupId") var salesGroupId: Int? = null, + @SerializedName("ShowMarketplaceForEvent") var showMarketplaceForEvent: Boolean? = null, + @SerializedName("RedirectToMarketplace") var redirectToMarketplace: Boolean? = null, + @SerializedName("AllowAnonymous") var allowAnonymous: Boolean? = null, + @SerializedName("ParentCode") var parentCode: String? = null, + @SerializedName("ParentId") var parentId: String? = null, + @SerializedName("UserSelectable") var userSelectable: Boolean? = null, + @SerializedName("HeaderImageId") var headerImageId: String? = null, + @SerializedName("HeaderImageFileName") var headerImageFileName: String? = null, + @SerializedName("HeaderImageUrl") var headerImageUrl: String? = null, + @SerializedName("TicketshopHeaderLinkText") var ticketshopHeaderLinkText: String? = null, + @SerializedName("CustomCSS") var customCSS: String? = null + +) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/ButtonData.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/ButtonData.kt similarity index 79% rename from app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/ButtonData.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/ButtonData.kt index bd3536c..6c2c320 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/ButtonData.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/ButtonData.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.feyenoord.responses +package com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse import com.google.gson.annotations.SerializedName @@ -8,8 +8,8 @@ data class ButtonData( @SerializedName("EventId") var EventId: Int? = null, @SerializedName("SaleCategoryId") var SaleCategoryId: Int? = null, @SerializedName("TranslationCode") var TranslationCode: String? = null, - @SerializedName("ButtonStyle") var ButtonStyle: Int? = null, - @SerializedName("ActionType") var ActionType: Int? = null, + @SerializedName("ButtonStyle") var ButtonStyle: String? = null, + @SerializedName("ActionType") var ActionType: String? = null, @SerializedName("Action") var Action: String? = null, @SerializedName("ActiveFrom") var ActiveFrom: String? = null, @SerializedName("ActiveTill") var ActiveTill: String? = null, diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventEndDateTimeFormatted.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/EventEndDateTimeFormatted.kt similarity index 90% rename from app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventEndDateTimeFormatted.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/EventEndDateTimeFormatted.kt index e63861d..81bf9ee 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventEndDateTimeFormatted.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/EventEndDateTimeFormatted.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.feyenoord.responses +package com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventStartDateTimeFormatted.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/EventStartDateTimeFormatted.kt similarity index 89% rename from app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventStartDateTimeFormatted.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/EventStartDateTimeFormatted.kt index 0bd1fe6..0c772c4 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/EventStartDateTimeFormatted.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/EventStartDateTimeFormatted.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.feyenoord.responses +package com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/FeyenoordEventResponse.kt similarity index 79% rename from app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/FeyenoordEventResponse.kt index 0b85424..cb9df2b 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/FeyenoordEventResponse.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.feyenoord.responses +package com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/HeaderItem.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/HeaderItem.kt similarity index 98% rename from app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/HeaderItem.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/HeaderItem.kt index 1ead3e3..7da0ff1 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/HeaderItem.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/HeaderItem.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.feyenoord.responses +package com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse import com.google.gson.annotations.SerializedName diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/Items.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/Items.kt similarity index 92% rename from app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/Items.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/Items.kt index b51be2e..64cb351 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/Items.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/Items.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.feyenoord.responses +package com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse import com.google.gson.annotations.SerializedName @@ -51,8 +51,6 @@ data class Items( @SerializedName("EventTypeLogoFileName") var EventTypeLogoFileName: String? = null, @SerializedName("EventTypeLogoUniqueName") var EventTypeLogoUniqueName: String? = null, @SerializedName("InfoUrl") var InfoUrl: String? = null, - @SerializedName("EventStartDateTimeFormatted") var EventStartDateTimeFormatted: EventStartDateTimeFormatted? = EventStartDateTimeFormatted(), - @SerializedName("EventEndDateTimeFormatted") var EventEndDateTimeFormatted: EventEndDateTimeFormatted? = EventEndDateTimeFormatted(), @SerializedName("ButtonData") var ButtonData: ButtonData? = ButtonData(), @SerializedName("ShowMarketplaceForEvent") var ShowMarketplaceForEvent: Boolean? = null, @SerializedName("RedirectToMarketplace") var RedirectToMarketplace: Boolean? = null, diff --git a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/TabItems.kt b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/TabItems.kt similarity index 81% rename from app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/TabItems.kt rename to app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/TabItems.kt index f72f707..5b8e6db 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/TabItems.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/network/feyenoord/responses/FeyenoordEventResponse/TabItems.kt @@ -1,4 +1,4 @@ -package com.mitchelbv.thuis_c.network.feyenoord.responses +package com.mitchelbv.thuis_c.network.feyenoord.responses.FeyenoordEventResponse import com.google.gson.annotations.SerializedName 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 058a58d..ef157d1 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,5 +1,6 @@ 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 @@ -20,8 +21,20 @@ import coil.compose.AsyncImage import com.mitchelbv.thuis_c.R @Composable -fun FeyenoordScreen(feyenoordViewModel: FeyenoordViewModel = viewModel(), navHostController: NavHostController) { +fun FeyenoordScreen( + feyenoordViewModel: FeyenoordViewModel = viewModel(), + 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()) @@ -42,7 +55,13 @@ fun MatchList(matches: List, modifier: Modifier) { @Composable fun TeamNameWithLogo(team_name: String, team_logo_url: String, modifier: Modifier) { - Column(modifier = modifier.size(128.dp).fillMaxWidth(), Arrangement.Center, Alignment.CenterHorizontally) { + Column( + modifier = modifier + .size(128.dp) + .fillMaxWidth(), + Arrangement.Center, + Alignment.CenterHorizontally + ) { AsyncImage( model = team_logo_url, contentDescription = team_name, @@ -50,7 +69,12 @@ fun TeamNameWithLogo(team_name: String, team_logo_url: String, modifier: Modifie contentScale = ContentScale.Fit, modifier = modifier.size(64.dp) ) - Text(text = team_name, modifier = modifier.fillMaxWidth().wrapContentWidth(Alignment.CenterHorizontally)) + Text( + text = team_name, + modifier = modifier + .fillMaxWidth() + .wrapContentWidth(Alignment.CenterHorizontally) + ) } } @@ -66,8 +90,8 @@ fun MatchCard(match: Match, modifier: Modifier) { .height(128.dp) ) { TeamNameWithLogo( - team_name = match.home_team, - team_logo_url = match.home_image, + team_name = match.homeTeam, + team_logo_url = match.homeImage, modifier = modifier ) Column( @@ -76,14 +100,14 @@ fun MatchCard(match: Match, modifier: Modifier) { ) { Text(text = match.date, overflow = TextOverflow.Ellipsis) Row { - Text(match.begin_time) + Text(match.beginTime) Text(" - ") - Text(match.end_time) + Text(match.endTime) } } TeamNameWithLogo( - team_name = match.away_team, - team_logo_url = match.away_image, + team_name = match.awayTeam, + team_logo_url = match.awayImage, modifier = modifier ) @@ -94,13 +118,13 @@ fun MatchCard(match: Match, modifier: Modifier) { @Composable fun PreviewMatchCard() { val test = Match( - home_image = "https://tymes4-cdn.azureedge.net/feyenoord/21-feyenoord-logo-original.png", - away_image = "https://tymes4-cdn.azureedge.net/feyenoord/291-S.S._Lazio_badge.svg-min-original.png", - home_team = "Feyenoord Vrouwen 1", - away_team = "FC Twente Vrouwen 1", + homeImage = "https://tymes4-cdn.azureedge.net/feyenoord/21-feyenoord-logo-original.png", + awayImage = "https://tymes4-cdn.azureedge.net/feyenoord/291-S.S._Lazio_badge.svg-min-original.png", + homeTeam = "Feyenoord Vrouwen 1", + awayTeam = "FC Twente Vrouwen 1", date = "do 03 November 2023", - begin_time = "18:03", - end_time = "20:03" + beginTime = "18:03", + endTime = "20:03" ) MatchCard(match = test, Modifier) } \ No newline at end of file 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 d5726b1..a656495 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,23 +1,20 @@ package com.mitchelbv.thuis_c.ui.feyenoord -import android.util.Log 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.network.feyenoord.responses.FeyenoordEventResponse import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch -import okhttp3.ResponseBody -import retrofit2.Call -import retrofit2.Callback -import retrofit2.Response +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.TimeZone data class FeyenoordUiState( - val matches: List = listOf() + val matches: List = listOf(), + val loading: Boolean = true ) class FeyenoordViewModel : ViewModel() { @@ -28,27 +25,47 @@ class FeyenoordViewModel : ViewModel() { 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 apiResponse = FeyenoordRetrofitHelper.feyenoord.getEvents() - for (tabItem in apiResponse.TabItems) { - val test = arrayOf(tabItem).filter { it.CategoryId == 2 } - test.forEach { - for (item in it.Items) { - tempMatches.add(Match( - home_team = item.NameHomeTeam!!, - away_team = item.NameAwayTeam!!, - date = item.EventStartDateTimeFormatted?.Full!!, - begin_time = item.EventStartDateTimeFormatted?.Time!!, - end_time = item.EventEndDateTimeFormatted?.Time!!, - away_image = item.AwayImageUrl!!, - home_image = item.HomeImageUrl!! - )) + + 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) + _uiState.value = FeyenoordUiState(matches = tempMatches, loading = false) } } } \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/Match.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/Match.kt index 5326a4c..a76173c 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/Match.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/feyenoord/Match.kt @@ -1,11 +1,11 @@ package com.mitchelbv.thuis_c.ui.feyenoord data class Match( - val home_image: String, - val away_image: String, - val home_team: String, - val away_team: String, + val homeImage: String, + val awayImage: String, + val homeTeam: String, + val awayTeam: String, val date: String, - val begin_time: String, - val end_time: String + val beginTime: String, + val endTime: String ) \ No newline at end of file diff --git a/app/src/main/java/com/mitchelbv/thuis_c/ui/home/HomeViewModel.kt b/app/src/main/java/com/mitchelbv/thuis_c/ui/home/HomeViewModel.kt index 68da1da..01d33ff 100644 --- a/app/src/main/java/com/mitchelbv/thuis_c/ui/home/HomeViewModel.kt +++ b/app/src/main/java/com/mitchelbv/thuis_c/ui/home/HomeViewModel.kt @@ -2,11 +2,8 @@ package com.mitchelbv.thuis_c.ui.home import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.mitchelbv.thuis_c.Screen import com.mitchelbv.thuis_c.network.feyenoord.FeyenoordRetrofitHelper -import com.mitchelbv.thuis_c.network.feyenoord.FeyenoordService import com.mitchelbv.thuis_c.ui.feyenoord.Match -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -33,17 +30,17 @@ class HomeViewModel : ViewModel() { private fun getUpcomingMatch() { viewModelScope.launch { - val apiResponse = FeyenoordRetrofitHelper.feyenoord.getEvents().HeaderItem!! - val match = Match( - home_team = notNullHandler(apiResponse.NameHomeTeam), - away_team = notNullHandler(apiResponse.NameAwayTeam), - date = notNullHandler(apiResponse.EventStartDateTimeFormatted?.Full), - begin_time = notNullHandler(apiResponse.EventStartDateTimeFormatted?.Time), - end_time = notNullHandler(apiResponse.EventEndDateTimeFormatted?.Time), - away_image = notNullHandler(apiResponse.AwayImageUrl), - home_image = notNullHandler(apiResponse.HomeImageUrl) - ) - _uiState.value = HomeUiState(upcomingMatch = match) +// val apiResponse = FeyenoordRetrofitHelper.feyenoord.getEvents().HeaderItem!! +// val match = Match( +// homeTeam = notNullHandler(apiResponse.NameHomeTeam), +// awayTeam = notNullHandler(apiResponse.NameAwayTeam), +// date = notNullHandler(apiResponse.EventStartDateTimeFormatted?.Full), +// beginTime = notNullHandler(apiResponse.EventStartDateTimeFormatted?.Time), +// endTime = notNullHandler(apiResponse.EventEndDateTimeFormatted?.Time), +// awayImage = notNullHandler(apiResponse.AwayImageUrl), +// homeImage = notNullHandler(apiResponse.HomeImageUrl) +// ) +// _uiState.value = HomeUiState(upcomingMatch = match) } } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index e9e9864..e919c0c 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 '7.4.0' apply false - id 'com.android.library' version '7.4.0' apply false + id 'com.android.application' version '8.6.0' apply false + id 'com.android.library' version '8.6.0' apply false id 'org.jetbrains.kotlin.android' version '1.7.20' apply false } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3c5031e..a2e90d8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,4 +20,6 @@ kotlin.code.style=official # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true +android.defaults.buildfeatures.buildconfig=true +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9269099..00c1a66 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-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME