From eccbb6efaa57e8df0ad334221b0d3525bb4dfa00 Mon Sep 17 00:00:00 2001 From: Fabian DEVEL Date: Tue, 18 Feb 2025 16:48:36 +0100 Subject: [PATCH] refactor(DynamicDashboard): Directly pass the DashboardData class to navArgs --- Core | 2 +- .../main/settings/KSuiteDashboardFragment.kt | 11 ++-------- .../infomaniak/mail/utils/MyKSuiteUiUtils.kt | 15 +++++++++----- .../main/res/navigation/main_navigation.xml | 20 ++----------------- 4 files changed, 15 insertions(+), 33 deletions(-) diff --git a/Core b/Core index c1fe1e93d9..be19b8e344 160000 --- a/Core +++ b/Core @@ -1 +1 @@ -Subproject commit c1fe1e93d9a364b932f00c2e6b4583e972468802 +Subproject commit be19b8e344f8af9b63ed1c1d8bdc43d5c484d99b diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/settings/KSuiteDashboardFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/main/settings/KSuiteDashboardFragment.kt index cc92bb616d..9f0b0907d8 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/settings/KSuiteDashboardFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/settings/KSuiteDashboardFragment.kt @@ -21,8 +21,7 @@ import android.os.Bundle import android.view.View import androidx.fragment.app.viewModels import com.infomaniak.core.myksuite.ui.views.MyKSuiteDashboardFragment -import com.infomaniak.mail.utils.AccountUtils -import com.infomaniak.mail.utils.MyKSuiteUiUtils.getKSuiteQuotasApp +import com.infomaniak.mail.utils.MyKSuiteUiUtils.getDashboardData import com.infomaniak.mail.utils.extensions.setSystemBarsColors import dagger.hilt.android.AndroidEntryPoint import com.infomaniak.core.myksuite.R as RMyKSuite @@ -39,13 +38,7 @@ class KSuiteDashboardFragment : MyKSuiteDashboardFragment() { myKSuiteViewModel.refreshMyKSuite() myKSuiteViewModel.myKSuiteDataResult.observe(viewLifecycleOwner) { myKSuiteData -> - myKSuiteData?.let { data -> - resetContent( - myKSuiteData = data, - avatarUri = AccountUtils.currentUser?.avatar ?: "", - products = requireContext().getKSuiteQuotasApp(myKSuiteData).toList(), - ) - } + myKSuiteData?.let { data -> resetContent(dashboardData = getDashboardData(requireContext(), data)) } } } } diff --git a/app/src/main/java/com/infomaniak/mail/utils/MyKSuiteUiUtils.kt b/app/src/main/java/com/infomaniak/mail/utils/MyKSuiteUiUtils.kt index da003644a5..175dfb8270 100644 --- a/app/src/main/java/com/infomaniak/mail/utils/MyKSuiteUiUtils.kt +++ b/app/src/main/java/com/infomaniak/mail/utils/MyKSuiteUiUtils.kt @@ -23,6 +23,7 @@ import androidx.navigation.NavController import com.infomaniak.core.myksuite.ui.components.MyKSuiteTier import com.infomaniak.core.myksuite.ui.data.MyKSuiteData import com.infomaniak.core.myksuite.ui.screens.KSuiteApp +import com.infomaniak.core.myksuite.ui.screens.MyKSuiteDashboardScreenData import com.infomaniak.core.myksuite.ui.screens.components.KSuiteProductsWithQuotas import com.infomaniak.core.myksuite.ui.views.MyKSuiteDashboardFragmentArgs import com.infomaniak.core.myksuite.ui.views.MyKSuiteUpgradeBottomSheetDialogArgs @@ -44,18 +45,22 @@ object MyKSuiteUiUtils { } fun Fragment.openMyKSuiteDashboard(myKSuiteData: MyKSuiteData) { - val args = MyKSuiteDashboardFragmentArgs( + val args = MyKSuiteDashboardFragmentArgs(dashboardData = getDashboardData(requireContext(), myKSuiteData)) + animatedNavigation(resId = R.id.myKSuiteDashboardFragment, args = args.toBundle()) + } + + fun getDashboardData(context: Context, myKSuiteData: MyKSuiteData): MyKSuiteDashboardScreenData { + return MyKSuiteDashboardScreenData( myKSuiteTier = if (myKSuiteData.isMyKSuitePlus) MyKSuiteTier.Plus else MyKSuiteTier.Free, email = myKSuiteData.mail.email, avatarUri = AccountUtils.currentUser?.avatar ?: "", - dailySendLimit = myKSuiteData.mail.dailyLimitSent.toString(), - kSuiteAppsWithQuotas = requireContext().getKSuiteQuotasApp(myKSuiteData), + dailySendingLimit = myKSuiteData.mail.dailyLimitSent.toString(), + kSuiteProductsWithQuotas = context.getKSuiteQuotasApp(myKSuiteData).toList(), trialExpiryDate = myKSuiteData.trialExpiryDate, ) - animatedNavigation(resId = R.id.myKSuiteDashboardFragment, args = args.toBundle()) } - fun Context.getKSuiteQuotasApp(myKSuite: MyKSuiteData): Array { + private fun Context.getKSuiteQuotasApp(myKSuite: MyKSuiteData): Array { val mailProduct = with(myKSuite.mail) { KSuiteProductsWithQuotas.Mail( diff --git a/app/src/main/res/navigation/main_navigation.xml b/app/src/main/res/navigation/main_navigation.xml index 236f44ccbc..8a62e5cbe1 100644 --- a/app/src/main/res/navigation/main_navigation.xml +++ b/app/src/main/res/navigation/main_navigation.xml @@ -696,23 +696,7 @@ android:name="com.infomaniak.mail.ui.main.settings.KSuiteDashboardFragment" android:label="MyKSuiteDashboardFragment"> - - - - - + android:name="dashboardData" + app:argType="com.infomaniak.core.myksuite.ui.screens.MyKSuiteDashboardScreenData" />