do not notify for messages from strangers by default

This commit is contained in:
Daniel Gultsch 2017-03-07 10:50:46 +01:00
parent 857c761c68
commit 7306e0286f
5 changed files with 38 additions and 3 deletions

View file

@ -992,6 +992,26 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
} }
} }
private int sentMessagesCount() {
int count = 0;
synchronized (this.messages) {
for(Message message : messages) {
if (message.getStatus() != Message.STATUS_RECEIVED) {
++count;
}
}
}
return count;
}
public boolean isWithStranger() {
if (mode == MODE_SINGLE) {
return !getContact().mutualPresenceSubscription() && sentMessagesCount() == 0;
} else {
return false;
}
}
public class Smp { public class Smp {
public static final int STATUS_NONE = 0; public static final int STATUS_NONE = 0;
public static final int STATUS_CONTACT_REQUESTED = 1; public static final int STATUS_CONTACT_REQUESTED = 1;

View file

@ -59,17 +59,23 @@ public class NotificationService {
} }
public boolean notify(final Message message) { public boolean notify(final Message message) {
return (message.getStatus() == Message.STATUS_RECEIVED) return message.getStatus() == Message.STATUS_RECEIVED
&& notificationsEnabled() && notificationsEnabled()
&& !message.getConversation().isMuted() && !message.getConversation().isMuted()
&& (message.getConversation().alwaysNotify() || wasHighlightedOrPrivate(message) && (message.getConversation().alwaysNotify() || wasHighlightedOrPrivate(message))
); && (!message.getConversation().isWithStranger() || notificationsFromStrangers())
;
} }
public boolean notificationsEnabled() { public boolean notificationsEnabled() {
return mXmppConnectionService.getPreferences().getBoolean("show_notification", true); return mXmppConnectionService.getPreferences().getBoolean("show_notification", true);
} }
private boolean notificationsFromStrangers() {
return mXmppConnectionService.getPreferences().getBoolean("notifications_from_strangers",
mXmppConnectionService.getResources().getBoolean(R.bool.notifications_from_strangers));
}
public boolean isQuietHours() { public boolean isQuietHours() {
if (!mXmppConnectionService.getPreferences().getBoolean("enable_quiet_hours", false)) { if (!mXmppConnectionService.getPreferences().getBoolean("enable_quiet_hours", false)) {
return false; return false;

View file

@ -3,4 +3,5 @@
<string name="default_resource">Phone</string> <string name="default_resource">Phone</string>
<bool name="portrait_only">true</bool> <bool name="portrait_only">true</bool>
<bool name="enter_is_send">false</bool> <bool name="enter_is_send">false</bool>
<bool name="notifications_from_strangers">false</bool>
</resources> </resources>

View file

@ -736,4 +736,6 @@
<string name="transcoding_video_progress">Compressing video (%s%% completed)</string> <string name="transcoding_video_progress">Compressing video (%s%% completed)</string>
<string name="corresponding_conversations_closed">Corresponding conversations closed.</string> <string name="corresponding_conversations_closed">Corresponding conversations closed.</string>
<string name="contact_blocked_past_tense">Contact blocked.</string> <string name="contact_blocked_past_tense">Contact blocked.</string>
<string name="pref_notifications_from_strangers">Notifications from strangers</string>
<string name="pref_notifications_from_strangers_summary">Notify for messages received from strangers.</string>
</resources> </resources>

View file

@ -41,6 +41,12 @@
android:key="show_notification" android:key="show_notification"
android:summary="@string/pref_notifications_summary" android:summary="@string/pref_notifications_summary"
android:title="@string/pref_notifications"/> android:title="@string/pref_notifications"/>
<CheckBoxPreference
android:defaultValue="@bool/notifications_from_strangers"
android:key="notifications_from_strangers"
android:dependency="show_notification"
android:title="@string/pref_notifications_from_strangers"
android:summary="@string/pref_notifications_from_strangers_summary"/>
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="true" android:defaultValue="true"
android:dependency="show_notification" android:dependency="show_notification"