Skip to content

Commit

Permalink
refactor(DynamicDashboard): Directly pass the DashboardData class to …
Browse files Browse the repository at this point in the history
…navArgs
  • Loading branch information
FabianDevel committed Feb 20, 2025
1 parent a4df8ec commit eccbb6e
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)) }
}
}
}
15 changes: 10 additions & 5 deletions app/src/main/java/com/infomaniak/mail/utils/MyKSuiteUiUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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<KSuiteProductsWithQuotas> {
private fun Context.getKSuiteQuotasApp(myKSuite: MyKSuiteData): Array<KSuiteProductsWithQuotas> {

val mailProduct = with(myKSuite.mail) {
KSuiteProductsWithQuotas.Mail(
Expand Down
20 changes: 2 additions & 18 deletions app/src/main/res/navigation/main_navigation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -696,23 +696,7 @@
android:name="com.infomaniak.mail.ui.main.settings.KSuiteDashboardFragment"
android:label="MyKSuiteDashboardFragment">
<argument
android:name="myKSuiteTier"
app:argType="com.infomaniak.core.myksuite.ui.components.MyKSuiteTier" />
<argument
android:name="email"
app:argType="string" />
<argument
android:name="avatarUri"
app:argType="string" />
<argument
android:name="dailySendLimit"
app:argType="string" />
<argument
android:name="kSuiteAppsWithQuotas"
app:argType="com.infomaniak.core.myksuite.ui.screens.components.KSuiteProductsWithQuotas[]" />
<argument
android:name="trialExpiryDate"
app:argType="java.util.Date"
app:nullable="true" />
android:name="dashboardData"
app:argType="com.infomaniak.core.myksuite.ui.screens.MyKSuiteDashboardScreenData" />
</fragment>
</navigation>

0 comments on commit eccbb6e

Please sign in to comment.