use nick from bookmark if available
This commit is contained in:
parent
2ebd92b7a7
commit
2a82f23f36
|
@ -7,6 +7,7 @@ import eu.siacs.conversations.crypto.PgpEngine;
|
|||
import eu.siacs.conversations.xml.Element;
|
||||
import eu.siacs.conversations.xmpp.stanzas.PresencePacket;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.util.Log;
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
public class MucOptions {
|
||||
|
@ -87,6 +88,7 @@ public class MucOptions {
|
|||
private boolean aboutToRename = false;
|
||||
private User self = new User();
|
||||
private String subject = null;
|
||||
private String nick;
|
||||
|
||||
public MucOptions(Account account) {
|
||||
this.account = account;
|
||||
|
@ -123,7 +125,7 @@ public class MucOptions {
|
|||
user.setAffiliation(item.getAttribute("affiliation"));
|
||||
user.setRole(item.getAttribute("role"));
|
||||
user.setName(name);
|
||||
if (name.equals(getNick())) {
|
||||
if (name.equals(getJoinNick())) {
|
||||
this.isOnline = true;
|
||||
this.error = 0;
|
||||
self = user;
|
||||
|
@ -145,7 +147,7 @@ public class MucOptions {
|
|||
}
|
||||
}
|
||||
} else if (type.equals("unavailable")) {
|
||||
if (name.equals(getNick())) {
|
||||
if (name.equals(getJoinNick())) {
|
||||
Element item = packet.findChild("x","http://jabber.org/protocol/muc#user").findChild("item");
|
||||
String nick = item.getAttribute("nick");
|
||||
if (nick!=null) {
|
||||
|
@ -153,7 +155,7 @@ public class MucOptions {
|
|||
if (renameListener!=null) {
|
||||
renameListener.onRename(true);
|
||||
}
|
||||
this.setNick(nick);
|
||||
this.setJoinNick(nick);
|
||||
}
|
||||
}
|
||||
deleteUser(packet.getAttribute("from").split("/")[1]);
|
||||
|
@ -177,22 +179,25 @@ public class MucOptions {
|
|||
return this.users;
|
||||
}
|
||||
|
||||
public String getNick() {
|
||||
String[] split = conversation.getContactJid().split("/");
|
||||
if (split.length == 2) {
|
||||
return split[1];
|
||||
public String getProposedNick() {
|
||||
String[] mucParts = conversation.getContactJid().split("/");
|
||||
if (conversation.getBookmark() != null && conversation.getBookmark().getNick() != null) {
|
||||
return conversation.getBookmark().getNick();
|
||||
} else {
|
||||
if (conversation.getAccount()!=null) {
|
||||
return conversation.getAccount().getUsername();
|
||||
if (mucParts.length == 2) {
|
||||
return mucParts[1];
|
||||
} else {
|
||||
return null;
|
||||
return account.getUsername();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setNick(String nick) {
|
||||
String jid = conversation.getContactJid().split("/")[0]+"/"+nick;
|
||||
conversation.setContactJid(jid);
|
||||
public String getJoinNick() {
|
||||
return this.nick;
|
||||
}
|
||||
|
||||
public void setJoinNick(String nick) {
|
||||
this.nick = nick;
|
||||
}
|
||||
|
||||
public void setConversation(Conversation conversation) {
|
||||
|
@ -268,4 +273,8 @@ public class MucOptions {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getJoinJid() {
|
||||
return this.conversation.getContactJid().split("/")[0]+"/"+this.getJoinNick();
|
||||
}
|
||||
}
|
|
@ -121,7 +121,7 @@ public class MessageParser extends AbstractParser implements
|
|||
return null;
|
||||
}
|
||||
String counterPart = fromParts[1];
|
||||
if (counterPart.equals(conversation.getMucOptions().getNick())) {
|
||||
if (counterPart.equals(conversation.getMucOptions().getJoinNick())) {
|
||||
if (mXmppConnectionService.markMessage(conversation,
|
||||
packet.getId(), Message.STATUS_SEND)) {
|
||||
return null;
|
||||
|
|
|
@ -691,6 +691,7 @@ public class XmppConnectionService extends Service {
|
|||
if (bookmark.autojoin()) {
|
||||
conversation = findOrCreateConversation(account, bookmark.getJid(), true);
|
||||
conversation.setBookmark(bookmark);
|
||||
joinMuc(conversation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -840,10 +841,6 @@ public class XmppConnectionService extends Service {
|
|||
this.databaseBackend.createConversation(conversation);
|
||||
}
|
||||
this.conversations.add(conversation);
|
||||
if ((account.getStatus() == Account.STATUS_ONLINE)
|
||||
&& (conversation.getMode() == Conversation.MODE_MULTI)) {
|
||||
joinMuc(conversation);
|
||||
}
|
||||
updateConversationUi();
|
||||
return conversation;
|
||||
}
|
||||
|
@ -933,19 +930,12 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public void joinMuc(Conversation conversation) {
|
||||
Log.d(LOGTAG,"joining conversation "+conversation.getContactJid());
|
||||
Account account = conversation.getAccount();
|
||||
String[] mucParts = conversation.getContactJid().split("/");
|
||||
String muc;
|
||||
String nick;
|
||||
if (mucParts.length == 2) {
|
||||
muc = mucParts[0];
|
||||
nick = mucParts[1];
|
||||
} else {
|
||||
muc = mucParts[0];
|
||||
nick = account.getUsername();
|
||||
}
|
||||
String nick = conversation.getMucOptions().getProposedNick();
|
||||
conversation.getMucOptions().setJoinNick(nick);
|
||||
PresencePacket packet = new PresencePacket();
|
||||
packet.setAttribute("to", muc + "/" + nick);
|
||||
packet.setAttribute("to",conversation.getMucOptions().getJoinJid());
|
||||
Element x = new Element("x");
|
||||
x.setAttribute("xmlns", "http://jabber.org/protocol/muc");
|
||||
String sig = account.getPgpSignature();
|
||||
|
@ -963,6 +953,7 @@ public class XmppConnectionService extends Service {
|
|||
mDateFormat.format(date));
|
||||
}
|
||||
packet.addChild(x);
|
||||
Log.d(LOGTAG,packet.toString());
|
||||
sendPresencePacket(account, packet);
|
||||
}
|
||||
|
||||
|
@ -984,10 +975,13 @@ public class XmppConnectionService extends Service {
|
|||
renameListener.onRename(success);
|
||||
}
|
||||
if (success) {
|
||||
String jid = conversation.getContactJid().split("/")[0]
|
||||
+ "/" + nick;
|
||||
conversation.setContactJid(jid);
|
||||
conversation.setContactJid(conversation.getMucOptions().getJoinNick());
|
||||
databaseBackend.updateConversation(conversation);
|
||||
Bookmark bookmark = conversation.getBookmark();
|
||||
if (bookmark!=null) {
|
||||
bookmark.setNick(nick);
|
||||
pushBookmarks(bookmark.getAccount());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -1009,6 +1003,11 @@ public class XmppConnectionService extends Service {
|
|||
conversation.setContactJid(jid);
|
||||
databaseBackend.updateConversation(conversation);
|
||||
if (conversation.getAccount().getStatus() == Account.STATUS_ONLINE) {
|
||||
Bookmark bookmark = conversation.getBookmark();
|
||||
if (bookmark!=null) {
|
||||
bookmark.setNick(nick);
|
||||
pushBookmarks(bookmark.getAccount());
|
||||
}
|
||||
joinMuc(conversation);
|
||||
}
|
||||
}
|
||||
|
@ -1016,8 +1015,7 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
public void leaveMuc(Conversation conversation) {
|
||||
PresencePacket packet = new PresencePacket();
|
||||
packet.setAttribute("to", conversation.getContactJid().split("/")[0]
|
||||
+ "/" + conversation.getMucOptions().getNick());
|
||||
packet.setAttribute("to", conversation.getMucOptions().getJoinJid());
|
||||
packet.setAttribute("from", conversation.getAccount().getFullJid());
|
||||
packet.setAttribute("type", "unavailable");
|
||||
sendPresencePacket(conversation.getAccount(),packet);
|
||||
|
|
|
@ -48,7 +48,7 @@ public class MucDetailsActivity extends XmppActivity {
|
|||
public void onClick(View arg0) {
|
||||
MucOptions options = conversation.getMucOptions();
|
||||
String nick = mYourNick.getText().toString();
|
||||
if (!options.getNick().equals(nick)) {
|
||||
if (!options.getJoinNick().equals(nick)) {
|
||||
xmppConnectionService.renameInMuc(conversation, nick);
|
||||
finish();
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ public class MucDetailsActivity extends XmppActivity {
|
|||
mSubject.setText(conversation.getMucOptions().getSubject());
|
||||
setTitle(conversation.getName(useSubject));
|
||||
mFullJid.setText(conversation.getContactJid().split("/")[0]);
|
||||
mYourNick.setText(conversation.getMucOptions().getNick());
|
||||
mYourNick.setText(conversation.getMucOptions().getJoinNick());
|
||||
mRoleAffiliaton = (TextView) findViewById(R.id.muc_role);
|
||||
if (conversation.getMucOptions().online()) {
|
||||
mMoreDetails.setVisibility(View.VISIBLE);
|
||||
|
|
|
@ -43,7 +43,6 @@ import eu.siacs.conversations.entities.Contact;
|
|||
import eu.siacs.conversations.entities.Conversation;
|
||||
import eu.siacs.conversations.entities.ListItem;
|
||||
import eu.siacs.conversations.utils.KnownHostsAdapter;
|
||||
import eu.siacs.conversations.utils.UIHelper;
|
||||
import eu.siacs.conversations.utils.Validator;
|
||||
|
||||
public class StartConversation extends XmppActivity {
|
||||
|
@ -65,7 +64,7 @@ public class StartConversation extends XmppActivity {
|
|||
private List<String> mKnownConferenceHosts;
|
||||
|
||||
private EditText mSearchEditText;
|
||||
|
||||
|
||||
public int conference_context_id;
|
||||
public int contact_context_id;
|
||||
|
||||
|
@ -178,14 +177,15 @@ public class StartConversation extends XmppActivity {
|
|||
mConferenceAdapter = new ListItemAdapter(conferences);
|
||||
mConferenceListFragment.setListAdapter(mConferenceAdapter);
|
||||
mConferenceListFragment.setContextMenu(R.menu.conference_context);
|
||||
mConferenceListFragment.setOnListItemClickListener(new OnItemClickListener() {
|
||||
mConferenceListFragment
|
||||
.setOnListItemClickListener(new OnItemClickListener() {
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> arg0, View arg1,
|
||||
int position, long arg3) {
|
||||
openConversationForBookmark(position);
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> arg0, View arg1,
|
||||
int position, long arg3) {
|
||||
openConversationForBookmark(position);
|
||||
}
|
||||
});
|
||||
|
||||
mContactsAdapter = new ListItemAdapter(contacts);
|
||||
mContactsListFragment.setListAdapter(mContactsAdapter);
|
||||
|
@ -209,20 +209,23 @@ public class StartConversation extends XmppActivity {
|
|||
contact.getJid(), false);
|
||||
switchToConversation(conversation);
|
||||
}
|
||||
|
||||
|
||||
protected void openConversationForContact() {
|
||||
int position = contact_context_id;
|
||||
openConversationForContact(position);
|
||||
}
|
||||
|
||||
|
||||
protected void openConversationForBookmark() {
|
||||
openConversationForBookmark(conference_context_id);
|
||||
}
|
||||
|
||||
|
||||
protected void openConversationForBookmark(int position) {
|
||||
Bookmark bookmark = (Bookmark) conferences.get(position);
|
||||
Conversation conversation = xmppConnectionService.findOrCreateConversation(bookmark.getAccount(), bookmark.getJid(), true);
|
||||
Conversation conversation = xmppConnectionService
|
||||
.findOrCreateConversation(bookmark.getAccount(),
|
||||
bookmark.getJid(), true);
|
||||
conversation.setBookmark(bookmark);
|
||||
xmppConnectionService.joinMuc(conversation);
|
||||
if (!bookmark.autojoin()) {
|
||||
bookmark.setAutojoin(true);
|
||||
xmppConnectionService.pushBookmarks(bookmark.getAccount());
|
||||
|
@ -242,7 +245,7 @@ public class StartConversation extends XmppActivity {
|
|||
xmppConnectionService.deleteContactOnServer(contact);
|
||||
filter(mSearchEditText.getText().toString());
|
||||
}
|
||||
|
||||
|
||||
protected void deleteConference() {
|
||||
int position = contact_context_id;
|
||||
Bookmark bookmark = (Bookmark) conferences.get(position);
|
||||
|
@ -307,7 +310,8 @@ public class StartConversation extends XmppActivity {
|
|||
jid.setAdapter(new KnownHostsAdapter(this,
|
||||
android.R.layout.simple_list_item_1, mKnownConferenceHosts));
|
||||
populateAccountSpinner(spinner);
|
||||
final CheckBox bookmarkCheckBox = (CheckBox) dialogView.findViewById(R.id.bookmark);
|
||||
final CheckBox bookmarkCheckBox = (CheckBox) dialogView
|
||||
.findViewById(R.id.bookmark);
|
||||
builder.setView(dialogView);
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.setPositiveButton(R.string.join, null);
|
||||
|
@ -328,20 +332,23 @@ public class StartConversation extends XmppActivity {
|
|||
if (account.hasBookmarkFor(conferenceJid)) {
|
||||
jid.setError(getString(R.string.bookmark_already_exists));
|
||||
} else {
|
||||
Bookmark bookmark = new Bookmark(account, conferenceJid);
|
||||
Bookmark bookmark = new Bookmark(account,
|
||||
conferenceJid);
|
||||
bookmark.setAutojoin(true);
|
||||
account.getBookmarks().add(bookmark);
|
||||
xmppConnectionService.pushBookmarks(account);
|
||||
xmppConnectionService
|
||||
.pushBookmarks(account);
|
||||
Conversation conversation = xmppConnectionService
|
||||
.findOrCreateConversation(account,
|
||||
conferenceJid, true);
|
||||
conversation.setBookmark(bookmark);
|
||||
switchToConversation(conversation);
|
||||
xmppConnectionService.joinMuc(conversation);
|
||||
switchToConversation(conversation);
|
||||
}
|
||||
} else {
|
||||
Conversation conversation = xmppConnectionService
|
||||
.findOrCreateConversation(account,
|
||||
conferenceJid, true);
|
||||
.findOrCreateConversation(account,
|
||||
conferenceJid, true);
|
||||
switchToConversation(conversation);
|
||||
}
|
||||
} else {
|
||||
|
@ -416,7 +423,7 @@ public class StartConversation extends XmppActivity {
|
|||
this.mKnownConferenceHosts = xmppConnectionService
|
||||
.getKnownConferenceHosts();
|
||||
}
|
||||
|
||||
|
||||
protected void filter(String needle) {
|
||||
this.filterContacts(needle);
|
||||
this.filterConferences(needle);
|
||||
|
@ -436,12 +443,12 @@ public class StartConversation extends XmppActivity {
|
|||
Collections.sort(this.contacts);
|
||||
mContactsAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
protected void filterConferences(String needle) {
|
||||
this.conferences.clear();
|
||||
for (Account account : xmppConnectionService.getAccounts()) {
|
||||
if (account.getStatus() != Account.STATUS_DISABLED) {
|
||||
for(Bookmark bookmark : account.getBookmarks()) {
|
||||
for (Bookmark bookmark : account.getBookmarks()) {
|
||||
if (bookmark.match(needle)) {
|
||||
this.conferences.add(bookmark);
|
||||
}
|
||||
|
@ -486,7 +493,7 @@ public class StartConversation extends XmppActivity {
|
|||
public static class MyListFragment extends ListFragment {
|
||||
private AdapterView.OnItemClickListener mOnItemClickListener;
|
||||
private int mResContextMenu;
|
||||
|
||||
|
||||
public void setContextMenu(int res) {
|
||||
this.mResContextMenu = res;
|
||||
}
|
||||
|
@ -513,8 +520,7 @@ public class StartConversation extends XmppActivity {
|
|||
ContextMenuInfo menuInfo) {
|
||||
super.onCreateContextMenu(menu, v, menuInfo);
|
||||
StartConversation activity = (StartConversation) getActivity();
|
||||
activity.getMenuInflater().inflate(mResContextMenu,
|
||||
menu);
|
||||
activity.getMenuInflater().inflate(mResContextMenu, menu);
|
||||
AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo;
|
||||
if (mResContextMenu == R.menu.conference_context) {
|
||||
activity.conference_context_id = acmi.position;
|
||||
|
|
|
@ -216,7 +216,7 @@ public class UIHelper {
|
|||
bgColor, fgColor);
|
||||
}
|
||||
String[] names = new String[members.size() + 1];
|
||||
names[0] = conversation.getMucOptions().getNick();
|
||||
names[0] = conversation.getMucOptions().getJoinNick();
|
||||
for (int i = 0; i < members.size(); ++i) {
|
||||
names[i + 1] = members.get(i).getName();
|
||||
}
|
||||
|
@ -343,7 +343,7 @@ public class UIHelper {
|
|||
if ((currentCon != null)
|
||||
&& (currentCon.getMode() == Conversation.MODE_MULTI)
|
||||
&& (!alwaysNotify)) {
|
||||
String nick = currentCon.getMucOptions().getNick();
|
||||
String nick = currentCon.getMucOptions().getJoinNick();
|
||||
Pattern highlight = generateNickHighlightPattern(nick);
|
||||
Matcher m = highlight.matcher(currentCon.getLatestMessage()
|
||||
.getBody());
|
||||
|
@ -463,7 +463,7 @@ public class UIHelper {
|
|||
|
||||
private static boolean wasHighlighted(Conversation conversation) {
|
||||
List<Message> messages = conversation.getMessages();
|
||||
String nick = conversation.getMucOptions().getNick();
|
||||
String nick = conversation.getMucOptions().getJoinNick();
|
||||
Pattern highlight = generateNickHighlightPattern(nick);
|
||||
for (int i = messages.size() - 1; i >= 0; --i) {
|
||||
if (messages.get(i).isRead()) {
|
||||
|
|
Loading…
Reference in a new issue