mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-21 12:38:27 +00:00
fix: remove in-thread notifications (#962)
This commit is contained in:
parent
16d4519d7e
commit
b1918f07e1
@ -25,10 +25,6 @@ import android.content.BroadcastReceiver;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.media.AudioAttributes;
|
|
||||||
import android.media.AudioManager;
|
|
||||||
import android.media.Ringtone;
|
|
||||||
import android.media.RingtoneManager;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@ -40,13 +36,12 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.NotificationManagerCompat;
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
|
|
||||||
|
import com.annimon.stream.Optional;
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
import com.goterl.lazysodium.utils.KeyPair;
|
import com.goterl.lazysodium.utils.KeyPair;
|
||||||
|
|
||||||
import org.session.libsession.messaging.MessagingModuleConfiguration;
|
import org.session.libsession.messaging.MessagingModuleConfiguration;
|
||||||
import org.session.libsession.messaging.open_groups.OpenGroup;
|
import org.session.libsession.messaging.open_groups.OpenGroup;
|
||||||
import com.annimon.stream.Optional;
|
|
||||||
import com.annimon.stream.Stream;
|
|
||||||
|
|
||||||
import org.session.libsession.messaging.sending_receiving.notifications.MessageNotifier;
|
import org.session.libsession.messaging.sending_receiving.notifications.MessageNotifier;
|
||||||
import org.session.libsession.messaging.utilities.SessionId;
|
import org.session.libsession.messaging.utilities.SessionId;
|
||||||
import org.session.libsession.messaging.utilities.SodiumUtilities;
|
import org.session.libsession.messaging.utilities.SodiumUtilities;
|
||||||
@ -139,9 +134,7 @@ public class DefaultMessageNotifier implements MessageNotifier {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyMessageDeliveryFailed(Context context, Recipient recipient, long threadId) {
|
public void notifyMessageDeliveryFailed(Context context, Recipient recipient, long threadId) {
|
||||||
if (visibleThread == threadId) {
|
if (visibleThread != threadId) {
|
||||||
sendInThreadNotification(context, recipient);
|
|
||||||
} else {
|
|
||||||
Intent intent = new Intent(context, ConversationActivityV2.class);
|
Intent intent = new Intent(context, ConversationActivityV2.class);
|
||||||
intent.putExtra(ConversationActivityV2.ADDRESS, recipient.getAddress());
|
intent.putExtra(ConversationActivityV2.ADDRESS, recipient.getAddress());
|
||||||
intent.putExtra(ConversationActivityV2.THREAD_ID, threadId);
|
intent.putExtra(ConversationActivityV2.THREAD_ID, threadId);
|
||||||
@ -258,9 +251,7 @@ public class DefaultMessageNotifier implements MessageNotifier {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isVisible) {
|
if (!isVisible && !homeScreenVisible) {
|
||||||
sendInThreadNotification(context, threads.getRecipientForThreadId(threadId));
|
|
||||||
} else if (!homeScreenVisible) {
|
|
||||||
updateNotification(context, signal, 0);
|
updateNotification(context, signal, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -456,44 +447,6 @@ public class DefaultMessageNotifier implements MessageNotifier {
|
|||||||
Log.i(TAG, "Posted notification. " + notification);
|
Log.i(TAG, "Posted notification. " + notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendInThreadNotification(Context context, Recipient recipient) {
|
|
||||||
if (!TextSecurePreferences.isInThreadNotifications(context) ||
|
|
||||||
ServiceUtil.getAudioManager(context).getRingerMode() != AudioManager.RINGER_MODE_NORMAL ||
|
|
||||||
(System.currentTimeMillis() - lastAudibleNotification) < MIN_AUDIBLE_PERIOD_MILLIS)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
lastAudibleNotification = System.currentTimeMillis();
|
|
||||||
}
|
|
||||||
|
|
||||||
Uri uri = null;
|
|
||||||
if (recipient != null) {
|
|
||||||
uri = NotificationChannels.supported() ? NotificationChannels.getMessageRingtone(context, recipient) : recipient.getMessageRingtone();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uri == null) {
|
|
||||||
uri = NotificationChannels.supported() ? NotificationChannels.getMessageRingtone(context) : TextSecurePreferences.getNotificationRingtone(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uri.toString().isEmpty()) {
|
|
||||||
Log.d(TAG, "ringtone uri is empty");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ringtone ringtone = RingtoneManager.getRingtone(context, uri);
|
|
||||||
|
|
||||||
if (ringtone == null) {
|
|
||||||
Log.w(TAG, "ringtone is null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ringtone.setAudioAttributes(new AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN)
|
|
||||||
.setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT)
|
|
||||||
.build());
|
|
||||||
|
|
||||||
ringtone.play();
|
|
||||||
}
|
|
||||||
|
|
||||||
private NotificationState constructNotificationState(@NonNull Context context,
|
private NotificationState constructNotificationState(@NonNull Context context,
|
||||||
@NonNull Cursor cursor)
|
@NonNull Cursor cursor)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user