srctree

Robin Linden parent 8298d79a c13714c4
Silence notifications when busy

inlinesplit
atox/src/main/kotlin/tox/EventListenerCallbacks.kt added: 19, removed: 11, total 8
@@ -25,11 +25,13 @@ import ltd.evilcorp.core.repository.FriendRequestRepository
import ltd.evilcorp.core.repository.MessageRepository
import ltd.evilcorp.core.repository.UserRepository
import ltd.evilcorp.core.vo.ConnectionStatus
import ltd.evilcorp.core.vo.Contact
import ltd.evilcorp.core.vo.FileKind
import ltd.evilcorp.core.vo.FileTransfer
import ltd.evilcorp.core.vo.FriendRequest
import ltd.evilcorp.core.vo.Message
import ltd.evilcorp.core.vo.Sender
import ltd.evilcorp.core.vo.UserStatus
import ltd.evilcorp.domain.av.AudioPlayer
import ltd.evilcorp.domain.feature.CallManager
import ltd.evilcorp.domain.feature.ChatManager
@@ -75,6 +77,9 @@ class EventListenerCallbacks @Inject constructor(
it
}
 
private fun notifyMessage(contact: Contact, message: String) =
notificationHelper.showMessageNotification(contact, message, silent = tox.getStatus() == UserStatus.Busy)
 
fun setUp(listener: ToxEventListener) = with(listener) {
friendStatusMessageHandler = { publicKey, message ->
contactRepository.setStatusMessage(publicKey, message)
@@ -105,7 +110,7 @@ class EventListenerCallbacks @Inject constructor(
friendRequestHandler = { publicKey, _, message ->
FriendRequest(publicKey, message).also {
friendRequestRepository.add(it)
notificationHelper.showFriendRequestNotification(it)
notificationHelper.showFriendRequestNotification(it, silent = tox.getStatus() == UserStatus.Busy)
}
}
 
@@ -117,7 +122,7 @@ class EventListenerCallbacks @Inject constructor(
if (chatManager.activeChat != publicKey) {
scope.launch {
val contact = tryGetContact(publicKey, "Message") ?: return@launch
notificationHelper.showMessageNotification(contact, msg)
notifyMessage(contact, msg)
}
contactRepository.setHasUnreadMessages(publicKey, true)
}
@@ -141,7 +146,7 @@ class EventListenerCallbacks @Inject constructor(
scope.launch {
val contact = tryGetContact(publicKey, "FileRecv") ?: return@launch
val msg = ctx.getString(R.string.notification_file_transfer, name)
notificationHelper.showMessageNotification(contact, msg)
notifyMessage(contact, msg)
}
contactRepository.setHasUnreadMessages(publicKey, true)
}
 
atox/src/main/kotlin/ui/NotificationHelper.kt added: 19, removed: 11, total 8
@@ -113,7 +113,12 @@ class NotificationHelper @Inject constructor(
override fun key() = "circleTransform"
}
 
fun showMessageNotification(contact: Contact, message: String, outgoing: Boolean = false) {
fun showMessageNotification(
contact: Contact,
message: String,
outgoing: Boolean = false,
silent: Boolean = outgoing,
) {
val notificationBuilder = NotificationCompat.Builder(context, MESSAGE)
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setSmallIcon(android.R.drawable.sym_action_chat)
@@ -121,10 +126,7 @@ class NotificationHelper @Inject constructor(
.setContentText(message)
.setContentIntent(deepLinkToChat(PublicKey(contact.publicKey)))
.setAutoCancel(true)
 
if (outgoing) {
notificationBuilder.setSilent(true)
}
.setSilent(silent)
 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val icon = if (contact.avatarUri.isNotEmpty()) {
@@ -209,7 +211,7 @@ class NotificationHelper @Inject constructor(
notifier.notify(contact.publicKey.hashCode(), notificationBuilder.build())
}
 
fun showFriendRequestNotification(friendRequest: FriendRequest) {
fun showFriendRequestNotification(friendRequest: FriendRequest, silent: Boolean) {
val notificationBuilder = NotificationCompat.Builder(context, FRIEND_REQUEST)
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setSmallIcon(android.R.drawable.btn_star_big_on)
@@ -222,6 +224,7 @@ class NotificationHelper @Inject constructor(
.createPendingIntent()
)
.setAutoCancel(true)
.setSilent(silent)
 
notifier.notify(friendRequest.publicKey.hashCode(), notificationBuilder.build())
}