fixed mam to work with muc
This commit is contained in:
parent
ed3d76bcf6
commit
b9af38464e
|
@ -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()));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
if (this.muc()) {
|
||||
builder.append("to="+this.getWith().toString());
|
||||
} else {
|
||||
builder.append("with=");
|
||||
if (this.with==null) {
|
||||
if (this.getWith() == null) {
|
||||
builder.append("*");
|
||||
} else {
|
||||
builder.append(with.toString());
|
||||
builder.append(getWith().toString());
|
||||
}
|
||||
}
|
||||
builder.append(", start=");
|
||||
builder.append(AbstractGenerator.getTimestamp(this.start));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue