diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt
index 15ad6fb09..67aae625b 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt
@@ -558,7 +558,13 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
if (!isMessageRequestThread()) {
- ConversationMenuHelper.onPrepareOptionsMenu(menu, menuInflater, viewModel.recipient, viewModel.threadId, textSecurePreferences.isCallNotificationsEnabled(), this) { onOptionsItemSelected(it) }
+ ConversationMenuHelper.onPrepareOptionsMenu(
+ menu,
+ menuInflater,
+ viewModel.recipient,
+ viewModel.threadId,
+ this
+ ) { onOptionsItemSelected(it) }
}
super.onPrepareOptionsMenu(menu)
return true
diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationMenuHelper.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationMenuHelper.kt
index 8ece22999..5669cafa4 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationMenuHelper.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationMenuHelper.kt
@@ -46,6 +46,7 @@ import org.thoughtcrime.securesms.conversation.v2.utilities.NotificationUtils
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity.Companion.groupIDKey
+import org.thoughtcrime.securesms.preferences.PrivacySettingsActivity
import org.thoughtcrime.securesms.service.WebRtcCallService
import org.thoughtcrime.securesms.util.BitmapUtil
import org.thoughtcrime.securesms.util.getColorWithID
@@ -53,7 +54,14 @@ import java.io.IOException
object ConversationMenuHelper {
- fun onPrepareOptionsMenu(menu: Menu, inflater: MenuInflater, thread: Recipient, threadId: Long, isCallsEnabled: Boolean, context: Context, onOptionsItemSelected: (MenuItem) -> Unit) {
+ fun onPrepareOptionsMenu(
+ menu: Menu,
+ inflater: MenuInflater,
+ thread: Recipient,
+ threadId: Long,
+ context: Context,
+ onOptionsItemSelected: (MenuItem) -> Unit
+ ) {
// Prepare
menu.clear()
val isOpenGroup = thread.isOpenGroupRecipient
@@ -102,7 +110,7 @@ object ConversationMenuHelper {
inflater.inflate(R.menu.menu_conversation_notification_settings, menu)
}
- if (!thread.isGroupRecipient && isCallsEnabled) {
+ if (!thread.isGroupRecipient && thread.hasApprovedMe()) {
inflater.inflate(R.menu.menu_conversation_call, menu)
}
@@ -174,6 +182,21 @@ object ConversationMenuHelper {
}
private fun call(context: Context, thread: Recipient) {
+
+ if (!TextSecurePreferences.isCallNotificationsEnabled(context)) {
+ AlertDialog.Builder(context)
+ .setTitle(R.string.ConversationActivity_call_title)
+ .setMessage(R.string.ConversationActivity_call_prompt)
+ .setPositiveButton(R.string.activity_settings_title) { _, _ ->
+ val intent = Intent(context, PrivacySettingsActivity::class.java)
+ context.startActivity(intent)
+ }
+ .setNeutralButton(R.string.cancel) { d, _ ->
+ d.dismiss()
+ }.show()
+ return
+ }
+
val service = WebRtcCallService.createCall(context, thread)
context.startService(service)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 76db5d439..922518dcc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -99,6 +99,9 @@
%1$d of %2$d
+ Call Permissions Required
+ You can enable the \'Voice and video calls\' permission in the Privacy Settings.
+
- Delete selected message?
diff --git a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt
index ada469b77..71b766daa 100644
--- a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt
+++ b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt
@@ -892,6 +892,11 @@ interface TextSecurePreferences {
removePreference(context, HAS_HIDDEN_MESSAGE_REQUESTS)
}
+ @JvmStatic
+ fun isCallNotificationsEnabled(context: Context): Boolean {
+ return getBooleanPreference(context, CALL_NOTIFICATIONS_ENABLED, false)
+ }
+
@JvmStatic
fun setShownCallWarning(context: Context): Boolean {
val previousValue = getBooleanPreference(context, SHOWN_CALL_WARNING, false)