opt out handling of the autojoin flag. fixes #1666

This commit is contained in:
Daniel Gultsch 2016-02-01 13:54:08 +01:00
parent d1fc90f981
commit 1e7647e385
5 changed files with 20 additions and 5 deletions

View File

@ -1001,6 +1001,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
final Element query = packet.query(); final Element query = packet.query();
final HashMap<Jid, Bookmark> bookmarks = new HashMap<>(); final HashMap<Jid, Bookmark> bookmarks = new HashMap<>();
final Element storage = query.findChild("storage", "storage:bookmarks"); final Element storage = query.findChild("storage", "storage:bookmarks");
final boolean autojoin = respectAutojoin();
if (storage != null) { if (storage != null) {
for (final Element item : storage.getChildren()) { for (final Element item : storage.getChildren()) {
if (item.getName().equals("conference")) { if (item.getName().equals("conference")) {
@ -1012,7 +1013,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
Conversation conversation = find(bookmark); Conversation conversation = find(bookmark);
if (conversation != null) { if (conversation != null) {
conversation.setBookmark(bookmark); conversation.setBookmark(bookmark);
} else if (bookmark.autojoin() && bookmark.getJid() != null) { } else if (bookmark.autojoin() && bookmark.getJid() != null && autojoin) {
conversation = findOrCreateConversation( conversation = findOrCreateConversation(
account, bookmark.getJid(), true); account, bookmark.getJid(), true);
conversation.setBookmark(bookmark); conversation.setBookmark(bookmark);
@ -1330,7 +1331,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (conversation.getMode() == Conversation.MODE_MULTI) { if (conversation.getMode() == Conversation.MODE_MULTI) {
if (conversation.getAccount().getStatus() == Account.State.ONLINE) { if (conversation.getAccount().getStatus() == Account.State.ONLINE) {
Bookmark bookmark = conversation.getBookmark(); Bookmark bookmark = conversation.getBookmark();
if (bookmark != null && bookmark.autojoin()) { if (bookmark != null && bookmark.autojoin() && respectAutojoin()) {
bookmark.setAutojoin(false); bookmark.setAutojoin(false);
pushBookmarks(bookmark.getAccount()); pushBookmarks(bookmark.getAccount());
} }
@ -1791,7 +1792,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (conversation.getMode() == Conversation.MODE_MULTI) { if (conversation.getMode() == Conversation.MODE_MULTI) {
conversation.getMucOptions().setPassword(password); conversation.getMucOptions().setPassword(password);
if (conversation.getBookmark() != null) { if (conversation.getBookmark() != null) {
conversation.getBookmark().setAutojoin(true); if (respectAutojoin()) {
conversation.getBookmark().setAutojoin(true);
}
pushBookmarks(conversation.getAccount()); pushBookmarks(conversation.getAccount());
} }
databaseBackend.updateConversation(conversation); databaseBackend.updateConversation(conversation);
@ -2578,6 +2581,10 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
return !getPreferences().getBoolean("dont_save_encrypted", false); return !getPreferences().getBoolean("dont_save_encrypted", false);
} }
private boolean respectAutojoin() {
return getPreferences().getBoolean("autojoin", true);
}
public boolean indicateReceived() { public boolean indicateReceived() {
return getPreferences().getBoolean("indicate_received", false); return getPreferences().getBoolean("indicate_received", false);
} }

View File

@ -468,7 +468,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
bookmark.setNick(mConversation.getJid().getResourcepart()); bookmark.setNick(mConversation.getJid().getResourcepart());
} }
bookmark.setBookmarkName(mConversation.getMucOptions().getSubject()); bookmark.setBookmarkName(mConversation.getMucOptions().getSubject());
bookmark.setAutojoin(true); bookmark.setAutojoin(getPreferences().getBoolean("autojoin",true));
account.getBookmarks().add(bookmark); account.getBookmarks().add(bookmark);
xmppConnectionService.pushBookmarks(account); xmppConnectionService.pushBookmarks(account);
mConversation.setBookmark(bookmark); mConversation.setBookmark(bookmark);

View File

@ -286,7 +286,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
if (!conversation.getMucOptions().online()) { if (!conversation.getMucOptions().online()) {
xmppConnectionService.joinMuc(conversation); xmppConnectionService.joinMuc(conversation);
} }
if (!bookmark.autojoin()) { if (!bookmark.autojoin() && getPreferences().getBoolean("autojoin", true)) {
bookmark.setAutojoin(true); bookmark.setAutojoin(true);
xmppConnectionService.pushBookmarks(bookmark.getAccount()); xmppConnectionService.pushBookmarks(bookmark.getAccount());
} }

View File

@ -331,6 +331,8 @@
<string name="pref_expert_options_other">Other</string> <string name="pref_expert_options_other">Other</string>
<string name="pref_conference_name">Conference name</string> <string name="pref_conference_name">Conference name</string>
<string name="pref_conference_name_summary">Use rooms subject instead of JID to identify conferences</string> <string name="pref_conference_name_summary">Use rooms subject instead of JID to identify conferences</string>
<string name="pref_autojoin">Automatically join conferences</string>
<string name="pref_autojoin_summary">Respect the autojoin flag in conference bookmarks</string>
<string name="toast_message_otr_fingerprint">OTR fingerprint copied to clipboard!</string> <string name="toast_message_otr_fingerprint">OTR fingerprint copied to clipboard!</string>
<string name="toast_message_omemo_fingerprint">OMEMO fingerprint copied to clipboard!</string> <string name="toast_message_omemo_fingerprint">OMEMO fingerprint copied to clipboard!</string>
<string name="conference_banned">You are banned from this conference</string> <string name="conference_banned">You are banned from this conference</string>

View File

@ -186,6 +186,12 @@
android:title="@string/pref_xa_on_silent_mode"/> android:title="@string/pref_xa_on_silent_mode"/>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="@string/pref_expert_options_other"> <PreferenceCategory android:title="@string/pref_expert_options_other">
<CheckBoxPreference
android:key="autojoin"
android:defaultValue="true"
android:title="@string/pref_autojoin"
android:summary="@string/pref_autojoin_summary"
/>
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="indicate_received" android:key="indicate_received"