Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1bbe2c3 authored by Moez Bhatti's avatar Moez Bhatti
Browse files

Add option to send long messages as MMS

Closes #1104
parent 2aa2f2cc
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -302,13 +302,20 @@ class MessageRepositoryImpl @Inject constructor(
            else -> prefs.signature.get()
        }

        val smsManager = subId.takeIf { it != -1 }
                ?.let(SmsManagerFactory::createSmsManager)
                ?: SmsManager.getDefault()

        // We only care about stripping SMS
        val strippedBody = when (prefs.unicode.get()) {
            true -> StripAccents.stripAccents(signedBody)
            false -> signedBody
        }

        if (addresses.size == 1 && attachments.isEmpty()) { // SMS
        val parts = smsManager.divideMessage(strippedBody).orEmpty()
        val forceMms = prefs.longAsMms.get() && parts.size > 1

        if (addresses.size == 1 && attachments.isEmpty() && !forceMms) { // SMS
            if (delay > 0) { // With delay
                val sendTime = System.currentTimeMillis() + delay
                val message = insertSentSms(subId, threadId, addresses.first(), strippedBody, sendTime)
+1 −0
Original line number Diff line number Diff line
@@ -109,6 +109,7 @@ class Preferences @Inject constructor(
    val signature = rxPrefs.getString("signature", "")
    val unicode = rxPrefs.getBoolean("unicode", false)
    val mobileOnly = rxPrefs.getBoolean("mobileOnly", false)
    val longAsMms = rxPrefs.getBoolean("longAsMms", false)
    val mmsSize = rxPrefs.getInteger("mmsSize", 300)
    val logging = rxPrefs.getBoolean("logging", false)

+1 −0
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre

        unicode.checkbox.isChecked = state.stripUnicodeEnabled
        mobileOnly.checkbox.isChecked = state.mobileOnly
        longAsMms.checkbox.isChecked = state.longAsMms

        mmsSize.summary = state.maxMmsSizeSummary
        mmsSizeDialog.adapter.selectedItem = state.maxMmsSizeId
+5 −0
Original line number Diff line number Diff line
@@ -112,6 +112,9 @@ class SettingsPresenter @Inject constructor(
        disposables += prefs.mobileOnly.asObservable()
                .subscribe { enabled -> newState { copy(mobileOnly = enabled) } }

        disposables += prefs.longAsMms.asObservable()
                .subscribe { enabled -> newState { copy(longAsMms = enabled) } }

        val mmsSizeLabels = context.resources.getStringArray(R.array.mms_sizes)
        val mmsSizeIds = context.resources.getIntArray(R.array.mms_sizes_ids)
        disposables += prefs.mmsSize.asObservable()
@@ -175,6 +178,8 @@ class SettingsPresenter @Inject constructor(

                        R.id.mobileOnly -> prefs.mobileOnly.set(!prefs.mobileOnly.get())

                        R.id.longAsMms -> prefs.longAsMms.set(!prefs.longAsMms.get())

                        R.id.mmsSize -> view.showMmsSizePicker()

                        R.id.sync -> syncMessages.execute(Unit)
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ data class SettingsState(
    val splitSmsEnabled: Boolean = false,
    val stripUnicodeEnabled: Boolean = false,
    val mobileOnly: Boolean = false,
    val longAsMms: Boolean = false,
    val maxMmsSizeSummary: String = "100KB",
    val maxMmsSizeId: Int = 100,
    val syncProgress: SyncRepository.SyncProgress = SyncRepository.SyncProgress.Idle
Loading