introduce setting to ignore invites from strangers
This commit is contained in:
parent
d0945c35ee
commit
3892015310
|
@ -44,6 +44,8 @@ public class AppSettings {
|
|||
public static final String COLORFUL_CHAT_BUBBLES = "use_green_background";
|
||||
public static final String LARGE_FONT = "large_font";
|
||||
|
||||
private static final String ACCEPT_INVITES_FROM_STRANGERS = "accept_invites_from_strangers";
|
||||
|
||||
private final Context context;
|
||||
|
||||
public AppSettings(final Context context) {
|
||||
|
@ -107,6 +109,11 @@ public class AppSettings {
|
|||
return getBooleanPreference(USE_TOR, R.bool.use_tor);
|
||||
}
|
||||
|
||||
public boolean isAcceptInvitesFromStrangers() {
|
||||
return getBooleanPreference(
|
||||
ACCEPT_INVITES_FROM_STRANGERS, R.bool.accept_invites_from_strangers);
|
||||
}
|
||||
|
||||
private boolean getBooleanPreference(@NonNull final String name, @BoolRes int res) {
|
||||
final SharedPreferences sharedPreferences =
|
||||
PreferenceManager.getDefaultSharedPreferences(context);
|
||||
|
|
|
@ -14,6 +14,7 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import eu.siacs.conversations.AppSettings;
|
||||
import eu.siacs.conversations.Config;
|
||||
import eu.siacs.conversations.R;
|
||||
import eu.siacs.conversations.crypto.axolotl.AxolotlService;
|
||||
|
@ -459,7 +460,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
|||
if (selfAddressed) {
|
||||
counterpart = from;
|
||||
} else {
|
||||
counterpart = to != null ? to : account.getJid();
|
||||
counterpart = to;
|
||||
}
|
||||
} else {
|
||||
status = Message.STATUS_RECEIVED;
|
||||
|
@ -1136,22 +1137,48 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
|||
if (this.jid == null) {
|
||||
return false;
|
||||
}
|
||||
final Contact contact = this.inviter != null ? account.getRoster().getContact(this.inviter) : null;
|
||||
final Contact contact =
|
||||
this.inviter != null ? account.getRoster().getContact(this.inviter) : null;
|
||||
if (contact != null && contact.isBlocked()) {
|
||||
Log.d(Config.LOGTAG,account.getJid().asBareJid()+": ignore invite from "+contact.getJid()+" because contact is blocked");
|
||||
Log.d(
|
||||
Config.LOGTAG,
|
||||
account.getJid().asBareJid()
|
||||
+ ": ignore invite from "
|
||||
+ contact.getJid()
|
||||
+ " because contact is blocked");
|
||||
return false;
|
||||
}
|
||||
final Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, jid, true, false);
|
||||
if (conversation.getMucOptions().online()) {
|
||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received invite to " + jid + " but muc is considered to be online");
|
||||
mXmppConnectionService.mucSelfPingAndRejoin(conversation);
|
||||
final AppSettings appSettings = new AppSettings(mXmppConnectionService);
|
||||
if ((contact != null && contact.showInContactList())
|
||||
|| appSettings.isAcceptInvitesFromStrangers()) {
|
||||
final Conversation conversation =
|
||||
mXmppConnectionService.findOrCreateConversation(account, jid, true, false);
|
||||
if (conversation.getMucOptions().online()) {
|
||||
Log.d(
|
||||
Config.LOGTAG,
|
||||
account.getJid().asBareJid()
|
||||
+ ": received invite to "
|
||||
+ jid
|
||||
+ " but muc is considered to be online");
|
||||
mXmppConnectionService.mucSelfPingAndRejoin(conversation);
|
||||
} else {
|
||||
conversation.getMucOptions().setPassword(password);
|
||||
mXmppConnectionService.databaseBackend.updateConversation(conversation);
|
||||
mXmppConnectionService.joinMuc(
|
||||
conversation, contact != null && contact.showInContactList());
|
||||
mXmppConnectionService.updateConversationUi();
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
conversation.getMucOptions().setPassword(password);
|
||||
mXmppConnectionService.databaseBackend.updateConversation(conversation);
|
||||
mXmppConnectionService.joinMuc(conversation, contact != null && contact.showInContactList());
|
||||
mXmppConnectionService.updateConversationUi();
|
||||
Log.d(
|
||||
Config.LOGTAG,
|
||||
account.getJid().asBareJid()
|
||||
+ ": ignoring invite from "
|
||||
+ this.inviter
|
||||
+ " because we are not accepting invites from strangers. direct="
|
||||
+ direct);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -976,14 +976,15 @@ public abstract class XmppActivity extends ActionBarActivity {
|
|||
return invite;
|
||||
}
|
||||
|
||||
public boolean execute(XmppActivity activity) {
|
||||
XmppConnectionService service = activity.xmppConnectionService;
|
||||
Conversation conversation = service.findConversationByUuid(this.uuid);
|
||||
public boolean execute(final XmppActivity activity) {
|
||||
final XmppConnectionService service = activity.xmppConnectionService;
|
||||
final Conversation conversation = service.findConversationByUuid(this.uuid);
|
||||
if (conversation == null) {
|
||||
return false;
|
||||
}
|
||||
if (conversation.getMode() == Conversation.MODE_MULTI) {
|
||||
for (Jid jid : jids) {
|
||||
for (final Jid jid : jids) {
|
||||
// TODO use direct invites for public conferences
|
||||
service.invite(conversation, jid);
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -183,6 +183,7 @@ public final class MucDetailsContextMenuHelper {
|
|||
activity.privateMsgInMuc(conversation, user.getName());
|
||||
return true;
|
||||
case R.id.invite:
|
||||
// TODO use direct invites for public conferences
|
||||
if (user.getAffiliation().ranks(MucOptions.Affiliation.MEMBER)) {
|
||||
activity.xmppConnectionService.directInvite(conversation, jid.asBareJid());
|
||||
} else {
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
<integer name="automatic_message_deletion">0</integer>
|
||||
<bool name="trust_system_ca_store">true</bool>
|
||||
<bool name="allow_message_correction">true</bool>
|
||||
<bool name="accept_invites_from_strangers">true</bool>
|
||||
<bool name="use_tor">false</bool>
|
||||
<bool name="show_connection_options">false</bool>
|
||||
<bool name="display_enter_key">false</bool>
|
||||
|
|
|
@ -1057,5 +1057,7 @@
|
|||
<string name="pref_up_long_summary">When acting as a UnifiedPush Distributor the persistent, reliable and battery-friendly XMPP connection will be utilized to wake up other UnifiedPush compatible app such as Tusky, Ltt.rs, FluffyChat and more.</string>
|
||||
<string name="pref_large_font">Large font</string>
|
||||
<string name="pref_large_font_summary">Increase font size in message bubbles</string>
|
||||
<string name="pref_accept_invites_from_strangers">Invites from strangers</string>
|
||||
<string name="pref_accept_invites_from_strangers_summary">Accept invites to group chats from strangers</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
android:title="@string/pref_chat_states" />
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="@bool/last_activity"
|
||||
android:key="last_activity"
|
||||
android:icon="@drawable/ic_visibility_24dp"
|
||||
android:key="last_activity"
|
||||
android:summary="@string/pref_broadcast_last_activity_summary"
|
||||
android:title="@string/pref_broadcast_last_activity" />
|
||||
|
||||
|
@ -28,7 +28,12 @@
|
|||
android:key="allow_message_correction"
|
||||
android:summary="@string/pref_allow_message_correction_summary"
|
||||
android:title="@string/pref_allow_message_correction" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="@bool/accept_invites_from_strangers"
|
||||
android:icon="@drawable/ic_domino_mask_24dp"
|
||||
android:key="accept_invites_from_strangers"
|
||||
android:summary="@string/pref_accept_invites_from_strangers_summary"
|
||||
android:title="@string/pref_accept_invites_from_strangers" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/pref_presence_settings">
|
||||
<SwitchPreferenceCompat
|
||||
|
|
Loading…
Reference in a new issue