From 479dc522a68c32dbbf9d031e4d6e94cfc46ed4e6 Mon Sep 17 00:00:00 2001 From: Daniel Green Date: Tue, 17 Dec 2024 13:31:18 +0200 Subject: [PATCH 1/3] feat: Update sdk version & remove useless fragment --- .../app/navigation/AppNavigator.kt | 28 ++-- app/src/main/res/navigation/navigation.xml | 5 - .../demo_android/core/utils/Sdk.utils.kt | 4 +- .../home/presentation/view/HomeFragment.kt | 24 ++-- .../view/InAppNotificationsFragment.kt | 126 ------------------ .../view/ProductDetailsFragment.kt | 19 ++- feature/src/main/res/layout/fragment_home.xml | 13 -- .../layout/fragment_in_app_notifications.xml | 32 ----- gradle/libs.versions.toml | 2 +- .../demo_android/navigation/Destination.kt | 1 - 10 files changed, 39 insertions(+), 215 deletions(-) delete mode 100644 feature/src/main/java/rees46/demo_android/feature/home/presentation/view/InAppNotificationsFragment.kt delete mode 100644 feature/src/main/res/layout/fragment_in_app_notifications.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 1e306dc1..c0a608ef 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,7 +7,6 @@ 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.InAppNotifications import com.rees46.demo_android.navigation.ProductDetails import com.rees46.demo_android.navigation.ProductsDetails import rees46.demo_android.app.R @@ -18,25 +17,24 @@ class AppNavigator(private val navController: NavController) : Navigator { override fun navigate(destination: Destination) { when (destination) { is ProductDetails -> { - val bundle = - bundleOf(NavigationSettings.PRODUCT_ARGUMENT_FIELD to destination.navigationProduct) navigate( resId = R.id.productDetailsFragment, - args = bundle + args = bundleOf( + NavigationSettings.PRODUCT_ARGUMENT_FIELD to destination.navigationProduct + ) ) } is ProductsDetails -> { - val bundle = - bundleOf(NavigationSettings.PRODUCTS_ARGUMENT_FIELD to destination.navigationProducts) navigate( resId = R.id.productsFragment, - args = bundle + args = bundleOf( + NavigationSettings.PRODUCTS_ARGUMENT_FIELD to destination.navigationProducts + ) ) } - is InAppNotifications -> navigate(R.id.inAppNotificationsFragment) - else -> {} + else -> Unit } } @@ -48,14 +46,16 @@ class AppNavigator(private val navController: NavController) : Navigator { navController.popBackStack() } - override fun getCurrentDestinationId(): Int? = - navController.currentDestination?.id + override fun getCurrentDestinationId(): Int? { + return navController.currentDestination?.id + } - override fun getPreviousDestinationId(): Int? = - navController.previousBackStackEntry?.destination?.id + override fun getPreviousDestinationId(): Int? { + return navController.previousBackStackEntry?.destination?.id + } override fun addOnDestinationChangedListener(listener: OnDestinationChangedListener) { - navController.addOnDestinationChangedListener(listener) + navController.addOnDestinationChangedListener(listener = listener) } private fun navigate(@IdRes resId: Int, args: Bundle?) { diff --git a/app/src/main/res/navigation/navigation.xml b/app/src/main/res/navigation/navigation.xml index c8f4b2fc..bff9d8ce 100644 --- a/app/src/main/res/navigation/navigation.xml +++ b/app/src/main/res/navigation/navigation.xml @@ -37,9 +37,4 @@ android:name="rees46.demo_android.feature.search.presentation.view.SearchFragment" android:label="SearchFragment" > - - diff --git a/core/src/main/java/rees46/demo_android/core/utils/Sdk.utils.kt b/core/src/main/java/rees46/demo_android/core/utils/Sdk.utils.kt index a410c211..2a1efb81 100644 --- a/core/src/main/java/rees46/demo_android/core/utils/Sdk.utils.kt +++ b/core/src/main/java/rees46/demo_android/core/utils/Sdk.utils.kt @@ -16,13 +16,11 @@ object SdkUtils { sdk.initialize( context = context, shopId = shopId, - shopSecretKey = "", apiUrl = SdkSettings.API_URL, preferencesKey = SdkSettings.PREFERENCES_KEY, tag = SdkSettings.TAG, stream = SdkSettings.STREAM, - notificationType = SdkSettings.NOTIFICATION_TYPE, - notificationId = SdkSettings.NOTIFICATION_ID + needReInitialization = true ) } 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 db64088c..e8433f96 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 @@ -8,23 +8,22 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.personalization.SDK +import com.rees46.demo_android.navigation.Navigator +import com.rees46.demo_android.navigation.ProductDetails +import com.rees46.demo_android.navigation.ProductsDetails import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import org.koin.android.ext.android.get import org.koin.android.ext.android.inject import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.core.parameter.parametersOf +import rees46.demo_android.R 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.InAppNotifications -import com.rees46.demo_android.navigation.ProductDetails -import com.rees46.demo_android.navigation.ProductsDetails -import rees46.demo_android.R import rees46.demo_android.feature.productDetails.domain.mappers.NavigationProductMapper import rees46.demo_android.feature.productDetails.domain.models.Product import rees46.demo_android.feature.products.presentation.mappers.ProductItemMapper +import rees46.demo_android.feature.recommendationBlock.presentation.view.RecommendationBlockView class HomeFragment : Fragment() { @@ -71,11 +70,12 @@ class HomeFragment : Fragment() { recommendationBlockView = youLikeRecommendationBlockView, title = R.string.recommender_title ) - - newFeatures.setOnClickListener { - navigateToInAppNotificationsFragment() - } } + initializeFragmentManager() + } + + private fun initializeFragmentManager() { + sdk.initializeFragmentManager(childFragmentManager) } private fun setupRecommendationBlockView( @@ -95,10 +95,6 @@ class HomeFragment : Fragment() { } } - private fun navigateToInAppNotificationsFragment() { - navigator.navigate(InAppNotifications) - } - 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/InAppNotificationsFragment.kt b/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/InAppNotificationsFragment.kt deleted file mode 100644 index 10139e50..00000000 --- a/feature/src/main/java/rees46/demo_android/feature/home/presentation/view/InAppNotificationsFragment.kt +++ /dev/null @@ -1,126 +0,0 @@ -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.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.personalization.SDK -import org.koin.android.ext.android.inject -import rees46.demo_android.R -import rees46.demo_android.databinding.FragmentInAppNotificationsBinding - -class InAppNotificationsFragment : Fragment() { - - private lateinit var binding: FragmentInAppNotificationsBinding - - private val sdk: SDK by inject() - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - binding = FragmentInAppNotificationsBinding.inflate(inflater, container, false) - return binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - handleInAppNotifications() - } - - private fun handleInAppNotifications() { - sdk.initializeFragmentManager(fragmentManager = parentFragmentManager) - with(binding) { - val debugFullScreenMessage = - resources.getString(R.string.alert_dialog_full_screen_message) - val buttonNegative = resources.getString(R.string.alert_dialog_button_decline_title) - val buttonPositive = resources.getString(R.string.alert_dialog_button_accept_title) - val debugMessage = resources.getString(R.string.alert_dialog_message) - val debugTitle = resources.getString(R.string.alert_dialog_title) - - val buttonPositiveColor = - ContextCompat.getColor(requireContext(), R.color.buttonAcceptColor) - val buttonNegativeColor = ContextCompat.getColor(requireContext(), R.color.colorGray) - - val debugImageUrl = - "https://mir-s3-cdn-cf.behance.net/projects/404/01d316151239201.Y3JvcCwzMzA0LDI1ODUsMzQzLDA.png" - - alertDialogButton.setOnClickListener { - sdk.showAlertDialog( - title = debugTitle, - message = debugMessage, - imageUrl = debugImageUrl, - buttonNegativeText = buttonNegative, - buttonPositiveText = buttonPositive, - buttonNegativeColor = buttonNegativeColor, - buttonPositiveColor = buttonPositiveColor, - onNegativeClick = {}, - onPositiveClick = {}, - ) - } - - fullScreenDialogButton.setOnClickListener { - sdk.showFullScreenDialog( - title = debugTitle, - message = debugFullScreenMessage, - imageUrl = debugImageUrl, - buttonNegativeText = buttonNegative, - buttonPositiveText = buttonPositive, - buttonNegativeColor = buttonNegativeColor, - buttonPositiveColor = buttonPositiveColor, - onNegativeClick = { - }, - onPositiveClick = { - }, - ) - } - - bottomSheetDialogButton.setOnClickListener { - sdk.showBottomSheetDialog( - title = debugTitle, - message = debugMessage, - imageUrl = debugImageUrl, - buttonNegativeText = null, - buttonPositiveText = buttonPositive, - buttonNegativeColor = buttonNegativeColor, - buttonPositiveColor = buttonPositiveColor, - onNegativeClick = { - }, - onPositiveClick = { - }, - ) - } - - snackBarButton.setOnClickListener { - showSnackBar( - message = debugTitle, - buttonNegativeText = buttonPositive, - buttonPositiveText = buttonNegative - ) - } - } - } - - private fun showSnackBar( - message: String, - buttonNegativeText: String, - buttonPositiveText: String - ) { - sdk.inAppNotificationManager.showSnackBar( - view = requireView(), - message = message, - buttonNegativeText = buttonNegativeText, - buttonPositiveText = buttonPositiveText, - onNegativeClick = { logClick("onNegativeClick") }, - onPositiveClick = { logClick("onPositiveClick") } - ) - } - - private fun logClick(action: String) { - Log.d(InAppNotificationsFragment::class.java.simpleName, action) - } -} diff --git a/feature/src/main/java/rees46/demo_android/feature/productDetails/presentation/view/ProductDetailsFragment.kt b/feature/src/main/java/rees46/demo_android/feature/productDetails/presentation/view/ProductDetailsFragment.kt index 7d662863..a798963c 100644 --- a/feature/src/main/java/rees46/demo_android/feature/productDetails/presentation/view/ProductDetailsFragment.kt +++ b/feature/src/main/java/rees46/demo_android/feature/productDetails/presentation/view/ProductDetailsFragment.kt @@ -4,9 +4,12 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.os.BundleCompat import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController +import com.rees46.demo_android.navigation.Navigator +import com.rees46.demo_android.navigation.models.NavigationProduct import com.rees46.demo_android.ui.extensions.updateImage import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch @@ -16,25 +19,29 @@ import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.core.parameter.parametersOf import rees46.demo_android.core.settings.NavigationSettings import rees46.demo_android.databinding.FragmentProductDetailsBinding -import com.rees46.demo_android.navigation.Navigator -import com.rees46.demo_android.navigation.models.NavigationProduct import rees46.demo_android.feature.productDetails.domain.mappers.NavigationProductMapper +import rees46.demo_android.feature.productDetails.domain.models.Product import rees46.demo_android.feature.productDetails.presentation.ProductAction import rees46.demo_android.feature.productDetails.presentation.viewmodel.ProductDetailsViewModel -import rees46.demo_android.feature.productDetails.domain.models.Product import rees46.demo_android.feature.products.presentation.mappers.ProductItemMapper class ProductDetailsFragment : Fragment() { private val viewModel: ProductDetailsViewModel by viewModel { - val navigationProduct = arguments?.getParcelable(NavigationSettings.PRODUCT_ARGUMENT_FIELD) + val navigationProduct = arguments?.let { + BundleCompat.getParcelable( + /* in = */ it, + /* key = */ NavigationSettings.PRODUCT_ARGUMENT_FIELD, + /* clazz = */ NavigationProduct::class.java + ) + } parametersOf(navigationProductMapper.toProduct(navigationProduct)) } private lateinit var binding: FragmentProductDetailsBinding - private val productItemMapper: ProductItemMapper by inject() private val navigationProductMapper: NavigationProductMapper by inject() + private val productItemMapper: ProductItemMapper by inject() private val navigator by lazy { get { @@ -117,7 +124,7 @@ class ProductDetailsFragment : Fragment() { } private fun updateCount(count: Int) { - binding.countCard.setCount(count) + binding.countCard.setCount(count) } private fun navigateProductsFragment(products: List) { diff --git a/feature/src/main/res/layout/fragment_home.xml b/feature/src/main/res/layout/fragment_home.xml index d23a796b..424d3a2b 100644 --- a/feature/src/main/res/layout/fragment_home.xml +++ b/feature/src/main/res/layout/fragment_home.xml @@ -51,19 +51,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> - - diff --git a/feature/src/main/res/layout/fragment_in_app_notifications.xml b/feature/src/main/res/layout/fragment_in_app_notifications.xml deleted file mode 100644 index f1d658c9..00000000 --- a/feature/src/main/res/layout/fragment_in_app_notifications.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - -