From e7b070737788da6283004f2d52366e2dce753164 Mon Sep 17 00:00:00 2001 From: jubb Date: Tue, 5 Apr 2022 16:09:22 +1000 Subject: [PATCH] feat: add in call settings dialog for if calls is disabled in conversation --- .../conversation/v2/ConversationActivityV2.kt | 8 +++++- .../v2/menus/ConversationMenuHelper.kt | 27 +++++++++++++++++-- app/src/main/res/values/strings.xml | 3 +++ .../utilities/TextSecurePreferences.kt | 5 ++++ 4 files changed, 40 insertions(+), 3 deletions(-) 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)