Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2019-10-28 13:27:15 +01:00
parent 4f87607aa7
commit a79a8733a6
3 changed files with 37 additions and 8 deletions

View File

@ -59,6 +59,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.controllers.base.BaseController import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.events.ConfigurationChangeEvent import com.nextcloud.talk.events.ConfigurationChangeEvent
import com.nextcloud.talk.models.RingtoneSettings import com.nextcloud.talk.models.RingtoneSettings
import com.nextcloud.talk.models.database.ArbitraryStorageEntity
import com.nextcloud.talk.models.database.UserEntity import com.nextcloud.talk.models.database.UserEntity
import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.models.json.conversations.RoomsOverall import com.nextcloud.talk.models.json.conversations.RoomsOverall
@ -67,6 +68,7 @@ import com.nextcloud.talk.models.json.participants.ParticipantsOverall
import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DoNotDisturbUtils import com.nextcloud.talk.utils.DoNotDisturbUtils
import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.bundle.BundleKeys
import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils
import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder
import com.uber.autodispose.AutoDispose import com.uber.autodispose.AutoDispose
import io.reactivex.Observer import io.reactivex.Observer
@ -89,6 +91,10 @@ class CallNotificationController(private val originalBundle: Bundle) : BaseContr
@Inject @Inject
internal var ncApi: NcApi? = null internal var ncApi: NcApi? = null
@JvmField
@Inject
internal var arbitraryStorageUtils: ArbitraryStorageUtils? = null
@JvmField @JvmField
@BindView(R.id.conversationNameTextView) @BindView(R.id.conversationNameTextView)
var conversationNameTextView: TextView? = null var conversationNameTextView: TextView? = null
@ -289,7 +295,18 @@ class CallNotificationController(private val originalBundle: Bundle) : BaseContr
runAllThings() runAllThings()
} }
if (DoNotDisturbUtils.shouldPlaySound()) { var importantConversation = false
val arbitraryStorageEntity: ArbitraryStorageEntity? = arbitraryStorageUtils!!.getStorageSetting(
userBeingCalled!!.id,
"important_conversation",
currentConversation!!.token
)
if (arbitraryStorageEntity != null) {
importantConversation = arbitraryStorageEntity.value!!.toBoolean()
}
if (DoNotDisturbUtils.shouldPlaySound(importantConversation)) {
val callRingtonePreferenceString = appPreferences.callRingtoneUri val callRingtonePreferenceString = appPreferences.callRingtoneUri
var ringtoneUri: Uri? var ringtoneUri: Uri?

View File

@ -563,7 +563,7 @@ class NotificationWorker(
} else { } else {
try { try {
val ringtoneSettings: RingtoneSettings = val ringtoneSettings: RingtoneSettings =
LoganSquare.parse<RingtoneSettings>( LoganSquare.parse(
ringtonePreferencesString, RingtoneSettings::class.java ringtonePreferencesString, RingtoneSettings::class.java
) )
ringtoneSettings.ringtoneUri ringtoneSettings.ringtoneUri
@ -574,8 +574,9 @@ class NotificationWorker(
) )
} }
} }
if (soundUri != null && !ApplicationWideCurrentRoomHolder.getInstance().isInCall && if (soundUri != null && !ApplicationWideCurrentRoomHolder.getInstance().isInCall &&
(shouldPlaySound() || importantConversation) (shouldPlaySound(importantConversation))
) { ) {
val audioAttributesBuilder: AudioAttributes.Builder = val audioAttributesBuilder: AudioAttributes.Builder =
AudioAttributes.Builder() AudioAttributes.Builder()
@ -602,10 +603,7 @@ class NotificationWorker(
Log.e(TAG, "Failed to set data source") Log.e(TAG, "Failed to set data source")
} }
} }
if (shouldVibrate( if (shouldVibrate(appPreferences!!.shouldVibrateSetting)
appPreferences!!.shouldVibrateSetting
)
|| importantConversation
) { ) {
val vibrator = val vibrator =
context!!.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator context!!.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator

View File

@ -62,7 +62,7 @@ object DoNotDisturbUtils {
return false return false
} }
fun shouldPlaySound(): Boolean { fun shouldPlaySound(importantConversation: Boolean): Boolean {
val context = NextcloudTalkApplication.sharedApplication?.applicationContext val context = NextcloudTalkApplication.sharedApplication?.applicationContext
val notificationManager = val notificationManager =
@ -82,6 +82,14 @@ object DoNotDisturbUtils {
} }
} }
if (!shouldPlaySound && importantConversation) {
shouldPlaySound = true
}
if (audioManager.mode == AudioManager.MODE_IN_CALL) {
shouldPlaySound = false
}
return shouldPlaySound return shouldPlaySound
} }
@ -92,6 +100,12 @@ object DoNotDisturbUtils {
} }
fun shouldVibrate(vibrate: Boolean): Boolean { fun shouldVibrate(vibrate: Boolean): Boolean {
val context = NextcloudTalkApplication.sharedApplication?.applicationContext
val audioManager = context?.getSystemService(Context.AUDIO_SERVICE) as AudioManager
if (audioManager.mode == AudioManager.MODE_IN_CALL) {
return false
}
if (hasVibrator()) { if (hasVibrator()) {
val context = NextcloudTalkApplication.sharedApplication?.applicationContext val context = NextcloudTalkApplication.sharedApplication?.applicationContext