From eabce4c8b123ec278687a16821981abd74317ead Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Mon, 23 Sep 2024 14:46:37 +0200 Subject: [PATCH 1/9] chore: Update java version and fix stories views --- buildConfig/src/main/kotlin/AppBuildConfig.kt | 10 +++++----- .../feature/home/presentation/view/HomeFragment.kt | 8 +------- feature/src/main/res/layout/fragment_home.xml | 1 + 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/buildConfig/src/main/kotlin/AppBuildConfig.kt b/buildConfig/src/main/kotlin/AppBuildConfig.kt index 988345b0..7611c66f 100644 --- a/buildConfig/src/main/kotlin/AppBuildConfig.kt +++ b/buildConfig/src/main/kotlin/AppBuildConfig.kt @@ -136,15 +136,15 @@ class AppBuildConfig : Plugin { private fun AppExtension.configureJavaAndKotlinOptions() { compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_22 + targetCompatibility = JavaVersion.VERSION_22 } } private fun LibraryExtension.configureJavaAndKotlinOptions() { compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_22 + targetCompatibility = JavaVersion.VERSION_22 } } @@ -156,7 +156,7 @@ class AppBuildConfig : Plugin { private const val TARGET_SDK = 34 private const val VERSION_CODE = 1 private const val VERSION_NAME = "1.0.0" - private const val JVM_TARGET = "17" + private const val JVM_TARGET = "22" private const val RELEASE_TYPE = "release" private const val RELEASE_CONFIG = "releaseConfig" diff --git a/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/HomeFragment.kt b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/HomeFragment.kt index 2335595a..45421efd 100644 --- a/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/HomeFragment.kt +++ b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/HomeFragment.kt @@ -55,13 +55,7 @@ class HomeFragment : Fragment() { savedInstanceState: Bundle? ) { super.onViewCreated(view, savedInstanceState) - -// with(binding.stories) { -// setId(1234) -// sdk.initializeStoriesView(this) -// settings.icon_size = 80 -// settings.label_font_size = 0 -// } + sdk.initializeStoriesView(binding.story) with(binding) { setupRecommendationBlockView( diff --git a/feature/src/main/res/layout/fragment_home.xml b/feature/src/main/res/layout/fragment_home.xml index 550e810d..fc82842e 100644 --- a/feature/src/main/res/layout/fragment_home.xml +++ b/feature/src/main/res/layout/fragment_home.xml @@ -30,6 +30,7 @@ android:layout_marginHorizontal="@dimen/margin_default" /> Date: Mon, 23 Sep 2024 14:57:08 +0200 Subject: [PATCH 2/9] feat: Add fragment for showing new sdk features --- .../app/navigation/AppNavigator.kt | 16 +++++--- app/src/main/res/navigation/navigation.xml | 5 +++ .../home/presentation/view/HomeFragment.kt | 9 +++++ .../presentation/view/NewFeaturesFragment.kt | 13 +++++++ feature/src/main/res/layout/fragment_home.xml | 37 +++++++++++++------ .../main/res/layout/fragment_new_features.xml | 7 ++++ feature/src/main/res/values/strings.xml | 1 + .../demo_android/navigation/Destination.kt | 5 ++- ui/src/main/res/values/colors_text.xml | 1 + ui/src/main/res/values/dimens_margin.xml | 1 + 10 files changed, 77 insertions(+), 18 deletions(-) create mode 100644 feature/src/main/java/rees46/demo_android/feature/home/presentation/view/NewFeaturesFragment.kt create mode 100644 feature/src/main/res/layout/fragment_new_features.xml diff --git a/app/src/main/java/rees46/demo_android/app/navigation/AppNavigator.kt b/app/src/main/java/rees46/demo_android/app/navigation/AppNavigator.kt index 4f46ad5d..2fa6e586 100644 --- a/app/src/main/java/rees46/demo_android/app/navigation/AppNavigator.kt +++ b/app/src/main/java/rees46/demo_android/app/navigation/AppNavigator.kt @@ -7,6 +7,7 @@ import androidx.navigation.NavController import androidx.navigation.NavController.OnDestinationChangedListener import com.rees46.demo_android.navigation.Destination import com.rees46.demo_android.navigation.Navigator +import com.rees46.demo_android.navigation.NewFeatures import com.rees46.demo_android.navigation.ProductDetails import com.rees46.demo_android.navigation.ProductsDetails import rees46.demo_android.app.R @@ -15,21 +16,26 @@ import rees46.demo_android.core.settings.NavigationSettings class AppNavigator(private val navController: NavController) : Navigator { override fun navigate(destination: Destination) { - when(destination) { + when (destination) { is ProductDetails -> { - val bundle = bundleOf(NavigationSettings.PRODUCT_ARGUMENT_FIELD to destination.navigationProduct) + val bundle = + bundleOf(NavigationSettings.PRODUCT_ARGUMENT_FIELD to destination.navigationProduct) navigate( resId = R.id.productDetailsFragment, args = bundle ) } + is ProductsDetails -> { - val bundle = bundleOf(NavigationSettings.PRODUCTS_ARGUMENT_FIELD to destination.navigationProducts) + val bundle = + bundleOf(NavigationSettings.PRODUCTS_ARGUMENT_FIELD to destination.navigationProducts) navigate( resId = R.id.productsFragment, args = bundle ) } + + is NewFeatures -> navigate(R.id.newFeaturesFragment) else -> {} } } @@ -42,10 +48,10 @@ class AppNavigator(private val navController: NavController) : Navigator { navController.popBackStack() } - override fun getCurrentDestinationId() : Int? = + override fun getCurrentDestinationId(): Int? = navController.currentDestination?.id - override fun getPreviousDestinationId() : Int? = + override fun getPreviousDestinationId(): Int? = navController.previousBackStackEntry?.destination?.id override fun addOnDestinationChangedListener(listener: OnDestinationChangedListener) { diff --git a/app/src/main/res/navigation/navigation.xml b/app/src/main/res/navigation/navigation.xml index bff9d8ce..a779247a 100644 --- a/app/src/main/res/navigation/navigation.xml +++ b/app/src/main/res/navigation/navigation.xml @@ -37,4 +37,9 @@ android:name="rees46.demo_android.feature.search.presentation.view.SearchFragment" android:label="SearchFragment" > + + diff --git a/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/HomeFragment.kt b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/HomeFragment.kt index 45421efd..d5f37b40 100644 --- a/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/HomeFragment.kt +++ b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/HomeFragment.kt @@ -18,6 +18,7 @@ import rees46.demo_android.databinding.FragmentHomeBinding import rees46.demo_android.feature.recommendationBlock.presentation.view.RecommendationBlockView import rees46.demo_android.feature.home.presentation.viewmodel.HomeViewModel import com.rees46.demo_android.navigation.Navigator +import com.rees46.demo_android.navigation.NewFeatures import com.rees46.demo_android.navigation.ProductDetails import com.rees46.demo_android.navigation.ProductsDetails import rees46.demo_android.R @@ -70,6 +71,10 @@ class HomeFragment : Fragment() { recommendationBlockView = youLikeRecommendationBlockView, title = R.string.recommender_title ) + + newFeatures.setOnClickListener { + navigateToNewFeaturesFragment() + } } } @@ -90,6 +95,10 @@ class HomeFragment : Fragment() { } } + private fun navigateToNewFeaturesFragment() { + navigator.navigate(NewFeatures) + } + private fun navigateProductFragment(product: Product) { val navigationProduct = navigationProductMapper.toNavigationProduct(product) navigator.navigate(ProductDetails(navigationProduct)) diff --git a/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/NewFeaturesFragment.kt b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/NewFeaturesFragment.kt new file mode 100644 index 00000000..d403e921 --- /dev/null +++ b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/NewFeaturesFragment.kt @@ -0,0 +1,13 @@ +package rees46.demo_android.feature.home.presentation.view + +import androidx.fragment.app.Fragment +import com.personalization.SDK +import org.koin.android.ext.android.inject +import rees46.demo_android.databinding.FragmentNewFeaturesBinding + +class NewFeaturesFragment : Fragment() { + private lateinit var binding: FragmentNewFeaturesBinding + + private val sdk: SDK by inject() + +} diff --git a/feature/src/main/res/layout/fragment_home.xml b/feature/src/main/res/layout/fragment_home.xml index fc82842e..d23a796b 100644 --- a/feature/src/main/res/layout/fragment_home.xml +++ b/feature/src/main/res/layout/fragment_home.xml @@ -1,33 +1,32 @@ - + android:id="@+id/fragment_home" + android:layout_width="match_parent" + android:layout_height="match_parent"> + app:layout_constraintTop_toTopOf="parent"> + android:layout_marginBottom="@dimen/margin_large" + android:orientation="vertical"> + android:textStyle="bold" /> + + + + + \ No newline at end of file diff --git a/feature/src/main/res/layout/fragment_new_features.xml b/feature/src/main/res/layout/fragment_new_features.xml new file mode 100644 index 00000000..d829e291 --- /dev/null +++ b/feature/src/main/res/layout/fragment_new_features.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/feature/src/main/res/values/strings.xml b/feature/src/main/res/values/strings.xml index ae2e573d..d86ab954 100644 --- a/feature/src/main/res/values/strings.xml +++ b/feature/src/main/res/values/strings.xml @@ -3,6 +3,7 @@ DEMOSTORE Add to cart Stories + Want\'s to see new features? Shopping cart Your shopping cart is empty Shipping: diff --git a/navigation/src/main/java/com/rees46/demo_android/navigation/Destination.kt b/navigation/src/main/java/com/rees46/demo_android/navigation/Destination.kt index 7fe34d9b..d6857633 100644 --- a/navigation/src/main/java/com/rees46/demo_android/navigation/Destination.kt +++ b/navigation/src/main/java/com/rees46/demo_android/navigation/Destination.kt @@ -3,5 +3,6 @@ package com.rees46.demo_android.navigation import com.rees46.demo_android.navigation.models.NavigationProduct sealed interface Destination -class ProductDetails(val navigationProduct: NavigationProduct): Destination -class ProductsDetails(val navigationProducts: Collection): Destination +class ProductDetails(val navigationProduct: NavigationProduct) : Destination +class ProductsDetails(val navigationProducts: Collection) : Destination +data object NewFeatures : Destination diff --git a/ui/src/main/res/values/colors_text.xml b/ui/src/main/res/values/colors_text.xml index bef4bcff..6114da65 100644 --- a/ui/src/main/res/values/colors_text.xml +++ b/ui/src/main/res/values/colors_text.xml @@ -3,4 +3,5 @@ #FF000000 #FF737373 #FFFFFFFF + #FF0000FF diff --git a/ui/src/main/res/values/dimens_margin.xml b/ui/src/main/res/values/dimens_margin.xml index ab08678b..cac89bac 100644 --- a/ui/src/main/res/values/dimens_margin.xml +++ b/ui/src/main/res/values/dimens_margin.xml @@ -4,4 +4,5 @@ 8dp 4dp 20dp + 50dp From a43ed83261f86eb7c9e4ad45e0efc2a15016d1f6 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Mon, 23 Sep 2024 15:02:27 +0200 Subject: [PATCH 3/9] feat: Added buttons and button click handlers --- .../presentation/view/NewFeaturesFragment.kt | 89 +++++++++++++++++++ .../main/res/layout/fragment_new_features.xml | 29 +++++- 2 files changed, 116 insertions(+), 2 deletions(-) diff --git a/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/NewFeaturesFragment.kt b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/NewFeaturesFragment.kt index d403e921..30fad728 100644 --- a/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/NewFeaturesFragment.kt +++ b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/NewFeaturesFragment.kt @@ -1,5 +1,10 @@ package rees46.demo_android.feature.home.presentation.view +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import androidx.fragment.app.Fragment import com.personalization.SDK import org.koin.android.ext.android.inject @@ -10,4 +15,88 @@ class NewFeaturesFragment : Fragment() { private val sdk: SDK by inject() + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentNewFeaturesBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + handleInAppNotifications() + } + + private fun handleInAppNotifications() { + //TODO remove + val debugTitle = "Привет,мы на связи" + val debugMessage = + "И мы к вам с хорошими новостями. Совсем скоро мы проведем вебинар по поиску на сайте — там будет масса полезной информации, которая поможет бустануть конверсию и повысить лояльность аудитории. Приходите!" + val debugImageUrl = + "https://devldesigns.com.au/cdn/shop/files/shut_up_take_money_stkr.png?v=1687693461&width=1445" + val buttonNegative = "Cancel" + val buttonPositive = "OK" + with(binding) { + +// alertDialogButton.setOnClickListener { +// sdk.inAppNotificationManager.showAlertDialog( +// fragmentManager = childFragmentManager, +// title = debugTitle, +// message = debugMessage, +// buttonText = buttonPositive +// ) +// } +// +// fullScreenDialogButton.setOnClickListener { +// sdk.inAppNotificationManager.showFullScreenDialog( +// fragmentManager = childFragmentManager, +// title = debugTitle, +// message = debugMessage, +// imageUrl = debugImageUrl, +// buttonNegativeText = buttonNegative, +// buttonPositiveText = buttonPositive, +// onNegativeClick = { +// Log.d(requireContext().javaClass.name, ": onNegativeClick") +// }, +// onPositiveClick = { +// Log.d(requireContext().javaClass.name, ": onPositiveClick") +// }, +// ) +// } +// +// bottomSheetDialogButton.setOnClickListener { +// sdk.inAppNotificationManager.showBottomSheetDialog( +// fragmentManager = childFragmentManager, +// title = debugTitle, +// message = debugMessage, +// imageUrl = debugImageUrl, +// buttonNegativeText = buttonNegative, +// buttonPositiveText = buttonPositive, +// onNegativeClick = { +// Log.d(requireContext().javaClass.name, ": onNegativeClick") +// }, +// onPositiveClick = { +// Log.d(requireContext().javaClass.name, ": onPositiveClick") +// }, +// ) +// } +// +// snackBarButton.setOnClickListener { +// sdk.inAppNotificationManager.showSnackBar( +// view = findViewById(android.R.id.content), +// message = debugTitle, +// buttonNegativeText = buttonNegative, +// buttonPositiveText = buttonPositive, +// onNegativeClick = { +// Log.d(requireContext().javaClass.name, ": onNegativeClick") +// }, +// onPositiveClick = { +// Log.d(requireContext().javaClass.name, ": onPositiveClick") +// }, +// ) +// } + } + } } diff --git a/feature/src/main/res/layout/fragment_new_features.xml b/feature/src/main/res/layout/fragment_new_features.xml index d829e291..f1d658c9 100644 --- a/feature/src/main/res/layout/fragment_new_features.xml +++ b/feature/src/main/res/layout/fragment_new_features.xml @@ -1,7 +1,32 @@ + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingHorizontal="@dimen/margin_large"> + +