Skip to content

Commit ec1908f

Browse files
committed
Fix rebase
1 parent 4201c0e commit ec1908f

File tree

3 files changed

+71
-68
lines changed

3 files changed

+71
-68
lines changed

app/src/main/java/com/infomaniak/mail/ui/main/thread/PrintMailFragment.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class PrintMailFragment : Fragment() {
7373
adapter = ThreadAdapter(
7474
shouldLoadDistantResources = true,
7575
isForPrinting = true,
76-
ThreadAdapter.ThreadAdapterCallbacks(
76+
threadAdapterCallbacks = ThreadAdapter.ThreadAdapterCallbacks(
7777
onBodyWebViewFinishedLoading = { startPrintingView() },
7878
),
7979
)

app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt

+5-3
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ import com.infomaniak.mail.ui.main.thread.ThreadAdapter.ThreadViewHolder
5151
import com.infomaniak.mail.utils.*
5252
import com.infomaniak.mail.utils.AttachmentIntentUtils.AttachmentIntentType
5353
import com.infomaniak.mail.utils.AttachmentIntentUtils.createDownloadDialogNavArgs
54+
import com.infomaniak.mail.utils.MailDateFormatUtils.mailFormattedDate
55+
import com.infomaniak.mail.utils.MailDateFormatUtils.mostDetailedDate
5456
import com.infomaniak.mail.utils.SharedUtils.Companion.createHtmlForPlainText
5557
import com.infomaniak.mail.utils.UiUtils.getPrettyNameAndEmail
5658
import com.infomaniak.mail.utils.Utils.TEXT_HTML
@@ -67,7 +69,7 @@ import com.google.android.material.R as RMaterial
6769
class ThreadAdapter(
6870
private val shouldLoadDistantResources: Boolean,
6971
private val isForPrinting: Boolean = false,
70-
private val isCalendarEventExpandedMap: MutableMap<String, Boolean>,
72+
private val isCalendarEventExpandedMap: MutableMap<String, Boolean> = mutableMapOf(),
7173
private var threadAdapterCallbacks: ThreadAdapterCallbacks? = null,
7274
) : ListAdapter<Message, ThreadViewHolder>(MessageDiffCallback()) {
7375

@@ -684,8 +686,8 @@ class ThreadAdapter(
684686
var onAllExpandedMessagesLoaded: (() -> Unit)? = null,
685687
var navigateToNewMessageActivity: ((Uri) -> Unit)? = null,
686688
var navigateToAttendeeBottomSheet: ((List<Attendee>) -> Unit)? = null,
687-
var navigateToDownloadProgressDialog: (Int, Bundle) -> Unit,
688-
var replyToCalendarEvent: (AttendanceState, Message) -> Unit,
689+
var navigateToDownloadProgressDialog: ((Int, Bundle) -> Unit)? = null,
690+
var replyToCalendarEvent: ((AttendanceState, Message) -> Unit)? = null,
689691
var promptLink: ((String, ContextMenuType) -> Unit)? = null,
690692
)
691693

app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadFragment.kt

+65-64
Original file line numberDiff line numberDiff line change
@@ -198,75 +198,76 @@ class ThreadFragment : Fragment() {
198198
adapter = ThreadAdapter(
199199
shouldLoadDistantResources = shouldLoadDistantResources(),
200200
isCalendarEventExpandedMap = threadViewModel.isCalendarEventExpandedMap,
201-
onContactClicked = {
202-
safeNavigate(
203-
resId = R.id.detailedContactBottomSheetDialog,
204-
args = DetailedContactBottomSheetDialogArgs(it).toBundle(),
205-
)
206-
},
207-
onDraftClicked = { message ->
208-
trackNewMessageEvent(OPEN_FROM_DRAFT_NAME)
209-
twoPaneViewModel.navigateToNewMessage(
210-
arrivedFromExistingDraft = true,
211-
draftLocalUuid = message.draftLocalUuid,
212-
draftResource = message.draftResource,
213-
messageUid = message.uid,
214-
)
215-
},
216-
onDeleteDraftClicked = { message ->
217-
trackMessageActionsEvent("deleteDraft")
218-
mainViewModel.currentMailbox.value?.let { mailbox -> threadViewModel.deleteDraft(message, mailbox) }
219-
},
220-
onAttachmentClicked = { attachment ->
221-
attachment.resource?.let { resource ->
201+
threadAdapterCallbacks = ThreadAdapter.ThreadAdapterCallbacks(
202+
onContactClicked = {
222203
safeNavigate(
223204
resId = R.id.detailedContactBottomSheetDialog,
224205
args = DetailedContactBottomSheetDialogArgs(it).toBundle(),
225206
)
226-
}
227-
},
228-
onDownloadAllClicked = { message ->
229-
trackAttachmentActionsEvent("downloadAll")
230-
downloadAllAttachments(message)
231-
},
232-
onReplyClicked = { message ->
233-
trackMessageActionsEvent(ACTION_REPLY_NAME)
234-
replyTo(message)
235-
},
236-
onMenuClicked = { message ->
237-
message.navigateToActionsBottomSheet()
238-
},
239-
onAllExpandedMessagesLoaded = ::scrollToFirstUnseenMessage,
240-
navigateToAttendeeBottomSheet = { attendees ->
241-
safeNavigate(
242-
resId = R.id.attendeesBottomSheetDialog,
243-
args = AttendeesBottomSheetDialogArgs(attendees.toTypedArray()).toBundle(),
244-
)
245-
},
246-
navigateToNewMessageActivity = { twoPaneViewModel.navigateToNewMessage(mailToUri = it) },
247-
navigateToDownloadProgressDialog = ::safeNavigate,
248-
replyToCalendarEvent = { attendanceState, message ->
249-
threadViewModel.replyToCalendarEvent(
250-
attendanceState,
251-
message,
252-
).observe(viewLifecycleOwner) { successfullyUpdated ->
253-
if (successfullyUpdated) {
254-
snackbarManager.setValue(getString(R.string.snackbarCalendarChoiceSent))
255-
threadViewModel.fetchCalendarEvents(listOf(message), forceFetch = true)
256-
} else {
257-
snackbarManager.setValue(getString(R.string.errorCalendarChoiceCouldNotBeSent))
258-
threadAdapter.undoUserAttendanceClick(message)
207+
},
208+
onDraftClicked = { message ->
209+
trackNewMessageEvent(OPEN_FROM_DRAFT_NAME)
210+
twoPaneViewModel.navigateToNewMessage(
211+
arrivedFromExistingDraft = true,
212+
draftLocalUuid = message.draftLocalUuid,
213+
draftResource = message.draftResource,
214+
messageUid = message.uid,
215+
)
216+
},
217+
onDeleteDraftClicked = { message ->
218+
trackMessageActionsEvent("deleteDraft")
219+
mainViewModel.currentMailbox.value?.let { mailbox -> threadViewModel.deleteDraft(message, mailbox) }
220+
},
221+
onAttachmentClicked = { attachment ->
222+
attachment.resource?.let { resource ->
223+
safeNavigate(
224+
resId = R.id.attachmentActionsBottomSheetDialog,
225+
args = AttachmentActionsBottomSheetDialogArgs(resource).toBundle(),
226+
)
227+
}
228+
},
229+
onDownloadAllClicked = { message ->
230+
trackAttachmentActionsEvent("downloadAll")
231+
downloadAllAttachments(message)
232+
},
233+
onReplyClicked = { message ->
234+
trackMessageActionsEvent(ACTION_REPLY_NAME)
235+
replyTo(message)
236+
},
237+
onMenuClicked = { message ->
238+
message.navigateToActionsBottomSheet()
239+
},
240+
onAllExpandedMessagesLoaded = ::scrollToFirstUnseenMessage,
241+
navigateToAttendeeBottomSheet = { attendees ->
242+
safeNavigate(
243+
resId = R.id.attendeesBottomSheetDialog,
244+
args = AttendeesBottomSheetDialogArgs(attendees.toTypedArray()).toBundle(),
245+
)
246+
},
247+
navigateToNewMessageActivity = { twoPaneViewModel.navigateToNewMessage(mailToUri = it) },
248+
navigateToDownloadProgressDialog = ::safeNavigate,
249+
replyToCalendarEvent = { attendanceState, message ->
250+
threadViewModel.replyToCalendarEvent(
251+
attendanceState,
252+
message,
253+
).observe(viewLifecycleOwner) { successfullyUpdated ->
254+
if (successfullyUpdated) {
255+
snackbarManager.setValue(getString(R.string.snackbarCalendarChoiceSent))
256+
threadViewModel.fetchCalendarEvents(listOf(message), forceFetch = true)
257+
} else {
258+
snackbarManager.setValue(getString(R.string.errorCalendarChoiceCouldNotBeSent))
259+
threadAdapter.undoUserAttendanceClick(message)
260+
}
261+
}
262+
},
263+
promptLink = { data, type ->
264+
// When adding a phone number to contacts, Google decodes this value in case it's url-encoded. But I could not
265+
// reproduce this issue when manually creating a url-encoded href. If this is triggered, fix it by also
266+
// decoding it at that step.
267+
if (type == ContextMenuType.PHONE && data.contains('%')) Sentry.withScope { scope ->
268+
scope.level = SentryLevel.ERROR
269+
Sentry.captureMessage("Google was right, phone numbers can be url-encoded. Needs to be fixed")
259270
}
260-
}
261-
},
262-
promptLink = { data, type ->
263-
// When adding a phone number to contacts, Google decodes this value in case it's url-encoded. But I could not
264-
// reproduce this issue when manually creating a url-encoded href. If this is triggered, fix it by also
265-
// decoding it at that step.
266-
if (type == ContextMenuType.PHONE && data.contains('%')) Sentry.withScope { scope ->
267-
scope.level = SentryLevel.ERROR
268-
Sentry.captureMessage("Google was right, phone numbers can be url-encoded. Needs to be fixed")
269-
}
270271

271272
when (type) {
272273
ContextMenuType.LINK -> linkContextualMenuAlertDialog.show(data)

0 commit comments

Comments
 (0)