Skip to content

Commit 4bd95b0

Browse files
committed
feat(MyKSuiteBlockSignature): Block the "no signature" settings if user has my KSuite Free
1 parent 4992778 commit 4bd95b0

File tree

5 files changed

+52
-12
lines changed

5 files changed

+52
-12
lines changed

app/src/main/java/com/infomaniak/mail/ui/main/settings/SettingRadioButtonView.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class SettingRadioButtonView @JvmOverloads constructor(
6868
override fun check() = with(binding) {
6969
root.isEnabled = false
7070
checkMark.isVisible = true
71+
myKSuitePlusChip.isGone = true
7172
}
7273

7374
override fun uncheck() = with(binding) {
@@ -90,6 +91,10 @@ class SettingRadioButtonView @JvmOverloads constructor(
9091
}
9192
}
9293

94+
fun setMyKSuiteChipVisibility(isVisible: Boolean) {
95+
binding.myKSuitePlusChip.isVisible = isVisible
96+
}
97+
9398
override fun setOnClickListener(listener: OnClickListener?) {
9499
onClickListener = listener
95100
}

app/src/main/java/com/infomaniak/mail/ui/main/settings/mailbox/SignatureSettingAdapter.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder
2626
import com.infomaniak.mail.data.models.signature.Signature
2727
import com.infomaniak.mail.databinding.ItemSettingsSignatureBinding
2828
import com.infomaniak.mail.ui.main.settings.mailbox.SignatureSettingAdapter.SettingsSignatureViewHolder
29+
import com.infomaniak.mail.utils.MyKSuiteDataUtils
2930

3031
class SignatureSettingAdapter(
3132
private val canManageSignature: Boolean,
32-
private val onSignatureSelected: (Signature) -> Unit,
33+
private val onSignatureSelected: (Signature, Boolean) -> Unit,
3334
) : Adapter<SettingsSignatureViewHolder>() {
3435

3536
private var signatures: List<Signature> = emptyList()
@@ -44,8 +45,12 @@ class SignatureSettingAdapter(
4445
val signature = signatures[position]
4546
setText(signature.name)
4647
if (signature.isDefault) check() else uncheck()
47-
setOnClickListener { onSignatureSelected(signature) }
4848
isEnabled = canManageSignature
49+
50+
val shouldBlockSignature = signature.isDummy && !signature.isDefault && MyKSuiteDataUtils.myKSuite?.isMyKSuite == true
51+
setMyKSuiteChipVisibility(shouldBlockSignature)
52+
53+
setOnClickListener { onSignatureSelected(signature, shouldBlockSignature) }
4954
}
5055

5156
override fun getItemCount(): Int = signatures.count()

app/src/main/java/com/infomaniak/mail/ui/main/settings/mailbox/SignatureSettingFragment.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,14 @@ import android.view.View
2323
import android.view.ViewGroup
2424
import androidx.fragment.app.Fragment
2525
import androidx.fragment.app.viewModels
26+
import com.infomaniak.core.myksuite.ui.screens.KSuiteApp
27+
import com.infomaniak.core.myksuite.ui.views.MyKSuiteUpgradeBottomSheetDialogArgs
2628
import com.infomaniak.lib.core.utils.SnackbarUtils.showSnackbar
2729
import com.infomaniak.lib.core.utils.UtilsUi.openUrl
2830
import com.infomaniak.lib.core.utils.safeBinding
31+
import com.infomaniak.lib.core.utils.safeNavigate
2932
import com.infomaniak.mail.BuildConfig
33+
import com.infomaniak.mail.R
3034
import com.infomaniak.mail.data.models.mailbox.Mailbox
3135
import com.infomaniak.mail.data.models.signature.Signature
3236
import com.infomaniak.mail.databinding.FragmentSignatureSettingBinding
@@ -81,7 +85,13 @@ class SignatureSettingFragment : Fragment() {
8185
}
8286
}
8387

84-
private fun onSignatureClicked(signature: Signature) = with(signatureSettingViewModel) {
88+
private fun onSignatureClicked(signature: Signature, shouldBlockDummySignature: Boolean) = with(signatureSettingViewModel) {
89+
if (signature.isDummy && shouldBlockDummySignature) {
90+
val args = MyKSuiteUpgradeBottomSheetDialogArgs(kSuiteApp = KSuiteApp.Mail)
91+
safeNavigate(R.id.myKSuiteUpgradeBottomSheet, args = args.toBundle())
92+
return@with
93+
}
94+
8595
val newDefaultSignature = if (signature.isDummy) {
8696
null
8797
} else {

app/src/main/res/layout/view_setting_radio_button.xml

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,25 @@
4040
android:layout_weight="1"
4141
tools:text="Simple messages" />
4242

43-
<ImageView
44-
android:id="@+id/checkMark"
45-
android:layout_width="@dimen/mediumIconSize"
46-
android:layout_height="@dimen/mediumIconSize"
47-
android:layout_marginStart="@dimen/marginStandardMedium"
48-
android:contentDescription="@string/contentDescriptionSelectedItem"
49-
android:src="@drawable/ic_check"
50-
android:visibility="invisible"
51-
app:tint="?android:attr/colorPrimary" />
43+
<FrameLayout
44+
android:layout_width="wrap_content"
45+
android:layout_height="wrap_content">
46+
47+
<ImageView
48+
android:id="@+id/checkMark"
49+
android:layout_width="@dimen/mediumIconSize"
50+
android:layout_height="@dimen/mediumIconSize"
51+
android:layout_marginStart="@dimen/marginStandardMedium"
52+
android:contentDescription="@string/contentDescriptionSelectedItem"
53+
android:src="@drawable/ic_check"
54+
android:visibility="invisible"
55+
app:tint="?android:attr/colorPrimary" />
5256

57+
<com.infomaniak.core.myksuite.ui.views.MyKSuitePlusChipView
58+
android:id="@+id/myKSuitePlusChip"
59+
android:layout_width="wrap_content"
60+
android:layout_height="wrap_content"
61+
android:visibility="gone"
62+
tools:visibility="visible" />
63+
</FrameLayout>
5364
</LinearLayout>

app/src/main/res/navigation/main_navigation.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,4 +703,13 @@
703703
app:argType="string" />
704704
</fragment>
705705

706+
<dialog
707+
android:id="@+id/myKSuiteUpgradeBottomSheet"
708+
android:name="com.infomaniak.core.myksuite.ui.views.MyKSuiteUpgradeBottomSheetDialog"
709+
android:label="MyKSuiteUpgradeBottomSheet">
710+
<argument
711+
android:name="kSuiteApp"
712+
app:argType="com.infomaniak.core.myksuite.ui.screens.KSuiteApp" />
713+
</dialog>
714+
706715
</navigation>

0 commit comments

Comments
 (0)