Skip to content

Commit

Permalink
Map to ended view state
Browse files Browse the repository at this point in the history
  • Loading branch information
ivan-magda committed Nov 14, 2023
1 parent 0709a6e commit 803b877
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,19 @@ class ChallengeWidgetViewStateMapper(
}

private fun getLoadedWidgetContent(state: ChallengeWidgetFeature.State.Content): ChallengeWidgetViewState {
val currentChallenge = state.getCurrentChallenge() ?: return ChallengeWidgetViewState.Empty
val currentChallengeStatus = currentChallenge.status ?: return ChallengeWidgetViewState.Empty
val challenge = state.getCurrentChallenge() ?: return ChallengeWidgetViewState.Empty
val challengeStatus = challenge.status ?: return ChallengeWidgetViewState.Empty

val title = currentChallenge.title
val description = currentChallenge.description
val challengeTitle = challenge.title
val challengeDescription = challenge.description
val formattedDurationOfTime = getFormattedDurationOfTime(
startingDate = currentChallenge.startingDate,
finishDate = currentChallenge.finishDate
startingDate = challenge.startingDate,
finishDate = challenge.finishDate
)

return when (currentChallengeStatus) {
return when (challengeStatus) {
ChallengeStatus.NOT_STARTED -> {
val timeRemaining = calculateTimeRemaining(deadline = currentChallenge.startingDate)
val timeRemaining = calculateTimeRemaining(deadline = challenge.startingDate)
val startsInState = if (timeRemaining > 0) {
ChallengeWidgetViewState.Content.Announcement.StartsInState.TimeRemaining(
title = resourceProvider.getString(SharedResources.strings.challenge_widget_starts_in_text),
Expand All @@ -55,16 +55,22 @@ class ChallengeWidgetViewStateMapper(
}

ChallengeWidgetViewState.Content.Announcement(
title = title,
description = description,
title = challengeTitle,
description = challengeDescription,
formattedDurationOfTime = formattedDurationOfTime,
startsInState = startsInState
)
}
ChallengeStatus.STARTED -> TODO()
ChallengeStatus.COMPLETED -> TODO()
ChallengeStatus.PARTIAL_COMPLETED -> TODO()
ChallengeStatus.NOT_COMPLETED -> TODO()
ChallengeStatus.NOT_COMPLETED -> {
ChallengeWidgetViewState.Content.Ended(
title = challengeTitle,
description = challengeStatus.getTitle(resourceProvider),
formattedDurationOfTime = formattedDurationOfTime
)
}
}
}

Expand All @@ -86,4 +92,18 @@ class ChallengeWidgetViewStateMapper(

return (deadlineInstant - nowInNewYork).inWholeSeconds
}
}
}

private fun ChallengeStatus.getTitle(resourceProvider: ResourceProvider): String =
when (this) {
ChallengeStatus.NOT_STARTED ->
resourceProvider.getString(SharedResources.strings.challenge_widget_status_not_started_title)
ChallengeStatus.STARTED ->
resourceProvider.getString(SharedResources.strings.challenge_widget_status_started_title)
ChallengeStatus.NOT_COMPLETED ->
resourceProvider.getString(SharedResources.strings.challenge_widget_status_not_completed_title)
ChallengeStatus.PARTIAL_COMPLETED ->
resourceProvider.getString(SharedResources.strings.challenge_widget_status_partial_completed_title)
ChallengeStatus.COMPLETED ->
resourceProvider.getString(SharedResources.strings.challenge_widget_status_completed_title)
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@ sealed interface ChallengeWidgetViewState {
) : Content

data class Ended(
val title: String
val title: String,
val description: String,
val formattedDurationOfTime: String
) : Content
}
}
6 changes: 6 additions & 0 deletions shared/src/commonMain/resources/MR/base/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,12 @@
<string name="share_streak_sharing_url">https://hi.hyperskill.org/my-hyperskill-app</string>

<!-- Challenge widget -->
<string name="challenge_widget_status_not_started_title">Get ready to push your limits!</string>
<string name="challenge_widget_status_started_title">The challenge awaits!</string>
<string name="challenge_widget_status_completed_title">Well done, challenge completed!</string>
<string name="challenge_widget_status_partial_completed_title">Close to victory, bonus bounty!</string>
<string name="challenge_widget_status_not_completed_title">Give it another shot next time!</string>

<string name="challenge_widget_starts_in_text">Starts in</string>

<!--Badges-->
Expand Down

0 comments on commit 803b877

Please sign in to comment.