Skip to content

Commit

Permalink
Moved block/unblock string selection logic into ViewModel and fixed a…
Browse files Browse the repository at this point in the history
… comment
  • Loading branch information
alansley committed Aug 28, 2024
1 parent 736b531 commit dfebe6f
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2234,19 +2234,14 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
// that we've warned the user just _once_ that any attachments they save can be accessed by other apps.
val haveWarned = TextSecurePreferences.getHaveWarnedUserAboutSavingAttachments(this)
if (haveWarned) {

// On Android versions below 30 we require the WRITE_EXTERNAL_STORAGE permission to save attachments.
// However, we would like to on more recent Android API versions there is scoped storage
// If we already have permission to write to external storage then just get on with it & return..
//
// Android versions will j
if (Build.VERSION.SDK_INT < 30) {
// Save the attachment(s) then bail if we already have permission to do so
if (hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
saveAttachments(message)
return
} else {
/* Do nothing - which means we continue on to the SaveAttachmentTask part below where we ask for permissions */
/* If we don't have the permission then do nothing - which means we continue on to the SaveAttachmentTask part below where we ask for permissions */
}
} else {
// On more modern versions of Android on API 30+ WRITE_EXTERNAL_STORAGE is no longer used and we can just
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,11 @@
package org.thoughtcrime.securesms.preferences

import android.content.Context
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.widget.Toast
import androidx.activity.viewModels
import androidx.core.view.isVisible
import com.squareup.phrase.Phrase
import dagger.hilt.android.AndroidEntryPoint
import network.loki.messenger.R
import network.loki.messenger.databinding.ActivityBlockedContactsBinding
import org.session.libsession.utilities.StringSubstitutionConstants.COUNT_KEY
import org.session.libsession.utilities.StringSubstitutionConstants.NAME_KEY
import org.session.libsignal.utilities.Log
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
import org.thoughtcrime.securesms.showSessionDialog

Expand All @@ -29,27 +21,7 @@ class BlockedContactsActivity: PassphraseRequiredActionBarActivity() {
private fun unblock() {
showSessionDialog {
title(viewModel.getTitle(this@BlockedContactsActivity))

val contactsToUnblock = viewModel.state.selectedItems
val numContactsToUnblock = contactsToUnblock.size
val txt = when (numContactsToUnblock) {
// Note: We do not have to handle 0 because if no contacts are chosen then the unblock button is deactivated
1 -> Phrase.from(context, R.string.blockUnblockName)
.put(NAME_KEY, contactsToUnblock.elementAt(0).name)
.format().toString()
2 -> Phrase.from(context, R.string.blockUnblockNameTwo)
.put(NAME_KEY, contactsToUnblock.elementAt(0).name)
.format().toString()
else -> {
val othersCount = contactsToUnblock.size - 1
Phrase.from(context, R.string.blockUnblockNameMultiple)
.put(NAME_KEY, contactsToUnblock.elementAt(0).name)
.put(COUNT_KEY, othersCount)
.format().toString()
}
}
text(txt)

text(viewModel.getText(context, viewModel.state.selectedItems))
dangerButton(R.string.blockUnblock, R.string.AccessibilityId_unblockConfirm) { viewModel.unblock() }
cancelButton()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import app.cash.copper.flow.observeQuery
import com.squareup.phrase.Phrase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
Expand All @@ -18,6 +19,8 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.plus
import kotlinx.coroutines.withContext
import network.loki.messenger.R
import org.session.libsession.utilities.StringSubstitutionConstants.COUNT_KEY
import org.session.libsession.utilities.StringSubstitutionConstants.NAME_KEY
import org.session.libsession.utilities.recipients.Recipient
import org.thoughtcrime.securesms.database.DatabaseContentProviders
import org.thoughtcrime.securesms.database.Storage
Expand Down Expand Up @@ -74,6 +77,26 @@ class BlockedContactsViewModel @Inject constructor(private val storage: Storage)

fun getTitle(context: Context): String = context.getString(R.string.blockUnblock)

// Method to get the appropriate text to display when unblocking 1, 2, or several contacts
fun getText(context: Context, contactsToUnblock: Set<Recipient>): String {
return when (contactsToUnblock.size) {
// Note: We do not have to handle 0 because if no contacts are chosen then the unblock button is deactivated
1 -> Phrase.from(context, R.string.blockUnblockName)
.put(NAME_KEY, contactsToUnblock.elementAt(0).name)
.format().toString()
2 -> Phrase.from(context, R.string.blockUnblockNameTwo)
.put(NAME_KEY, contactsToUnblock.elementAt(0).name)
.format().toString()
else -> {
val othersCount = contactsToUnblock.size - 1
Phrase.from(context, R.string.blockUnblockNameMultiple)
.put(NAME_KEY, contactsToUnblock.elementAt(0).name)
.put(COUNT_KEY, othersCount)
.format().toString()
}
}
}

fun getMessage(context: Context): String = context.getString(R.string.blockUnblock)

fun toggle(selectable: SelectableItem<Recipient>) {
Expand Down

0 comments on commit dfebe6f

Please sign in to comment.