mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 13:08:46 +00:00
Avoid message failed notification when bubble thread is visible.
This commit is contained in:
@@ -677,6 +677,8 @@ class ConversationFragment :
|
||||
|
||||
if (!args.conversationScreenType.isInBubble) {
|
||||
AppDependencies.messageNotifier.setVisibleThread(ConversationId.forConversation(args.threadId))
|
||||
} else {
|
||||
AppDependencies.messageNotifier.setVisibleBubbleThread(ConversationId.forConversation(args.threadId))
|
||||
}
|
||||
|
||||
viewModel.updateIdentityRecordsInBackground()
|
||||
@@ -707,6 +709,8 @@ class ConversationFragment :
|
||||
|
||||
if (!args.conversationScreenType.isInBubble) {
|
||||
AppDependencies.messageNotifier.clearVisibleThread()
|
||||
} else {
|
||||
AppDependencies.messageNotifier.clearVisibleBubbleThread()
|
||||
}
|
||||
|
||||
if (activity?.isFinishing == true) {
|
||||
|
||||
@@ -18,6 +18,8 @@ public interface MessageNotifier {
|
||||
void setVisibleThread(@Nullable ConversationId conversationId);
|
||||
@NonNull Optional<ConversationId> getVisibleThread();
|
||||
void clearVisibleThread();
|
||||
void setVisibleBubbleThread(@Nullable ConversationId conversationId);
|
||||
void clearVisibleBubbleThread();
|
||||
void setLastDesktopActivityTimestamp(long timestamp);
|
||||
void notifyMessageDeliveryFailed(@NonNull Context context, @NonNull Recipient recipient, @NonNull ConversationId conversationId);
|
||||
void notifyStoryDeliveryFailed(@NonNull Context context, @NonNull Recipient recipient, @NonNull ConversationId conversationId);
|
||||
|
||||
@@ -52,6 +52,16 @@ public class OptimizedMessageNotifier implements MessageNotifier {
|
||||
getNotifier().clearVisibleThread();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisibleBubbleThread(@Nullable ConversationId conversationId) {
|
||||
getNotifier().setVisibleBubbleThread(conversationId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearVisibleBubbleThread() {
|
||||
getNotifier().clearVisibleBubbleThread();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLastDesktopActivityTimestamp(long timestamp) {
|
||||
getNotifier().setLastDesktopActivityTimestamp(timestamp);
|
||||
|
||||
@@ -47,6 +47,8 @@ import kotlin.math.max
|
||||
class DefaultMessageNotifier(context: Application) : MessageNotifier {
|
||||
@Volatile private var visibleThread: ConversationId? = null
|
||||
|
||||
@Volatile private var visibleBubbleThread: ConversationId? = null
|
||||
|
||||
@Volatile private var lastDesktopActivityTimestamp: Long = -1
|
||||
|
||||
@Volatile private var lastAudibleNotification: Long = -1
|
||||
@@ -81,12 +83,20 @@ class DefaultMessageNotifier(context: Application) : MessageNotifier {
|
||||
setVisibleThread(null)
|
||||
}
|
||||
|
||||
override fun setVisibleBubbleThread(conversationId: ConversationId?) {
|
||||
visibleBubbleThread = conversationId
|
||||
}
|
||||
|
||||
override fun clearVisibleBubbleThread() {
|
||||
setVisibleBubbleThread(null)
|
||||
}
|
||||
|
||||
override fun setLastDesktopActivityTimestamp(timestamp: Long) {
|
||||
lastDesktopActivityTimestamp = timestamp
|
||||
}
|
||||
|
||||
override fun notifyMessageDeliveryFailed(context: Context, recipient: Recipient, conversationId: ConversationId) {
|
||||
NotificationFactory.notifyMessageDeliveryFailed(context, recipient, conversationId, visibleThread)
|
||||
NotificationFactory.notifyMessageDeliveryFailed(context, recipient, conversationId, visibleThread, visibleBubbleThread)
|
||||
}
|
||||
|
||||
override fun notifyStoryDeliveryFailed(context: Context, recipient: Recipient, conversationId: ConversationId) {
|
||||
|
||||
@@ -342,8 +342,8 @@ object NotificationFactory {
|
||||
ringtone.play()
|
||||
}
|
||||
|
||||
fun notifyMessageDeliveryFailed(context: Context, recipient: Recipient, thread: ConversationId, visibleThread: ConversationId?) {
|
||||
if (thread == visibleThread) {
|
||||
fun notifyMessageDeliveryFailed(context: Context, recipient: Recipient, thread: ConversationId, visibleThread: ConversationId?, visibleBubbleThread: ConversationId?) {
|
||||
if (thread == visibleThread || thread == visibleBubbleThread) {
|
||||
notifyInThread(context, recipient, 0)
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user