Skip to content

Commit 951a246

Browse files
committed
Connect format option buttons to their respective action
1 parent 025be26 commit 951a246

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

app/src/main/java/com/infomaniak/mail/ui/newMessage/NewMessageEditorManager.kt

+20-6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package com.infomaniak.mail.ui.newMessage
2020
import android.content.res.ColorStateList
2121
import androidx.core.view.isGone
2222
import androidx.core.view.isVisible
23+
import androidx.lifecycle.lifecycleScope
2324
import com.google.android.material.button.MaterialButton
2425
import com.infomaniak.mail.MatomoMail
2526
import com.infomaniak.mail.MatomoMail.trackEvent
@@ -28,6 +29,7 @@ import com.infomaniak.mail.databinding.FragmentNewMessageBinding
2829
import com.infomaniak.mail.utils.extensions.getAttributeColor
2930
import com.infomaniak.mail.utils.extensions.notYetImplemented
3031
import dagger.hilt.android.scopes.FragmentScoped
32+
import kotlinx.coroutines.launch
3133
import javax.inject.Inject
3234
import com.google.android.material.R as RMaterial
3335

@@ -57,19 +59,19 @@ class NewMessageEditorManager @Inject constructor() : NewMessageManager() {
5759
_openFilePicker = openFilePicker
5860
}
5961

60-
fun observeEditorActions() {
62+
fun observeEditorActions() = with(binding) {
6163
newMessageViewModel.editorAction.observe(viewLifecycleOwner) { (editorAction, _) ->
6264
when (editorAction) {
6365
EditorAction.ATTACHMENT -> _openFilePicker?.invoke()
6466
EditorAction.CAMERA -> fragment.notYetImplemented()
6567
EditorAction.LINK -> fragment.notYetImplemented()
6668
EditorAction.CLOCK -> fragment.notYetImplemented()
6769
EditorAction.AI -> aiManager.openAiPrompt()
68-
EditorAction.BOLD -> {}
69-
EditorAction.ITALIC -> {}
70-
EditorAction.UNDERLINE -> {}
71-
EditorAction.STRIKE_THROUGH -> {}
72-
EditorAction.UNORDERED_LIST -> {}
70+
EditorAction.BOLD -> editorWebView.toggleBold()
71+
EditorAction.ITALIC -> editorWebView.toggleItalic()
72+
EditorAction.UNDERLINE -> editorWebView.toggleUnderline()
73+
EditorAction.STRIKE_THROUGH -> editorWebView.toggleStrikeThrough()
74+
EditorAction.UNORDERED_LIST -> editorWebView.toggleUnorderedList()
7375
}
7476
}
7577
}
@@ -120,6 +122,18 @@ class NewMessageEditorManager @Inject constructor() : NewMessageManager() {
120122
textEditing.isVisible = isEditorExpanded
121123
}
122124

125+
fun observeEditorStatus(): Unit = with(binding) {
126+
viewLifecycleOwner.lifecycleScope.launch {
127+
editorWebView.editorStatusesFlow.collect {
128+
buttonBold.isActivated = it.isBold
129+
buttonItalic.isActivated = it.isItalic
130+
buttonUnderline.isActivated = it.isUnderlined
131+
buttonStrikeThrough.isActivated = it.isStrikeThrough
132+
buttonList.isActivated = it.isUnorderedListSelected
133+
}
134+
}
135+
}
136+
123137
enum class EditorAction(val matomoValue: String) {
124138
ATTACHMENT("importFile"),
125139
CAMERA("importFromCamera"),

app/src/main/java/com/infomaniak/mail/ui/newMessage/NewMessageFragment.kt

+4
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import com.infomaniak.lib.core.utils.SnackbarUtils.showSnackbar
4747
import com.infomaniak.lib.core.utils.getBackNavigationResult
4848
import com.infomaniak.lib.core.utils.isNightModeEnabled
4949
import com.infomaniak.lib.core.utils.showToast
50+
import com.infomaniak.lib.richhtmleditor.StatusCommand.*
5051
import com.infomaniak.mail.MatomoMail.OPEN_FROM_DRAFT_NAME
5152
import com.infomaniak.mail.MatomoMail.trackAttachmentActionsEvent
5253
import com.infomaniak.mail.MatomoMail.trackNewMessageEvent
@@ -191,6 +192,7 @@ class NewMessageFragment : Fragment() {
191192
observeShimmering()
192193

193194
editorManager.observeEditorActions()
195+
editorManager.observeEditorStatus()
194196
externalsManager.observeExternals(newMessageViewModel.arrivedFromExistingDraft())
195197

196198
with(aiManager) {
@@ -350,6 +352,8 @@ class NewMessageFragment : Fragment() {
350352

351353
private fun initEditorUi() {
352354
binding.editorWebView.apply {
355+
subscribeToStates(setOf(BOLD, ITALIC, UNDERLINE, STRIKE_THROUGH, UNORDERED_LIST))
356+
353357
enableAlgorithmicDarkening(isEnabled = true)
354358
if (context.isNightModeEnabled()) addCss(context.loadCss(R.raw.custom_dark_mode))
355359

0 commit comments

Comments
 (0)