fixed mam to work with muc

This commit is contained in:
iNPUTmice 2015-01-24 00:22:51 +01:00
parent ed3d76bcf6
commit b9af38464e
4 changed files with 21 additions and 11 deletions

View file

@ -107,7 +107,9 @@ public class IqGenerator extends AbstractGenerator {
query.setAttribute("queryid",mam.getQueryId());
final Data data = new Data();
data.setFormType("urn:xmpp:mam:0");
if (mam.getWith()!=null) {
if (mam.muc()) {
packet.setTo(mam.getWith());
} else if (mam.getWith()!=null) {
data.put("with", mam.getWith().toString());
}
data.put("start",getTimestamp(mam.getStart()));

View file

@ -8,7 +8,6 @@ import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Message;
import eu.siacs.conversations.entities.MucOptions;
import eu.siacs.conversations.http.HttpConnection;
import eu.siacs.conversations.http.HttpConnectionManager;
import eu.siacs.conversations.services.MessageArchiveService;
import eu.siacs.conversations.services.XmppConnectionService;
@ -142,6 +141,7 @@ public class MessageParser extends AbstractParser implements
Conversation conversation = mXmppConnectionService
.findOrCreateConversation(account, from.toBareJid(), true);
if (packet.hasChild("subject")) {
conversation.setHasMessagesLeftOnServer(true);
conversation.getMucOptions().setSubject(packet.findChild("subject").getContent());
mXmppConnectionService.updateConversationUi();
return null;

View file

@ -225,7 +225,6 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
private int messageCount = 0;
private long start;
private long end;
private Jid with = null;
private String queryId;
private String reference = null;
private Account account;
@ -237,7 +236,6 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
public Query(Conversation conversation, long start, long end) {
this(conversation.getAccount(), start, end);
this.conversation = conversation;
this.with = conversation.getJid().toBareJid();
}
public Query(Conversation conversation, long start, long end, PagingOrder order) {
@ -256,7 +254,6 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
Query query = new Query(this.account,this.start,this.end);
query.reference = reference;
query.conversation = conversation;
query.with = with;
query.totalCount = totalCount;
query.callback = callback;
return query;
@ -287,7 +284,11 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
}
public Jid getWith() {
return with;
return conversation == null ? null : conversation.getJid().toBareJid();
}
public boolean muc() {
return conversation != null && conversation.getMode() == Conversation.MODE_MULTI;
}
public long getStart() {
@ -338,11 +339,15 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("with=");
if (this.with==null) {
builder.append("*");
if (this.muc()) {
builder.append("to="+this.getWith().toString());
} else {
builder.append(with.toString());
builder.append("with=");
if (this.getWith() == null) {
builder.append("*");
} else {
builder.append(getWith().toString());
}
}
builder.append(", start=");
builder.append(AbstractGenerator.getTimestamp(this.start));

View file

@ -1022,7 +1022,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
}
this.databaseBackend.createConversation(conversation);
}
if (account.getXmppConnection() != null && account.getXmppConnection().getFeatures().mam()) {
if (account.getXmppConnection() != null
&& account.getXmppConnection().getFeatures().mam()
&& !muc) {
if (query == null) {
this.mMessageArchiveService.query(conversation);
} else {
@ -1314,6 +1316,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
conversation.setContactJid(joinJid);
databaseBackend.updateConversation(conversation);
}
conversation.setHasMessagesLeftOnServer(false);
} else {
account.pendingConferenceJoins.add(conversation);
}