Skip to content

Commit

Permalink
Merge pull request #1108 from hyperskill/release/1.65
Browse files Browse the repository at this point in the history
Release 1.65
  • Loading branch information
ivan-magda authored Jul 25, 2024
2 parents e4c6e91 + 12decd0 commit 54f25bf
Show file tree
Hide file tree
Showing 188 changed files with 5,327 additions and 1,079 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/automerge_into_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ jobs:
set -e
echo "Getting latest tag without v* prefix..."
current_version_number=$(git tag --sort=committerdate | tail -1 | cut -c 2-)
current_version_number=$(git tag --sort=committerdate | tail -1)
if [[ $current_version_number == v* ]]; then
current_version_number=${current_version_number:1}
fi
echo "Current version number is $current_version_number"
major=$(echo $current_version_number | cut -d. -f1)
Expand Down
33 changes: 16 additions & 17 deletions androidHyperskillApp/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,25 @@ GEM
base64
nkf
rexml
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.3.0)
aws-partitions (1.946.0)
aws-sdk-core (3.197.2)
aws-partitions (1.957.0)
aws-sdk-core (3.201.3)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.85.0)
aws-sdk-core (~> 3, >= 3.197.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.152.3)
aws-sdk-core (~> 3, >= 3.197.0)
aws-sdk-kms (1.88.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.156.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
aws-sigv4 (1.8.0)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.9.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
Expand All @@ -38,7 +38,7 @@ GEM
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.110.0)
excon (0.111.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
Expand Down Expand Up @@ -161,7 +161,7 @@ GEM
json (2.7.2)
jwt (2.8.2)
base64
mini_magick (4.13.1)
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.4.1)
Expand All @@ -171,14 +171,14 @@ GEM
optparse (0.5.0)
os (1.1.4)
plist (3.7.1)
public_suffix (5.1.1)
public_suffix (6.0.1)
rake (13.2.1)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.9)
rexml (3.3.2)
strscan
rouge (2.0.7)
ruby2_keywords (0.0.5)
Expand All @@ -204,13 +204,12 @@ GEM
uber (0.1.0)
unicode-display_width (2.5.0)
word_wrap (1.0.0)
xcodeproj (1.24.0)
xcodeproj (1.19.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package org.hyperskill.app.android.gamification_toolbar.view.ui.delegate

import android.content.Context
import android.util.TypedValue
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.doOnNextLayout
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePaddingRelative
import androidx.core.view.updatePadding
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.LifecycleOwner
import com.github.terrakok.cicerone.Router
Expand All @@ -31,29 +33,15 @@ class GamificationToolbarDelegate(
lifecycleOwner: LifecycleOwner,
private val context: Context,
private val viewBinding: LayoutGamificationToolbarBinding,
onNewMessage: (Message) -> Unit
onChangeTrackClicked: () -> Unit = {},
onNewMessage: (Message) -> Unit,
) {

private var subtitle: String? = null

init {
with(viewBinding) {
root.doOnApplyWindowInsets { _, insets, _ ->
val insetTop = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top

val toolbar = viewBinding.gamificationToolbar
toolbar.updateLayoutParams<CollapsingToolbarLayout.LayoutParams> {
height += insetTop
}
toolbar.updatePaddingRelative(top = insetTop)

applyInsetsToCollapsingToolbarLayout(
context = context,
collapsingToolbarLayout = viewBinding.gamificationCollapsingToolbarLayout,
insetTop = insetTop,
subtitle = subtitle
)
}
applyWindowInsets()
gamificationAppBar.setElevationOnCollapsed(lifecycleOwner.lifecycle)
gamificationAppBar.setExpanded(true)
gamificationStreakDurationTextView.setOnClickListener {
Expand All @@ -68,6 +56,41 @@ class GamificationToolbarDelegate(
gamificationProblemsLimitTextView.setOnClickListener {
onNewMessage(Message.ProblemsLimitClicked)
}
subtitleTextView.setOnClickListener {
onChangeTrackClicked()
}
}
}

private fun applyWindowInsets() {
var initialTopPadding = 0
viewBinding.gamificationToolbar.doOnNextLayout {
initialTopPadding = it.paddingTop
}

viewBinding.root.doOnApplyWindowInsets { _, insets, _ ->
val insetTop = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top

val toolbar = viewBinding.gamificationToolbar
toolbar.updateLayoutParams<CollapsingToolbarLayout.LayoutParams> {
val typedValue = TypedValue()
if (context.theme.resolveAttribute(android.R.attr.actionBarSize, typedValue, true)) {
val toolbarHeight = TypedValue.complexToDimensionPixelSize(
/* data = */ typedValue.data,
/* metrics = */ context.resources.displayMetrics
)
height = toolbarHeight + insetTop
}
}

toolbar.updatePadding(top = insetTop + initialTopPadding)

applyInsetsToCollapsingToolbarLayout(
context = context,
collapsingToolbarLayout = viewBinding.gamificationCollapsingToolbarLayout,
insetTop = insetTop,
subtitle = subtitle
)
}
}

Expand Down Expand Up @@ -149,6 +172,7 @@ class GamificationToolbarDelegate(
)
}

@Suppress("MagicNumber")
private fun applyInsetsToCollapsingToolbarLayout(
context: Context,
collapsingToolbarLayout: CollapsingToolbarLayout,
Expand All @@ -159,23 +183,32 @@ class GamificationToolbarDelegate(
?.top
?: 0
) {
val subtitlePaddingVertical =
if (subtitle != null) {
context.resources.getDimensionPixelOffset(R.dimen.gamification_toolbar_subtitle_padding_vertical) * 2
} else {
0
}

collapsingToolbarLayout.expandedTitleMarginBottom =
context.resources.getDimensionPixelOffset(
if (subtitle != null) {
if (subtitle != null) {
context.resources.getDimensionPixelOffset(
R.dimen.gamification_toolbar_with_subtitle_expanded_title_margin_bottom
} else {
) + subtitlePaddingVertical
} else {
context.resources.getDimensionPixelOffset(
R.dimen.gamification_toolbar_default_expanded_title_margin_bottom
}
)
)
}

collapsingToolbarLayout.updateLayoutParams<AppBarLayout.LayoutParams> {
height = context.resources.getDimensionPixelOffset(
if (subtitle != null) {
R.dimen.gamification_toolbar_with_subtitle_height
} else {
R.dimen.gamification_toolbar_default_height
}
) + insetTop
height = if (subtitle != null) {
context.resources.getDimensionPixelOffset(R.dimen.gamification_toolbar_with_subtitle_height) +
subtitlePaddingVertical
} else {
R.dimen.gamification_toolbar_default_height
} + insetTop
}
collapsingToolbarLayout.expandedTitleMarginTop = insetTop
collapsingToolbarLayout.expandedTitleMarginTop = insetTop + subtitlePaddingVertical
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.hyperskill.app.android.paywall.ui

import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
Expand Down Expand Up @@ -31,17 +30,14 @@ import androidx.compose.ui.unit.sp
import org.hyperskill.app.R
import org.hyperskill.app.android.core.extensions.compose.plus
import org.hyperskill.app.android.core.view.ui.widget.compose.HyperskillButton
import org.hyperskill.app.android.core.view.ui.widget.compose.HyperskillButtonDefaults
import org.hyperskill.app.android.core.view.ui.widget.compose.HyperskillTheme

@Composable
fun PaywallContent(
buyButtonText: String,
priceText: String?,
isContinueWithLimitsButtonVisible: Boolean,
onTermsOfServiceClick: () -> Unit,
onBuySubscriptionClick: () -> Unit,
onContinueWithLimitsClick: () -> Unit,
modifier: Modifier = Modifier,
padding: PaddingValues = PaddingValues()
) {
Expand All @@ -58,8 +54,7 @@ fun PaywallContent(
Image(
painter = painterResource(id = org.hyperskill.app.android.R.drawable.img_paywall),
contentDescription = null,
modifier = Modifier
.align(Alignment.CenterHorizontally)
modifier = Modifier.align(Alignment.CenterHorizontally)
)
Spacer(modifier = Modifier.height(24.dp))
Text(
Expand All @@ -81,10 +76,6 @@ fun PaywallContent(
) {
Text(text = buyButtonText)
}
Spacer(modifier = Modifier.height(8.dp))
if (isContinueWithLimitsButtonVisible) {
ContinueButton(onClick = onContinueWithLimitsClick)
}
Spacer(modifier = Modifier.height(20.dp))
TermsOfService(
modifier = Modifier
Expand Down Expand Up @@ -116,24 +107,6 @@ private fun SubscriptionPrice(
}
}

@Composable
private fun ContinueButton(
onClick: () -> Unit,
modifier: Modifier = Modifier
) {
HyperskillButton(
onClick = onClick,
colors = HyperskillButtonDefaults.buttonColors(colorResource(id = R.color.layer_1)),
border = BorderStroke(1.dp, colorResource(id = R.color.button_tertiary)),
modifier = modifier.fillMaxWidth()
) {
Text(
text = stringResource(id = R.string.paywall_mobile_only_continue_btn),
color = colorResource(id = R.color.button_tertiary)
)
}
}

@Composable
private fun TermsOfService(
modifier: Modifier = Modifier
Expand All @@ -153,11 +126,9 @@ fun PaywallContentPreview() {
HyperskillTheme {
PaywallContent(
buyButtonText = PaywallPreviewDefaults.BUY_BUTTON_TEXT,
isContinueWithLimitsButtonVisible = true,
priceText = PaywallPreviewDefaults.PRICE_TEXT,
onTermsOfServiceClick = {},
onBuySubscriptionClick = {},
onContinueWithLimitsClick = {}
onBuySubscriptionClick = {}
)
}
}
Loading

0 comments on commit 54f25bf

Please sign in to comment.