feat: add notification types for all / mentions only or none with UI and push logic

This commit is contained in:
Harris
2021-07-20 16:06:59 +10:00
parent 0131bc171a
commit b95cb2bedb
17 changed files with 270 additions and 59 deletions

View File

@@ -26,29 +26,28 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.annimon.stream.function.Consumer;
import com.esotericsoftware.kryo.util.Null;
import org.greenrobot.eventbus.EventBus;
import org.session.libsession.database.StorageProtocol;
import org.session.libsession.messaging.MessagingModuleConfiguration;
import org.session.libsession.avatars.TransparentContactPhoto;
import org.session.libsession.messaging.contacts.Contact;
import org.session.libsession.utilities.Address;
import org.session.libsession.utilities.GroupRecord;
import org.session.libsession.utilities.recipients.RecipientProvider.RecipientDetails;
import org.session.libsession.utilities.TextSecurePreferences;
import org.session.libsession.utilities.Util;
import org.session.libsession.utilities.MaterialColor;
import org.session.libsignal.utilities.Log;
import org.session.libsignal.utilities.guava.Optional;
import org.session.libsession.avatars.ContactColors;
import org.session.libsession.avatars.ContactPhoto;
import org.session.libsession.avatars.GroupRecordContactPhoto;
import org.session.libsession.avatars.ProfileContactPhoto;
import org.session.libsession.avatars.SystemContactPhoto;
import org.session.libsession.utilities.ProfilePictureModifiedEvent;
import org.session.libsession.avatars.TransparentContactPhoto;
import org.session.libsession.database.StorageProtocol;
import org.session.libsession.messaging.MessagingModuleConfiguration;
import org.session.libsession.messaging.contacts.Contact;
import org.session.libsession.utilities.Address;
import org.session.libsession.utilities.FutureTaskListener;
import org.session.libsession.utilities.GroupRecord;
import org.session.libsession.utilities.ListenableFutureTask;
import org.session.libsession.utilities.MaterialColor;
import org.session.libsession.utilities.ProfilePictureModifiedEvent;
import org.session.libsession.utilities.TextSecurePreferences;
import org.session.libsession.utilities.Util;
import org.session.libsession.utilities.recipients.RecipientProvider.RecipientDetails;
import org.session.libsignal.utilities.Log;
import org.session.libsignal.utilities.guava.Optional;
import java.util.Collections;
import java.util.HashSet;
@@ -80,6 +79,7 @@ public class Recipient implements RecipientModifiedListener {
private @Nullable Uri messageRingtone = null;
private @Nullable Uri callRingtone = null;
public long mutedUntil = 0;
public int notifyType = 0;
private boolean blocked = false;
private VibrateState messageVibrate = VibrateState.DEFAULT;
private VibrateState callVibrate = VibrateState.DEFAULT;
@@ -249,6 +249,7 @@ public class Recipient implements RecipientModifiedListener {
this.messageRingtone = details.messageRingtone;
this.callRingtone = details.callRingtone;
this.mutedUntil = details.mutedUntil;
this.notifyType = details.notifyType;
this.blocked = details.blocked;
this.messageVibrate = details.messageVibrateState;
this.callVibrate = details.callVibrateState;
@@ -547,6 +548,14 @@ public class Recipient implements RecipientModifiedListener {
notifyListeners();
}
public void setNotifyType(int notifyType) {
synchronized (this) {
this.notifyType = notifyType;
}
notifyListeners();
}
public synchronized boolean isBlocked() {
return blocked;
}
@@ -769,6 +778,7 @@ public class Recipient implements RecipientModifiedListener {
public static class RecipientSettings {
private final boolean blocked;
private final long muteUntil;
private final int notifyType;
private final VibrateState messageVibrateState;
private final VibrateState callVibrateState;
private final Uri messageRingtone;
@@ -790,6 +800,7 @@ public class Recipient implements RecipientModifiedListener {
private final boolean forceSmsSelection;
public RecipientSettings(boolean blocked, long muteUntil,
int notifyType,
@NonNull VibrateState messageVibrateState,
@NonNull VibrateState callVibrateState,
@Nullable Uri messageRingtone,
@@ -812,6 +823,7 @@ public class Recipient implements RecipientModifiedListener {
{
this.blocked = blocked;
this.muteUntil = muteUntil;
this.notifyType = notifyType;
this.messageVibrateState = messageVibrateState;
this.callVibrateState = callVibrateState;
this.messageRingtone = messageRingtone;
@@ -845,6 +857,10 @@ public class Recipient implements RecipientModifiedListener {
return muteUntil;
}
public int getNotifyType() {
return notifyType;
}
public @NonNull VibrateState getMessageVibrateState() {
return messageVibrateState;
}

View File

@@ -23,19 +23,20 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.session.libsession.R;
import org.session.libsession.messaging.MessagingModuleConfiguration;
import org.session.libsignal.utilities.guava.Optional;
import org.session.libsession.utilities.MaterialColor;
import org.session.libsession.utilities.Address;
import org.session.libsession.utilities.GroupRecord;
import org.session.libsession.utilities.ListenableFutureTask;
import org.session.libsession.utilities.MaterialColor;
import org.session.libsession.utilities.SoftHashMap;
import org.session.libsession.utilities.TextSecurePreferences;
import org.session.libsession.utilities.Util;
import org.session.libsession.utilities.recipients.Recipient.RecipientSettings;
import org.session.libsession.utilities.recipients.Recipient.RegisteredState;
import org.session.libsession.utilities.recipients.Recipient.UnidentifiedAccessMode;
import org.session.libsession.utilities.recipients.Recipient.VibrateState;
import org.session.libsession.utilities.ListenableFutureTask;
import org.session.libsession.utilities.SoftHashMap;
import org.session.libsession.utilities.TextSecurePreferences;
import org.session.libsession.utilities.Util;
import org.session.libsignal.utilities.guava.Optional;
import java.util.HashMap;
import java.util.LinkedList;
@@ -44,8 +45,6 @@ import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import org.session.libsession.R;
class RecipientProvider {
@SuppressWarnings("unused")
@@ -168,6 +167,7 @@ class RecipientProvider {
@Nullable final Uri messageRingtone;
@Nullable final Uri callRingtone;
final long mutedUntil;
final int notifyType;
@Nullable final VibrateState messageVibrateState;
@Nullable final VibrateState callVibrateState;
final boolean blocked;
@@ -197,6 +197,7 @@ class RecipientProvider {
this.messageRingtone = settings != null ? settings.getMessageRingtone() : null;
this.callRingtone = settings != null ? settings.getCallRingtone() : null;
this.mutedUntil = settings != null ? settings.getMuteUntil() : 0;
this.notifyType = settings != null ? settings.getNotifyType() : 0;
this.messageVibrateState = settings != null ? settings.getMessageVibrateState() : null;
this.callVibrateState = settings != null ? settings.getCallVibrateState() : null;
this.blocked = settings != null && settings.isBlocked();