feat: add in call settings dialog for if calls is disabled in conversation
This commit is contained in:
parent
3637210308
commit
e7b0707377
|
@ -558,7 +558,13 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
||||||
|
|
||||||
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
|
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
|
||||||
if (!isMessageRequestThread()) {
|
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)
|
super.onPrepareOptionsMenu(menu)
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -46,6 +46,7 @@ import org.thoughtcrime.securesms.conversation.v2.utilities.NotificationUtils
|
||||||
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
||||||
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity
|
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity
|
||||||
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity.Companion.groupIDKey
|
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity.Companion.groupIDKey
|
||||||
|
import org.thoughtcrime.securesms.preferences.PrivacySettingsActivity
|
||||||
import org.thoughtcrime.securesms.service.WebRtcCallService
|
import org.thoughtcrime.securesms.service.WebRtcCallService
|
||||||
import org.thoughtcrime.securesms.util.BitmapUtil
|
import org.thoughtcrime.securesms.util.BitmapUtil
|
||||||
import org.thoughtcrime.securesms.util.getColorWithID
|
import org.thoughtcrime.securesms.util.getColorWithID
|
||||||
|
@ -53,7 +54,14 @@ import java.io.IOException
|
||||||
|
|
||||||
object ConversationMenuHelper {
|
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
|
// Prepare
|
||||||
menu.clear()
|
menu.clear()
|
||||||
val isOpenGroup = thread.isOpenGroupRecipient
|
val isOpenGroup = thread.isOpenGroupRecipient
|
||||||
|
@ -102,7 +110,7 @@ object ConversationMenuHelper {
|
||||||
inflater.inflate(R.menu.menu_conversation_notification_settings, menu)
|
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)
|
inflater.inflate(R.menu.menu_conversation_call, menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,6 +182,21 @@ object ConversationMenuHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun call(context: Context, thread: Recipient) {
|
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)
|
val service = WebRtcCallService.createCall(context, thread)
|
||||||
context.startService(service)
|
context.startService(service)
|
||||||
|
|
||||||
|
|
|
@ -99,6 +99,9 @@
|
||||||
|
|
||||||
<string name="ConversationActivity_search_position">%1$d of %2$d</string>
|
<string name="ConversationActivity_search_position">%1$d of %2$d</string>
|
||||||
|
|
||||||
|
<string name="ConversationActivity_call_title">Call Permissions Required</string>
|
||||||
|
<string name="ConversationActivity_call_prompt">You can enable the \'Voice and video calls\' permission in the Privacy Settings.</string>
|
||||||
|
|
||||||
<!-- ConversationFragment -->
|
<!-- ConversationFragment -->
|
||||||
<plurals name="ConversationFragment_delete_selected_messages">
|
<plurals name="ConversationFragment_delete_selected_messages">
|
||||||
<item quantity="one">Delete selected message?</item>
|
<item quantity="one">Delete selected message?</item>
|
||||||
|
|
|
@ -892,6 +892,11 @@ interface TextSecurePreferences {
|
||||||
removePreference(context, HAS_HIDDEN_MESSAGE_REQUESTS)
|
removePreference(context, HAS_HIDDEN_MESSAGE_REQUESTS)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun isCallNotificationsEnabled(context: Context): Boolean {
|
||||||
|
return getBooleanPreference(context, CALL_NOTIFICATIONS_ENABLED, false)
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun setShownCallWarning(context: Context): Boolean {
|
fun setShownCallWarning(context: Context): Boolean {
|
||||||
val previousValue = getBooleanPreference(context, SHOWN_CALL_WARNING, false)
|
val previousValue = getBooleanPreference(context, SHOWN_CALL_WARNING, false)
|
||||||
|
|
Loading…
Reference in New Issue